1 #ifndef ALIITSUVERTEXER_H
2 #define ALIITSUVERTEXER_H
3 //#define MC_CHECK // comment out to enable MC checks for debugging
5 #include "AliVertexer.h"
7 /* Copyright(c) 2009-2014, ALICE Experiment at CERN, All rights reserved. *
8 * See cxx source for full Copyright notice */
10 /////////////////////////////////////////////////////////////////////////////
11 // Class for the reconstruction of the primary vertices using ITSU //
12 /////////////////////////////////////////////////////////////////////////////
17 class AliITSUVertexer : public AliVertexer {
20 // Constructors and destructors
21 AliITSUVertexer(Double_t phicut=0.005,Double_t zcut=0.002,Double_t paircut=0.04, Double_t clustercut=0.8, Int_t clcontrib=5);
22 virtual ~AliITSUVertexer();
25 virtual AliESDVertex* GetAllVertices(Int_t& nVert) const { nVert=fNoVertices; return fVertices; };
26 virtual AliESDVertex* FindVertexForCurrentEvent(TTree *);
27 virtual void PrintStatus() const;
30 UInt_t GetNoLines() const { return fNoLines; }
31 UShort_t GetNumOfVertices() const { return fNoVertices; }
34 void SetPhiCut(Double_t phicut) { fPhiCut=phicut; }
35 void SetZCut(Double_t zcut) { fZCut=zcut; }
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; }
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);
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);
61 Int_t fClusterContribCut;
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
81 Bool_t CheckMC(UInt_t,UInt_t,UInt_t);
83 // MC truth data members
89 ClassDef(AliITSUVertexer,1)