ac903f1b |
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 */ |
5 | |
6 | /* $Id$ */ |
7 | |
8 | ///////////////////////////////////////////////////////////////////////// |
9 | // |
10 | // AliITSMultReconstructor - find clusters in the pixels (theta and |
11 | // phi) and tracklets. |
12 | // |
13 | // These can be used to extract charged particles multiplcicity from the ITS. |
14 | // |
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. |
22 | // |
23 | ///////////////////////////////////////////////////////////////////////// |
24 | |
25 | #include "TObject.h" |
26 | |
27 | class TTree; |
28 | class TH1F; |
3ef75756 |
29 | class TH2F; |
30 | |
ac903f1b |
31 | class AliITSgeom; |
32 | |
33 | class AliITSMultReconstructor : public TObject |
34 | { |
35 | public: |
36 | AliITSMultReconstructor(); |
ddced3c8 |
37 | virtual ~AliITSMultReconstructor(); |
ac903f1b |
38 | |
ac903f1b |
39 | void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes); |
9b373e9a |
40 | void LoadClusterFiredChips(TTree* tree); |
ac903f1b |
41 | |
42 | void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;} |
3ef75756 |
43 | void SetZetaWindow(Float_t w=1.) {fZetaWindow=w;} |
02a95988 |
44 | void SetOnlyOneTrackletPerC2(Bool_t b = kTRUE) {fOnlyOneTrackletPerC2 = b;} |
ac903f1b |
45 | |
46 | Int_t GetNClustersLayer1() const {return fNClustersLay1;} |
47 | Int_t GetNClustersLayer2() const {return fNClustersLay2;} |
48 | Int_t GetNTracklets() const {return fNTracklets;} |
968e8539 |
49 | Int_t GetNSingleClusters() const {return fNSingleCluster;} |
9b373e9a |
50 | Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];} |
ac903f1b |
51 | |
52 | Float_t* GetClusterLayer1(Int_t n) {return fClustersLay1[n];} |
53 | Float_t* GetClusterLayer2(Int_t n) {return fClustersLay2[n];} |
54 | Float_t* GetTracklet(Int_t n) {return fTracklets[n];} |
968e8539 |
55 | Float_t* GetCluster(Int_t n) {return fSClusters[n];} |
ac903f1b |
56 | |
57 | void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;} |
58 | void SaveHists(); |
3ef75756 |
59 | |
ac903f1b |
60 | protected: |
3ef75756 |
61 | AliITSMultReconstructor(const AliITSMultReconstructor& mr); |
7537d03c |
62 | AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr); |
ac903f1b |
63 | |
ac903f1b |
64 | |
9b373e9a |
65 | Float_t** fClustersLay1; // clusters in the 1st layer of ITS |
66 | Float_t** fClustersLay2; // clusters in the 2nd layer of ITS |
67 | Float_t** fTracklets; // tracklets |
68 | Float_t** fSClusters; // single clusters (unassociated) |
69 | Bool_t* fAssociationFlag; // flag for the associations |
ac903f1b |
70 | |
9b373e9a |
71 | Int_t fNClustersLay1; // Number of clusters (Layer1) |
72 | Int_t fNClustersLay2; // Number of clusters (Layer2) |
73 | Int_t fNTracklets; // Number of tracklets |
74 | Int_t fNSingleCluster; // Number of unassociated clusters |
75 | Short_t fNFiredChips[2]; // Number of fired chips in the two SPD layers |
76 | |
77 | Float_t fPhiWindow; // Search window in phi |
78 | Float_t fZetaWindow; // SEarch window in eta |
ac903f1b |
79 | |
3ef75756 |
80 | Bool_t fOnlyOneTrackletPerC2; // only one tracklet per cluster in L. 2 |
ac903f1b |
81 | |
9b373e9a |
82 | Bool_t fHistOn; // Option to define and fill the histograms |
ddced3c8 |
83 | |
3ef75756 |
84 | |
9b373e9a |
85 | TH1F* fhClustersDPhiAcc; // Phi2 - Phi1 for tracklets |
86 | TH1F* fhClustersDThetaAcc; // Theta2 - Theta1 for tracklets |
87 | TH1F* fhClustersDZetaAcc; // z2 - z1projected for tracklets |
88 | TH1F* fhClustersDPhiAll; // Phi2 - Phi1 all the combinations |
89 | TH1F* fhClustersDThetaAll; // Theta2 - Theta1 all the combinations |
90 | TH1F* fhClustersDZetaAll; // z2 - z1projected all the combinations |
3ef75756 |
91 | |
9b373e9a |
92 | TH2F* fhDPhiVsDThetaAll; // 2D plot for all the combinations |
93 | TH2F* fhDPhiVsDThetaAcc; // same plot for tracklets |
94 | TH2F* fhDPhiVsDZetaAll; // 2d plot for all the combination |
95 | TH2F* fhDPhiVsDZetaAcc; // same plot for tracklets |
96 | |
97 | TH1F* fhetaTracklets; // Pseudorapidity distr. for tracklets |
98 | TH1F* fhphiTracklets; // Azimuthal (Phi) distr. for tracklets |
99 | TH1F* fhetaClustersLay1; // Pseudorapidity distr. for Clusters L. 1 |
100 | TH1F* fhphiClustersLay1; // Azimuthal (Phi) distr. for Clusters L. 1 |
101 | |
ac903f1b |
102 | |
103 | void LoadClusterArrays(TTree* tree); |
104 | |
f606f16a |
105 | ClassDef(AliITSMultReconstructor,3) |
ac903f1b |
106 | }; |
107 | |
108 | #endif |