]>
Commit | Line | Data |
---|---|---|
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; | |
29 | class TH2F; | |
30 | class AliITSgeom; | |
31 | ||
32 | class AliITSMultReconstructor : public TObject | |
33 | { | |
34 | public: | |
35 | AliITSMultReconstructor(); | |
36 | ||
37 | void SetGeometry(AliITSgeom* geo) {fGeometry = geo;} | |
38 | ||
39 | void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes); | |
40 | ||
41 | void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;} | |
42 | void SetZetaWindow(Float_t w=0.1) {fZetaWindow=w;} | |
43 | void SetOnlyOneTrackletPerC2(Float_t b = kFALSE) {fOnlyOneTrackletPerC2 = b;} | |
44 | ||
45 | Int_t GetNClustersLayer1() const {return fNClustersLay1;} | |
46 | Int_t GetNClustersLayer2() const {return fNClustersLay2;} | |
47 | Int_t GetNTracklets() const {return fNTracklets;} | |
48 | ||
49 | Float_t* GetClusterLayer1(Int_t n) {return fClustersLay1[n];} | |
50 | Float_t* GetClusterLayer2(Int_t n) {return fClustersLay2[n];} | |
51 | Float_t* GetTracklet(Int_t n) {return fTracklets[n];} | |
52 | ||
53 | void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;} | |
54 | void SaveHists(); | |
55 | protected: | |
56 | ||
57 | AliITSgeom* fGeometry; // ITS geometry | |
58 | ||
59 | Float_t** fClustersLay1; // clusters in the 1st layer of ITS | |
60 | Float_t** fClustersLay2; // clusters in the 2nd layer of ITS | |
61 | Float_t** fTracklets; // tracklets | |
62 | Bool_t* fAssociationFlag; // flag for the associations | |
63 | ||
64 | Int_t fNClustersLay1; // Number of clusters (Layer1) | |
65 | Int_t fNClustersLay2; // Number of clusters (Layer2) | |
66 | Int_t fNTracklets; // Number of tracklets | |
67 | ||
68 | Float_t fPhiWindow; // Search window in phi | |
69 | Float_t fZetaWindow; // SEarch window in eta | |
70 | ||
71 | Bool_t fOnlyOneTrackletPerC2; // only one tracklet per cluster in layer 2? | |
72 | ||
73 | Bool_t fHistOn; | |
74 | ||
75 | TH1F* fhClustersDPhi; | |
76 | TH1F* fhClustersDTheta; | |
77 | TH1F* fhClustersDZeta; | |
78 | ||
79 | TH2F* fhDPhiVsDThetaAll; | |
80 | TH2F* fhDPhiVsDThetaAcc; | |
81 | ||
82 | void LoadClusterArrays(TTree* tree); | |
83 | ||
84 | ClassDef(AliITSMultReconstructor,0) | |
85 | }; | |
86 | ||
87 | #endif |