]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/AliITSUVertexer.h
updates in esd chain kine reader; added function to choose only primary particles
[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
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);
b824a5f5 22 virtual ~AliITSUVertexer();
30da2335 23
24 // Public methods
25 virtual AliESDVertex* GetAllVertices(Int_t& nVert) const { nVert=fNoVertices; return (AliESDVertex*)&fVertices[0]; };
26 virtual AliESDVertex* FindVertexForCurrentEvent(TTree *);
27 void FindVerticesForCurrentEvent();
28 virtual void PrintStatus() const;
29 void Reset();
30
31 // Getters
32 UInt_t GetNoLines() const { return fNoLines; }
33 UShort_t GetNumOfVertices() const { return fNoVertices; }
34
35
36 // Setters
37 void SetClusters(TClonesArray *clr, const UShort_t i);
38 void SetPhiCut(const Double_t phicut) { fPhiCut=phicut; }
39 void SetZCut(const Double_t zcut) { fZCut=zcut; }
40
41 #ifdef MC_CHECK
42 // Debug + MC truth
43 UInt_t* GetParticleId(UInt_t &num) const { num=fGoodLines; return fParticleId; }
44 UInt_t GetGoodLines() const { return fGoodLines; }
45 UInt_t GetGoodLinesPhi() const { return fGoodLinesPhi; }
46 UInt_t GetLinesPhi() const { return fLinesPhi; }
47 #endif
b824a5f5 48
49 protected:
30da2335 50 // Methods
51 AliITSUVertexer(AliITSUVertexer&);
52 AliITSUVertexer& operator=(const AliITSUVertexer& other);
53 void AddToCluster(UInt_t line,Bool_t weight=kFALSE,Int_t cl=-1);
54 void CleanAndOrderClusters();
55 void Clusterize(UInt_t l1, UInt_t l2, Bool_t weight=kFALSE);
56 void ComputeClusterCentroid(UInt_t cl);
57 void FindTracklets();
58 Int_t MatchPoints(UShort_t layer, Double_t anchor, Double_t *p0=0x0, Double_t *p1=0x0);
59 void MoveLabels(Short_t start, Short_t end);
60
61 // Data members
62 Int_t fClusterContribCut;
63 Double_t fClusterCut;
64 Int_t *fClusterIndex[3]; // AliITSUClusterPix index
65 Double_t *fClusterPhi[3]; // Phi of clusters
66 TClonesArray *fClusters[3]; //! array of pointers to TClonesArray of AliITSUClusterPix not owned by this class
67 TClonesArray fLines; //! array of tracklets
68 TClonesArray fLinesClusters; // array of vertex candidates
69 UInt_t fLinesPhi; // number of tracklets built by using the first two layers
70 UInt_t fNoClusters; // number of clusters
71 UInt_t fNoLines; // number of tracklets
72 UShort_t fNoVertices; // number of vertices
73 Double_t fPairCut; // cut on pair
74 Double_t fPhiCut; // cut on deltaphi for cluster matching among first two layers
75 Double_t fZCut; // cut on deltatheta for cluster matching among first two layers and the third one
76 Bool_t *fUsedClusters[3]; // flag for used clusters in tracklet formation
77 Short_t *fUsedLines; // flag for used lines
78 vector<AliESDVertex> fVertices; // array of vertices
79
80 #ifdef MC_CHECK
81 // MC truth methods
82 Bool_t CheckMC(UInt_t,UInt_t,UInt_t);
b824a5f5 83
30da2335 84 // MC truth data members
85 UInt_t fGoodLines;
86 UInt_t fGoodLinesPhi;
87 UInt_t *fParticleId;
88 #endif
b824a5f5 89
30da2335 90 ClassDef(AliITSUVertexer,1)
b824a5f5 91};
92
93#endif