]>
Commit | Line | Data |
---|---|---|
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 | |
7284b2b2 | 17 | // differencies in Phi (azimuth) and Theta (polar) are inside |
ac903f1b | 18 | // a fiducial volume. In case of multiple candidates it is selected the |
19 | // candidate with minimum distance in Phi. | |
ac903f1b | 20 | // |
21 | ///////////////////////////////////////////////////////////////////////// | |
22 | ||
23 | #include "TObject.h" | |
24 | ||
25 | class TTree; | |
26 | class TH1F; | |
3ef75756 | 27 | class TH2F; |
28 | ||
ac903f1b | 29 | class AliITSgeom; |
30 | ||
31 | class AliITSMultReconstructor : public TObject | |
32 | { | |
33 | public: | |
34 | AliITSMultReconstructor(); | |
ddced3c8 | 35 | virtual ~AliITSMultReconstructor(); |
ac903f1b | 36 | |
ac903f1b | 37 | void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes); |
9b373e9a | 38 | void LoadClusterFiredChips(TTree* tree); |
7b116aa1 | 39 | void FlagClustersInOverlapRegions(Int_t ic1,Int_t ic2); |
ac903f1b | 40 | |
7b116aa1 | 41 | // Following members are set via AliITSRecoParam |
ac903f1b | 42 | void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;} |
7284b2b2 | 43 | void SetThetaWindow(Float_t w=0.025) {fThetaWindow=w;} |
7b116aa1 | 44 | void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;} |
45 | void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;} | |
46 | void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;} | |
47 | ||
ac903f1b | 48 | Int_t GetNClustersLayer1() const {return fNClustersLay1;} |
49 | Int_t GetNClustersLayer2() const {return fNClustersLay2;} | |
50 | Int_t GetNTracklets() const {return fNTracklets;} | |
968e8539 | 51 | Int_t GetNSingleClusters() const {return fNSingleCluster;} |
9b373e9a | 52 | Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];} |
ac903f1b | 53 | |
54 | Float_t* GetClusterLayer1(Int_t n) {return fClustersLay1[n];} | |
55 | Float_t* GetClusterLayer2(Int_t n) {return fClustersLay2[n];} | |
56 | Float_t* GetTracklet(Int_t n) {return fTracklets[n];} | |
968e8539 | 57 | Float_t* GetCluster(Int_t n) {return fSClusters[n];} |
ac903f1b | 58 | |
59 | void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;} | |
60 | void SaveHists(); | |
3ef75756 | 61 | |
ac903f1b | 62 | protected: |
3ef75756 | 63 | AliITSMultReconstructor(const AliITSMultReconstructor& mr); |
7537d03c | 64 | AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr); |
ac903f1b | 65 | |
ac903f1b | 66 | |
7b116aa1 | 67 | Float_t** fClustersLay1; // clusters in the 1st layer of ITS |
68 | Float_t** fClustersLay2; // clusters in the 2nd layer of ITS | |
69 | Int_t* fDetectorIndexClustersLay1; // module index for clusters 1st ITS layer | |
70 | Int_t* fDetectorIndexClustersLay2; // module index for clusters 2nd ITS layer | |
71 | Bool_t* fOverlapFlagClustersLay1; // flag for clusters in the overlap regions 1st ITS layer | |
72 | Bool_t* fOverlapFlagClustersLay2; // flag for clusters in the overlap regions 2nd ITS layer | |
73 | ||
74 | ||
9b373e9a | 75 | Float_t** fTracklets; // tracklets |
76 | Float_t** fSClusters; // single clusters (unassociated) | |
ac903f1b | 77 | |
9b373e9a | 78 | Int_t fNClustersLay1; // Number of clusters (Layer1) |
79 | Int_t fNClustersLay2; // Number of clusters (Layer2) | |
80 | Int_t fNTracklets; // Number of tracklets | |
81 | Int_t fNSingleCluster; // Number of unassociated clusters | |
82 | Short_t fNFiredChips[2]; // Number of fired chips in the two SPD layers | |
83 | ||
7b116aa1 | 84 | // Following members are set via AliITSRecoParam |
7b116aa1 | 85 | Float_t fPhiWindow; // Search window in phi |
7284b2b2 | 86 | Float_t fThetaWindow; // Search window in eta |
7b116aa1 | 87 | Bool_t fRemoveClustersFromOverlaps; // Option to skip clusters in the overlaps |
88 | Float_t fPhiOverlapCut; // Fiducial window in phi for overlap cut | |
89 | Float_t fZetaOverlapCut; // Fiducial window in eta for overlap cut | |
ac903f1b | 90 | |
9b373e9a | 91 | Bool_t fHistOn; // Option to define and fill the histograms |
ddced3c8 | 92 | |
9b373e9a | 93 | TH1F* fhClustersDPhiAcc; // Phi2 - Phi1 for tracklets |
94 | TH1F* fhClustersDThetaAcc; // Theta2 - Theta1 for tracklets | |
9b373e9a | 95 | TH1F* fhClustersDPhiAll; // Phi2 - Phi1 all the combinations |
96 | TH1F* fhClustersDThetaAll; // Theta2 - Theta1 all the combinations | |
3ef75756 | 97 | |
9b373e9a | 98 | TH2F* fhDPhiVsDThetaAll; // 2D plot for all the combinations |
99 | TH2F* fhDPhiVsDThetaAcc; // same plot for tracklets | |
9b373e9a | 100 | |
101 | TH1F* fhetaTracklets; // Pseudorapidity distr. for tracklets | |
102 | TH1F* fhphiTracklets; // Azimuthal (Phi) distr. for tracklets | |
103 | TH1F* fhetaClustersLay1; // Pseudorapidity distr. for Clusters L. 1 | |
104 | TH1F* fhphiClustersLay1; // Azimuthal (Phi) distr. for Clusters L. 1 | |
105 | ||
ac903f1b | 106 | |
107 | void LoadClusterArrays(TTree* tree); | |
108 | ||
7284b2b2 | 109 | ClassDef(AliITSMultReconstructor,5) |
ac903f1b | 110 | }; |
111 | ||
112 | #endif |