]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ITS/UPGRADE/AliITSUVertexer.h
Mario's change of SubStave -> HalfStave, to be reverted
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUVertexer.h
... / ...
CommitLineData
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
14class TClonesArray;
15class AliESDVertex;
16
17class 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