]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIITSVERTEXERZ_H | |
2 | #define ALIITSVERTEXERZ_H | |
3 | ||
4 | #include<AliITSVertexer.h> | |
5 | ||
6 | /////////////////////////////////////////////////////////////////// | |
7 | // // | |
8 | // Class for primary vertex finding // | |
9 | // // | |
10 | /////////////////////////////////////////////////////////////////// | |
11 | ||
12 | class TFile; | |
13 | class TString; | |
14 | class AliESDVertex; | |
15 | class TH1F; | |
16 | ||
17 | class AliITSVertexerZ : public AliITSVertexer { | |
18 | ||
19 | public: | |
20 | ||
21 | AliITSVertexerZ(); | |
22 | AliITSVertexerZ(Float_t x0, Float_t y0); | |
23 | virtual ~AliITSVertexerZ(); | |
24 | // The number of contributors set in the AliESDVertex object is the | |
25 | // number of tracklets used to determine the vertex position | |
26 | // If this number is <1, the procedure could not find a vertex position | |
27 | // and by default the Z coordinate is set to 0 | |
28 | // Number of contributors = -1 --> No tracklets | |
29 | // Number of contributors = -2 --> No SPD recpoints | |
30 | virtual AliESDVertex* FindVertexForCurrentEvent(TTree *itsClusterTree); | |
31 | virtual void PrintStatus() const; | |
32 | void SetDiffPhiMax(Float_t pm = 0.01){fDiffPhiMax = pm;} | |
33 | void ConfigIterations(Int_t noiter=3,Float_t *ptr=0); | |
34 | void SetFirstLayerModules(Int_t m1 = 0, Int_t m2 = 79){fFirstL1 = m1; fLastL1 = m2;} | |
35 | void SetSecondLayerModules(Int_t m1 = 80, Int_t m2 = 239){fFirstL2 = m1; fLastL2 = m2;} | |
36 | void SetLowLimit(Float_t lim=-40.){fLowLim = lim;} | |
37 | void SetHighLimit(Float_t lim=40.){fHighLim = lim;} | |
38 | Float_t GetLowLimit() const {return fLowLim;} | |
39 | Float_t GetHighLimit() const {return fHighLim;} | |
40 | void SetBinWidthCoarse(Float_t bw=0.01){fStepCoarse = bw;} | |
41 | void SetPPsetting(Float_t cl2=250., Float_t coarsebin=0.02){fPPsetting[0]=cl2; fPPsetting[1]=coarsebin;} | |
42 | static Int_t GetPeakRegion(TH1F* h, Int_t &binmin, Int_t &binmax); | |
43 | static Int_t FindSecondPeak(TH1F* h, Int_t binmin,Int_t binmax, Float_t& secPeakPos); | |
44 | Float_t GetBinWidthCoarse() const {return fStepCoarse;} | |
45 | void SetTolerance(Float_t tol = 20./10000.){fTolerance = tol;} | |
46 | void SetWindowWidth(Float_t ww=0.2){fWindowWidth=ww;} | |
47 | Float_t GetTolerance() const {return fTolerance;} | |
48 | // virtual void MakeTracklet(Double_t * /* pA */, Double_t * /*pB */, Int_t & /* nolines */) {} // implemented in a derived class | |
49 | protected: | |
50 | void ResetHistograms(); | |
51 | void VertexZFinder(TTree *itsClusterTree); | |
52 | Float_t GetPhiMaxIter(Int_t i) const {return fPhiDiffIter[i];} | |
53 | ||
54 | ||
55 | Int_t fFirstL1; // first module of the first pixel layer used | |
56 | Int_t fLastL1; // last module of the first pixel layer used | |
57 | Int_t fFirstL2; // first module of the second pixel layer used | |
58 | Int_t fLastL2; // last module of the second pixel layer used | |
59 | Float_t fDiffPhiMax; // Maximum delta phi allowed among corr. pixels | |
60 | Float_t fZFound; //! found value for the current event | |
61 | Float_t fZsig; //! RMS of Z | |
62 | TH1F *fZCombc; //! histogram with coarse z distribution | |
63 | Float_t fLowLim; // low limit for fZComb histograms | |
64 | Float_t fHighLim; // high limit for fZComb histograms | |
65 | Float_t fStepCoarse; // bin width for fZCombc | |
66 | Float_t fTolerance; // tolerance on the symmetry of the Z interval | |
67 | Float_t fPPsetting[2]; // [0] is the max. number of clusters on L2 to use [1] as fStepCoarse | |
68 | Int_t fMaxIter; // Maximum number of iterations (<=5) | |
69 | Float_t fPhiDiffIter[5]; // Delta phi used in iterations | |
70 | Float_t fWindowWidth; // Z window width for symmetrization | |
71 | private: | |
72 | AliITSVertexerZ(const AliITSVertexerZ& vtxr); | |
73 | AliITSVertexerZ& operator=(const AliITSVertexerZ& vtxr ); | |
74 | ||
75 | ClassDef(AliITSVertexerZ,10); | |
76 | }; | |
77 | ||
78 | #endif |