1 #ifndef ALIITSMULTRECONSTRUCTOR_H
2 #define ALIITSMULTRECONSTRUCTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 /////////////////////////////////////////////////////////////////////////
10 // AliITSMultReconstructor - find clusters in the pixels (theta and
11 // phi) and tracklets.
13 // These can be used to extract charged particles multiplcicity from the ITS.
15 // A tracklet consist of two ITS clusters, one in the first pixel
16 // layer and one in the second. The clusters are associates if the
17 // differencies in Phi (azimuth) and Zeta (longitudinal) are inside
18 // a fiducial volume. In case of multiple candidates it is selected the
19 // candidate with minimum distance in Phi.
20 // The boolean fOnlyOneTrackletPerC2 allows to control if two clusters
21 // in layer 2 can be associated to the same cluster in layer 1 or not.
23 /////////////////////////////////////////////////////////////////////////
33 class AliITSMultReconstructor : public TObject
36 AliITSMultReconstructor();
37 virtual ~AliITSMultReconstructor();
39 void SetGeometry(AliITSgeom* geo) {fGeometry = geo;}
41 void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes);
43 void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;}
44 void SetZetaWindow(Float_t w=1.) {fZetaWindow=w;}
45 void SetOnlyOneTrackletPerC2(Bool_t b = kFALSE) {fOnlyOneTrackletPerC2 = b;}
47 Int_t GetNClustersLayer1() const {return fNClustersLay1;}
48 Int_t GetNClustersLayer2() const {return fNClustersLay2;}
49 Int_t GetNTracklets() const {return fNTracklets;}
51 Float_t* GetClusterLayer1(Int_t n) {return fClustersLay1[n];}
52 Float_t* GetClusterLayer2(Int_t n) {return fClustersLay2[n];}
53 Float_t* GetTracklet(Int_t n) {return fTracklets[n];}
55 void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;}
59 AliITSMultReconstructor(const AliITSMultReconstructor& mr);
60 AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr);
62 AliITSgeom* fGeometry; // ITS geometry
64 Float_t** fClustersLay1; // clusters in the 1st layer of ITS
65 Float_t** fClustersLay2; // clusters in the 2nd layer of ITS
66 Float_t** fTracklets; // tracklets
67 Bool_t* fAssociationFlag; // flag for the associations
69 Int_t fNClustersLay1; // Number of clusters (Layer1)
70 Int_t fNClustersLay2; // Number of clusters (Layer2)
71 Int_t fNTracklets; // Number of tracklets
73 Float_t fPhiWindow; // Search window in phi
74 Float_t fZetaWindow; // SEarch window in eta
76 Bool_t fOnlyOneTrackletPerC2; // only one tracklet per cluster in L. 2
78 Bool_t fHistOn; // Option to define and fill the histograms
81 TH1F* fhClustersDPhiAcc; // Phi2 - Phi1 for tracklets
82 TH1F* fhClustersDThetaAcc; // Theta2 - Theta1 for tracklets
83 TH1F* fhClustersDZetaAcc; // z2 - z1projected for tracklets
84 TH1F* fhClustersDPhiAll; // Phi2 - Phi1 all the combinations
85 TH1F* fhClustersDThetaAll; // Theta2 - Theta1 all the combinations
86 TH1F* fhClustersDZetaAll; // z2 - z1projected all the combinations
88 TH2F* fhDPhiVsDThetaAll; // 2D plot for all the combinations
89 TH2F* fhDPhiVsDThetaAcc; // same plot for tracklets
90 TH2F* fhDPhiVsDZetaAll; // 2d plot for all the combination
91 TH2F* fhDPhiVsDZetaAcc; // same plot for tracklets
93 TH1F* fhetaTracklets; // Pseudorapidity distr. for tracklets
94 TH1F* fhphiTracklets; // Azimuthal (Phi) distr. for tracklets
95 TH1F* fhetaClustersLay1; // Pseudorapidity distr. for Clusters L. 1
96 TH1F* fhphiClustersLay1; // Azimuthal (Phi) distr. for Clusters L. 1
99 void LoadClusterArrays(TTree* tree);
101 ClassDef(AliITSMultReconstructor,1)