]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/AliITSUVertexer.h
Filling histograms separately for the SPD and Tracks vertices
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUVertexer.h
CommitLineData
30da2335 1#ifndef ALIITSUVERTEXER_H
2#define ALIITSUVERTEXER_H
3//#define MC_CHECK // comment out to enable MC checks for debugging
b824a5f5 4
30da2335 5#include "AliVertexer.h"
b824a5f5 6
30da2335 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/////////////////////////////////////////////////////////////////////////////
b824a5f5 13
30da2335 14class TClonesArray;
b824a5f5 15class AliESDVertex;
16
17class AliITSUVertexer : public AliVertexer {
b824a5f5 18 public:
30da2335 19
20 // Constructors and destructors
90689502 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);
b824a5f5 22 virtual ~AliITSUVertexer();
30da2335 23
24 // Public methods
b82baa0e 25 virtual AliESDVertex* GetAllVertices(Int_t& nVert) const { nVert=fNoVertices; return fVertices; };
30da2335 26 virtual AliESDVertex* FindVertexForCurrentEvent(TTree *);
30da2335 27 virtual void PrintStatus() const;
30da2335 28
29 // Getters
aea3f062 30 UInt_t GetNoLines() const { return fNoLines; }
30da2335 31 UShort_t GetNumOfVertices() const { return fNoVertices; }
30da2335 32
33 // Setters
5a516e0a 34 void SetPhiCut(Double_t phicut) { fPhiCut=phicut; }
35 void SetZCut(Double_t zcut) { fZCut=zcut; }
30da2335 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
b824a5f5 44
45 protected:
30da2335 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();
aea3f062 54 void FindVerticesForCurrentEvent();
30da2335 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);
aea3f062 57 void Reset();
58 void SortClusters();
30da2335 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
b82baa0e 77 AliESDVertex *fVertices; // array of vertices
30da2335 78
79 #ifdef MC_CHECK
80 // MC truth methods
81 Bool_t CheckMC(UInt_t,UInt_t,UInt_t);
b824a5f5 82
30da2335 83 // MC truth data members
84 UInt_t fGoodLines;
85 UInt_t fGoodLinesPhi;
86 UInt_t *fParticleId;
87 #endif
b824a5f5 88
30da2335 89 ClassDef(AliITSUVertexer,1)
b824a5f5 90};
91
92#endif