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:

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)
- 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

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:

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:

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 ( { 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.

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: