]>
Commit | Line | Data |
---|---|---|
0c6af5c9 | 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; | |
d681bb2d | 14 | class AliESDVertex; |
0c6af5c9 | 15 | class TH1F; |
16 | ||
17 | class AliITSVertexerZ : public AliITSVertexer { | |
18 | ||
19 | public: | |
20 | ||
21 | AliITSVertexerZ(); | |
308c2f7c | 22 | AliITSVertexerZ(Float_t x0, Float_t y0); |
0c6af5c9 | 23 | virtual ~AliITSVertexerZ(); |
6fd990e3 | 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 | |
308c2f7c | 30 | virtual AliESDVertex* FindVertexForCurrentEvent(TTree *itsClusterTree); |
0c6af5c9 | 31 | virtual void PrintStatus() const; |
32 | void SetDiffPhiMax(Float_t pm = 0.01){fDiffPhiMax = pm;} | |
bf2e0ad4 | 33 | void ConfigIterations(Int_t noiter=4,Float_t *ptr=0); |
0c6af5c9 | 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;} | |
14bcd755 | 36 | void SetLowLimit(Float_t lim=-40.){fLowLim = lim;} |
37 | void SetHighLimit(Float_t lim=40.){fHighLim = lim;} | |
0c6af5c9 | 38 | Float_t GetLowLimit() const {return fLowLim;} |
39 | Float_t GetHighLimit() const {return fHighLim;} | |
40 | void SetBinWidthCoarse(Float_t bw=0.01){fStepCoarse = bw;} | |
ecc64c3f | 41 | void SetPPsetting(Float_t cl2=250., Float_t coarsebin=0.02){fPPsetting[0]=cl2; fPPsetting[1]=coarsebin;} |
8c32ba44 | 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); | |
0c6af5c9 | 44 | Float_t GetBinWidthCoarse() const {return fStepCoarse;} |
0c6af5c9 | 45 | void SetTolerance(Float_t tol = 20./10000.){fTolerance = tol;} |
7299b7a8 | 46 | void SetWindowWidth(Float_t ww=0.2){fWindowWidth=ww;} |
0c6af5c9 | 47 | Float_t GetTolerance() const {return fTolerance;} |
c61c02f4 | 48 | // virtual void MakeTracklet(Double_t * /* pA */, Double_t * /*pB */, Int_t & /* nolines */) {} // implemented in a derived class |
1e6316d8 | 49 | |
50 | void SetSearchForPileup(Bool_t opt){fSearchForPileup=opt;} | |
51 | Bool_t IsSearchForPileupActive() const { return fSearchForPileup;} | |
52 | ||
0c6af5c9 | 53 | protected: |
0c6af5c9 | 54 | void ResetHistograms(); |
308c2f7c | 55 | void VertexZFinder(TTree *itsClusterTree); |
6fd990e3 | 56 | Float_t GetPhiMaxIter(Int_t i) const {return fPhiDiffIter[i];} |
0c6af5c9 | 57 | |
32e449be | 58 | |
0c6af5c9 | 59 | Int_t fFirstL1; // first module of the first pixel layer used |
60 | Int_t fLastL1; // last module of the first pixel layer used | |
61 | Int_t fFirstL2; // first module of the second pixel layer used | |
62 | Int_t fLastL2; // last module of the second pixel layer used | |
63 | Float_t fDiffPhiMax; // Maximum delta phi allowed among corr. pixels | |
0c6af5c9 | 64 | Float_t fZFound; //! found value for the current event |
65 | Float_t fZsig; //! RMS of Z | |
66 | TH1F *fZCombc; //! histogram with coarse z distribution | |
0c6af5c9 | 67 | Float_t fLowLim; // low limit for fZComb histograms |
68 | Float_t fHighLim; // high limit for fZComb histograms | |
69 | Float_t fStepCoarse; // bin width for fZCombc | |
0c6af5c9 | 70 | Float_t fTolerance; // tolerance on the symmetry of the Z interval |
ecc64c3f | 71 | Float_t fPPsetting[2]; // [0] is the max. number of clusters on L2 to use [1] as fStepCoarse |
6fd990e3 | 72 | Int_t fMaxIter; // Maximum number of iterations (<=5) |
73 | Float_t fPhiDiffIter[5]; // Delta phi used in iterations | |
7299b7a8 | 74 | Float_t fWindowWidth; // Z window width for symmetrization |
1e6316d8 | 75 | Bool_t fSearchForPileup; // flag to switch pileup off/on |
76 | ||
308c2f7c | 77 | private: |
78 | AliITSVertexerZ(const AliITSVertexerZ& vtxr); | |
79 | AliITSVertexerZ& operator=(const AliITSVertexerZ& vtxr ); | |
0c6af5c9 | 80 | |
1e6316d8 | 81 | ClassDef(AliITSVertexerZ,11); |
0c6af5c9 | 82 | }; |
83 | ||
84 | #endif |