1 #ifndef ALIITSVERTEXERTRACKS_H
2 #define ALIITSVERTEXERTRACKS_H
3 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 //-------------------------------------------------------
8 // Class for primary vertex determination with ITS tracks
10 // Origin: A.Dainese, Padova, andrea.dainese@pd.infn.it
11 // M.Masera, Torino, massimo.masera@to.infn.it
12 //-------------------------------------------------------
14 /*****************************************************************************
16 * This class determines the primary vertex position using ITS tracks. *
17 * This is done in two steps: *
18 * 1) Vertex Finding: a reasonable estimate of the vertex position is *
19 * obtained from a mean of "points of closest approach" between all *
20 * possible pairs of tracks. *
21 * 2) Vertex Fitting: once tracks are propagated to the position given by *
22 * first step, the optimal estimate of the position of vertex is obtained *
23 * from a weighted average of the track positions. A covariance *
24 * matrix and a chi2 for the vertex are given. *
26 *****************************************************************************/
28 #include "AliKalmanTrack.h"
29 #include "AliITSVertexer.h"
31 #include <TObjArray.h>
37 class AliITSVertexerTracks : public AliITSVertexer {
40 // default constructor
41 AliITSVertexerTracks();
42 // standard constructor
43 AliITSVertexerTracks(TFile *inFile,TFile *outFile,
44 Double_t field=0.4,Int_t fEv=0,Int_t lEv=0,
45 Double_t xStart=0.,Double_t yStart=0.);
46 // alternative constructor
47 AliITSVertexerTracks(Double_t field, TString fn,
48 Double_t xStart=0,Double_t yStart=0);
50 virtual ~AliITSVertexerTracks();
51 // return vertex from the set of tracks in the tree
52 AliESDVertex* VertexOnTheFly(TTree &trkTree);
53 // computes the vertex for the current event
54 virtual AliESDVertex* FindVertexForCurrentEvent(Int_t evnumb);
55 // computes the vertex for the current event using the ESD
56 AliESDVertex* FindVertexForCurrentEvent(AliESD *esdEvent);
57 // computes the vertex for each event and stores it on file
58 virtual void FindVertices();
59 // computes the vertex for each event and stores it in the ESD
60 void FindVerticesESD();
61 virtual void PrintStatus() const;
62 void SetField(Double_t field) const
63 { AliKalmanTrack::SetConvConst(100./0.299792458/field); return; }
64 void SetMinTracks(Int_t n=2) { fMinTracks = n; return; }
65 void SetSkipTracks(Int_t n,Int_t *skipped);
66 void SetVtxStart(Double_t x=0,Double_t y=0)
67 { fNominalPos[0]=x; fNominalPos[1]=y; return; }
70 // copy constructor (NO copy allowed: the constructor is protected
72 AliITSVertexerTracks(const AliITSVertexerTracks& vtxr);
73 // assignment operator (NO assignment allowed)
74 AliITSVertexerTracks& operator=(const AliITSVertexerTracks& /* vtxr */);
75 TFile *fInFile; // input file (with tracks)
76 TFile *fOutFile; // output file for vertices
77 Double_t fInitPos[3]; // vertex position after vertex finder
78 Double_t fNominalPos[2]; // initial knowledge on vertex position
79 Int_t fMinTracks; // minimum number of tracks
80 Double_t fMaxChi2PerTrack; // maximum contribition to the chi2
81 TObjArray fTrkArray; // array with tracks to be processed
82 Int_t *fTrksToSkip; // tracks to be skipped for find and fit
83 Int_t fNTrksToSkip; // number of tracks to be skipped
85 Bool_t CheckField() const;
86 void ComputeMaxChi2PerTrack(Int_t nTracks);
87 Int_t PrepareTracks(TTree &trkTree);
92 ClassDef(AliITSVertexerTracks,1) // 3D Vertexing with ITS tracks