StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
StMinuitVertexFinder Class Reference

#include <StMinuitVertexFinder.h>

Inheritance diagram for StMinuitVertexFinder:
StGenericVertexFinder

Public Member Functions

 StMinuitVertexFinder (VertexFit_t fitMode=VertexFit_t::NoBeamline)
 
Int_t fit (StEvent *)
 
void printInfo (ostream &=cout) const
 
virtual void InitRun (int run_number, const St_db_Maker *db_maker)
 
void Clear ()
 
Int_t NCtbMatches ()
 
void CTBforSeed ()
 
void NoCTBforSeed ()
 
void setExternalSeed (const StThreeVectorD &)
 
void setPrintLevel (Int_t=0)
 Use mMinuit print level.
 
Int_t statusMin () const
 
void DoUseITTF ()
 
void DoNotUseITTF ()
 
void useOldBEMCRank ()
 
void lowerSplitVtxRank ()
 
void setFlagBase ()
 
void SetFitPointsCut (Int_t fitpoints)
 
void SetMinimumTracks (Int_t n)
 
void SetFXT (bool fxt=kTRUE)
 
- Public Member Functions inherited from StGenericVertexFinder
StPrimaryVertexgetVertex (int idx) const
 
void addVertex (const StPrimaryVertex &vtx)
 
int size () const
 
void UseVertexConstraint (const vertexSeed_st &beamline)
 
void NoVertexConstraint ()
 
int IsVertexConstraint () const
 
virtual void UsePCT (bool usePCT=true)
 
virtual void UseBTOF (bool useBTOF=true)
 
virtual void UseCTB (bool useCTB=true)
 
virtual void SetMode (Int_t mode=0)
 
virtual int GetMode () const
 
void SetDebugLevel (Int_t level)
 
virtual void Init ()
 
virtual void Finish ()
 
const std::vector
< StPrimaryVertex > * 
result ()
 
void result (TClonesArray &stMuDstPrimaryVertices)
 
void FillStEvent (StEvent *)
 
virtual void SetVertexPosition (double x, double y, double z)
 
virtual void SetVertexError (double x, double y, double z)
 
virtual int IsFixed () const
 
virtual int fit (const StMuDst &muDst)
 

Additional Inherited Members

- Public Types inherited from StGenericVertexFinder
using StDcaList = std::vector< const StDcaGeometry * >
 
using VertexFit_t = star_vertex::VertexFit_t
 
using SeedFinder_t = star_vertex::SeedFinder_t
 Options to select vertex seed finder.
 
- Protected Member Functions inherited from StGenericVertexFinder
 StGenericVertexFinder ()
 Default initialization with unspecified seed finder and fitting mode.
 
 StGenericVertexFinder (SeedFinder_t seedFinder, VertexFit_t fitMode)
 
std::vector< double > FindSeeds_TSpectrum ()
 
double beamX (double z) const
 
double beamY (double z) const
 
StThreeVectorD CalcVertexSeed (const StDcaList &trackDcas)
 
double CalcChi2Beamline (const StThreeVectorD &point)
 Caclulates chi2 for the beamline and a point. More...
 
double CalcChi2DCAsBeamline (const StThreeVectorD &point)
 Caclulates total chi2 for the beamline and track DCAs stored in mDCAs and a point.
 
- Static Protected Member Functions inherited from StGenericVertexFinder
static void fcnCalcChi2DCAs (int &npar, double *gin, double &f, double *par, Int_t iflag)
 
static void fcnCalcChi2DCAsBeamline1D (int &npar, double *gin, double &f, double *par, Int_t iflag)
 A static interface to CalcChi2DCAs(...) with x and y fixed by beamline equation.
 
static void fcnCalcChi2DCAsBeamline (int &npar, double *gin, double &f, double *par, int iflag)
 A static interface to CalcChi2DCAsBeamline(...)
 
