]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIITSUVERTEXER_H | |
2 | #define ALIITSUVERTEXER_H | |
3 | //#define MC_CHECK // comment out to enable MC checks for debugging | |
4 | ||
5 | #include "AliVertexer.h" | |
6 | ||
7 | /* Copyright(c) 2009-2014, ALICE Experiment at CERN, All rights reserved. * | |
8 | * See cxx source for full Copyright notice */ | |
9 | ||
10 | ///////////////////////////////////////////////////////////////////////////// | |
11 | // Class for the reconstruction of the primary vertices using ITSU // | |
12 | ///////////////////////////////////////////////////////////////////////////// | |
13 | ||
14 | class TClonesArray; | |
15 | class AliESDVertex; | |
16 | ||
17 | class AliITSUVertexer : public AliVertexer { | |
18 | public: | |
19 | ||
20 | // Constructors and destructors | |
21 | AliITSUVertexer(Double_t phicut=0.02,Double_t zcut=0.005,Double_t paircut=0.1, Double_t clustercut=0.5, Int_t clcontrib=3); | |
22 | virtual ~AliITSUVertexer(); | |
23 | ||
24 | // Public methods | |
25 | virtual AliESDVertex* GetAllVertices(Int_t& nVert) const { nVert=fNoVertices; return fVertices; }; | |
26 | virtual AliESDVertex* FindVertexForCurrentEvent(TTree *); | |
27 | virtual void PrintStatus() const; | |
28 | ||
29 | // Getters | |
30 | UInt_t GetNoLines() const { return fNoLines; } | |
31 | UShort_t GetNumOfVertices() const { return fNoVertices; } | |
32 | ||
33 | // Setters | |
34 | void SetPhiCut(const Double_t phicut) { fPhiCut=phicut; } | |
35 | void SetZCut(const Double_t zcut) { fZCut=zcut; } | |
36 | ||
37 | #ifdef MC_CHECK | |
38 | // Debug + MC truth | |
39 | UInt_t* GetParticleId(UInt_t &num) const { num=fGoodLines; return fParticleId; } | |
40 | UInt_t GetGoodLines() const { return fGoodLines; } | |
41 | UInt_t GetGoodLinesPhi() const { return fGoodLinesPhi; } | |
42 | UInt_t GetLinesPhi() const { return fLinesPhi; } | |
43 | #endif | |
44 | ||
45 | protected: | |
46 | // Methods | |
47 | AliITSUVertexer(AliITSUVertexer&); | |
48 | AliITSUVertexer& operator=(const AliITSUVertexer& other); | |
49 | void AddToCluster(UInt_t line,Bool_t weight=kFALSE,Int_t cl=-1); | |
50 | void CleanAndOrderClusters(); | |
51 | void Clusterize(UInt_t l1, UInt_t l2, Bool_t weight=kFALSE); | |
52 | void ComputeClusterCentroid(UInt_t cl); | |
53 | void FindTracklets(); | |
54 | void FindVerticesForCurrentEvent(); | |
55 | Int_t MatchPoints(UShort_t layer, Double_t anchor, Double_t *p0=0x0, Double_t *p1=0x0); | |
56 | void MoveLabels(Short_t start, Short_t end); | |
57 | void Reset(); | |
58 | void SortClusters(); | |
59 | ||
60 | // Data members | |
61 | Int_t fClusterContribCut; | |
62 | Double_t fClusterCut; | |
63 | Int_t *fClusterIndex[3]; // AliITSUClusterPix index | |
64 | Double_t *fClusterPhi[3]; // Phi of clusters | |
65 | TClonesArray *fClusters[3]; //! array of pointers to TClonesArray of AliITSUClusterPix not owned by this class | |
66 | TClonesArray fLines; //! array of tracklets | |
67 | TClonesArray fLinesClusters; // array of vertex candidates | |
68 | UInt_t fLinesPhi; // number of tracklets built by using the first two layers | |
69 | UInt_t fNoClusters; // number of clusters | |
70 | UInt_t fNoLines; // number of tracklets | |
71 | UShort_t fNoVertices; // number of vertices | |
72 | Double_t fPairCut; // cut on pair | |
73 | Double_t fPhiCut; // cut on deltaphi for cluster matching among first two layers | |
74 | Double_t fZCut; // cut on deltatheta for cluster matching among first two layers and the third one | |
75 | Bool_t *fUsedClusters[3]; // flag for used clusters in tracklet formation | |
76 | Short_t *fUsedLines; // flag for used lines | |
77 | AliESDVertex *fVertices; // array of vertices | |
78 | ||
79 | #ifdef MC_CHECK | |
80 | // MC truth methods | |
81 | Bool_t CheckMC(UInt_t,UInt_t,UInt_t); | |
82 | ||
83 | // MC truth data members | |
84 | UInt_t fGoodLines; | |
85 | UInt_t fGoodLinesPhi; | |
86 | UInt_t *fParticleId; | |
87 | #endif | |
88 | ||
89 | ClassDef(AliITSUVertexer,1) | |
90 | }; | |
91 | ||
92 | #endif |