StRoot
1
|
#include <StMinuitVertexFinder.h>
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 | |
StPrimaryVertex * | getVertex (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 StGenericVertexFinder * | sSelf = nullptr |
By default point to invalid object. More... | |
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/
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.
Definition at line 104 of file StMinuitVertexFinder.h.