- Protected Attributes inherited from StGenericVertexFinder
StPrimaryVertexOrder mVertexOrderMethod
 
bool mVertexConstrain
 
int mMode
 
VertexFit_t mVertexFitMode
 The type of vertex fit to use in derived concrete implementation.
 
SeedFinder_t mSeedFinderType
 The type of vertex seed finder to use in derived concrete implementation.
 
int mDebugLevel
 
bool mUseBtof
 
bool mUseCtb
 
vertexSeed_st mBeamline
 
StDcaList mDCAs
 
TMinuit * mMinuit
 
- Static Protected Attributes inherited from StGenericVertexFinder
static StGenericVertexFindersSelf = nullptr
 By default point to invalid object. More...
 

Detailed Description

Author
Thomas Ullrich, Feb 2002

Modified for pp by David Hardtke, Summer 2002

StEvent based vertex fitter using a robust potential. The actual fit is performed by MINUIT (TMinuit). For documentation the following links and documents are very useful: http://wwwinfo.cern.ch/asdoc/minuit/minmain.html http://root.cern.ch/root/html/TMinuit.html http://www-glast.slac.stanford.edu/software/root/GRUG/docs/Feature/GRUGminuit.pdf

Modified for multiple veretx finding by Marco van Leeuwen April/May 2006

Vertexfinding process has been split into two stages: a seedfinding and a fitting stage. Multiple vertices can be found for each event and are sorted by 'ranking'. The highets ranked vertex is most likely the triggered vertex.

Vertex rank calculation is done in calculateRanks(). Three ranks are calculated, based on mean-dip, number of tracks crossing central membrane and number of tracks matched to BEMC. The ranks are normalised to have mean value close to 0 for triggered vertices and a sigma of about 1 (independent of multiplicity). Each individual rank is bounded to [-5,1]. For data analysis, a quality cut on the rank of the best vertex is recommended. This needs to be refined, but requiring rank > -3 seems to work OK.

for more info, see: http://www.star.bnl.gov/protected/highpt/mvl/multi_vertex/

Member Functions:

StMinuitVertexFinder::fit(StEvent* evt) Find and fit the vertex for given event.

StThreeVectorD StMinuitVertexFinder::result() Returns the found vertex.

Int_t StMinuitVertexFinder::status() The meaning of the return values of status() is as follows: -1 = not enough good tracks for fit in this case fit() returns false. All other values are related to the actual fit and reflect the status of the covariant matrix and thus the quality of the fit. (See also MNSTAT in Minuit documentation) 0 = not calculated at all 1 = diagonal approximation only 2 = full matrix, but forced positive-definite 3 = full accurate covariant matrix

void StMinuitVertexFinder::setExternalSeed(const StThreeVectorD& seed); If the seed is known, e.g. from pVPD, ZDC, or BBC, the estimated position can be passed to the fitter. In this case the fit performs faster, but not necessarily more accurate. The seed has to be provided for every fit (fit()). It will only be used for the next fit.

void StMinuitVertexFinder::setPrintLevel(Int_t level); Set Minuit print level: 0-3 0 means essentially no output 3 prints a lot, for debugging only 1 current default level

void StMinuitVertexFinder::printInfo([ostream& os]); Prints information of the last fit to output stream os. If no argument is given the info is printed to cout.

Example code:

StEvent *event = ...; StMinuitVertexFinder myfinder; StThreeVectorD myvertex; if (myfinder.fit(event)) { myvertex = myfinder.result(); myfinder.printInfo(); } else cout << "Error: vertex fit failed, no vertex." << endl;

PP vertex finding: For proton-proton (and presumable dAu) vertex finding, we only do a 1D fit and use the beamline constraint to get the x and y positions of the vertex.

Id:
StMinuitVertexFinder.h,v 1.30 2017/05/09 12:29:40 smirnovd Exp

Definition at line 104 of file StMinuitVertexFinder.h.


The documentation for this class was generated from the following files: