]>
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 | ||
fa9ed8e9 | 6 | //_________________________________________________________________________ |
ac903f1b | 7 | // |
fa9ed8e9 | 8 | // Implementation of the ITS-SPD trackleter class |
ac903f1b | 9 | // |
fa9ed8e9 | 10 | // It retrieves clusters in the pixels (theta and phi) and finds tracklets. |
11 | // These can be used to extract charged particle multiplicity from the ITS. | |
ac903f1b | 12 | // |
fa9ed8e9 | 13 | // A tracklet consists of two ITS clusters, one in the first pixel layer and |
14 | // one in the second. The clusters are associated if the differences in | |
15 | // Phi (azimuth) and Theta (polar angle) are within fiducial windows. | |
16 | // In case of multiple candidates the candidate with minimum | |
17 | // distance is selected. | |
18 | //_________________________________________________________________________ | |
1f9831ab | 19 | #include "AliTrackleter.h" |
ac903f1b | 20 | |
1f9831ab | 21 | class TBits; |
ac903f1b | 22 | class TTree; |
23 | class TH1F; | |
3ef75756 | 24 | class TH2F; |
1f9831ab | 25 | class AliITSDetTypeRec; |
ac903f1b | 26 | class AliITSgeom; |
1f9831ab | 27 | class AliESDEvent; |
28 | class AliESDtrack; | |
29 | class AliVertex; | |
30 | class AliMultiplicity; | |
ac903f1b | 31 | |
1f9831ab | 32 | class AliITSMultReconstructor : public AliTrackleter |
ac903f1b | 33 | { |
34 | public: | |
1f9831ab | 35 | // |
36 | enum {kClTh,kClPh,kClZ,kClMC0,kClMC1,kClMC2,kClNPar}; | |
37 | enum {kTrTheta,kTrPhi,kTrDPhi,kTrDTheta,kTrLab1,kTrLab2,kClID1,kClID2,kTrNPar}; | |
38 | enum {kSCTh,kSCPh,kSCID,kSCNPar}; | |
39 | enum {kITSTPC,kITSSAP,kITSTPCBit=BIT(kITSTPC),kITSSAPBit=BIT(kITSSAP)}; // RS | |
ac903f1b | 40 | AliITSMultReconstructor(); |
ddced3c8 | 41 | virtual ~AliITSMultReconstructor(); |
ac903f1b | 42 | |
1f9831ab | 43 | void Reconstruct(AliESDEvent* esd, TTree* treeRP); |
44 | void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes); // old reconstructor invocation | |
45 | void FindTracklets(const Float_t* vtx); | |
9b373e9a | 46 | void LoadClusterFiredChips(TTree* tree); |
7b116aa1 | 47 | void FlagClustersInOverlapRegions(Int_t ic1,Int_t ic2); |
1f9831ab | 48 | void FlagTrackClusters(const AliESDtrack* track); |
49 | void FlagIfPrimary(AliESDtrack* track, const AliVertex* vtx); | |
50 | void ProcessESDTracks(); | |
51 | ||
52 | void CreateMultiplicityObject(); | |
53 | // | |
7b116aa1 | 54 | // Following members are set via AliITSRecoParam |
ac903f1b | 55 | void SetPhiWindow(Float_t w=0.08) {fPhiWindow=w;} |
7284b2b2 | 56 | void SetThetaWindow(Float_t w=0.025) {fThetaWindow=w;} |
fa9ed8e9 | 57 | void SetPhiShift(Float_t w=0.0045) {fPhiShift=w;} |
7b116aa1 | 58 | void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;} |
59 | void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;} | |
60 | void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;} | |
61 | ||
ac903f1b | 62 | Int_t GetNClustersLayer1() const {return fNClustersLay1;} |
63 | Int_t GetNClustersLayer2() const {return fNClustersLay2;} | |
64 | Int_t GetNTracklets() const {return fNTracklets;} | |
968e8539 | 65 | Int_t GetNSingleClusters() const {return fNSingleCluster;} |
9b373e9a | 66 | Short_t GetNFiredChips(Int_t layer) const {return fNFiredChips[layer];} |
ac903f1b | 67 | |
1f9831ab | 68 | Float_t* GetClusterLayer1(Int_t n) {return &fClustersLay1[n*kClNPar];} |
69 | Float_t* GetClusterLayer2(Int_t n) {return &fClustersLay2[n*kClNPar];} | |
70 | ||
ac903f1b | 71 | Float_t* GetTracklet(Int_t n) {return fTracklets[n];} |
968e8539 | 72 | Float_t* GetCluster(Int_t n) {return fSClusters[n];} |
ac903f1b | 73 | |
74 | void SetHistOn(Bool_t b=kFALSE) {fHistOn=b;} | |
75 | void SaveHists(); | |
3ef75756 | 76 | |
1f9831ab | 77 | AliITSDetTypeRec *GetDetTypeRec() const {return fDetTypeRec;} |
78 | void SetDetTypeRec(AliITSDetTypeRec *ptr){fDetTypeRec = ptr;} | |
79 | ||
ac903f1b | 80 | protected: |
3ef75756 | 81 | AliITSMultReconstructor(const AliITSMultReconstructor& mr); |
7537d03c | 82 | AliITSMultReconstructor& operator=(const AliITSMultReconstructor& mr); |
1f9831ab | 83 | AliITSDetTypeRec* fDetTypeRec; //! pointer to DetTypeRec |
84 | AliESDEvent* fESDEvent; //! pointer to ESD event | |
85 | TTree* fTreeRP; //! ITS recpoints | |
ac903f1b | 86 | |
1f9831ab | 87 | Char_t* fUsedClusLay1; // RS: flag of clusters usage in ESD tracks: 0=unused, bit0=TPC/ITS+ITSSA, bit1=ITSSA_Pure |
88 | Char_t* fUsedClusLay2; // RS: flag of clusters usage in ESD tracks: 0=unused, bit0=TPC/ITS+ITSSA, bit1=ITSSA_Pure | |
89 | ||
90 | Float_t* fClustersLay1; // clusters in the 1st layer of ITS | |
91 | Float_t* fClustersLay2; // clusters in the 2nd layer of ITS | |
7b116aa1 | 92 | Int_t* fDetectorIndexClustersLay1; // module index for clusters 1st ITS layer |
93 | Int_t* fDetectorIndexClustersLay2; // module index for clusters 2nd ITS layer | |
94 | Bool_t* fOverlapFlagClustersLay1; // flag for clusters in the overlap regions 1st ITS layer | |
95 | Bool_t* fOverlapFlagClustersLay2; // flag for clusters in the overlap regions 2nd ITS layer | |
96 | ||
9b373e9a | 97 | Float_t** fTracklets; // tracklets |
98 | Float_t** fSClusters; // single clusters (unassociated) | |
ac903f1b | 99 | |
9b373e9a | 100 | Int_t fNClustersLay1; // Number of clusters (Layer1) |
101 | Int_t fNClustersLay2; // Number of clusters (Layer2) | |
102 | Int_t fNTracklets; // Number of tracklets | |
103 | Int_t fNSingleCluster; // Number of unassociated clusters | |
104 | Short_t fNFiredChips[2]; // Number of fired chips in the two SPD layers | |
105 | ||
7b116aa1 | 106 | // Following members are set via AliITSRecoParam |
7b116aa1 | 107 | Float_t fPhiWindow; // Search window in phi |
fa9ed8e9 | 108 | Float_t fThetaWindow; // Search window in theta |
109 | Float_t fPhiShift; // Phi shift reference value (at 0.5 T) | |
7b116aa1 | 110 | Bool_t fRemoveClustersFromOverlaps; // Option to skip clusters in the overlaps |
111 | Float_t fPhiOverlapCut; // Fiducial window in phi for overlap cut | |
112 | Float_t fZetaOverlapCut; // Fiducial window in eta for overlap cut | |
ac903f1b | 113 | |
9b373e9a | 114 | Bool_t fHistOn; // Option to define and fill the histograms |
ddced3c8 | 115 | |
9b373e9a | 116 | TH1F* fhClustersDPhiAcc; // Phi2 - Phi1 for tracklets |
117 | TH1F* fhClustersDThetaAcc; // Theta2 - Theta1 for tracklets | |
9b373e9a | 118 | TH1F* fhClustersDPhiAll; // Phi2 - Phi1 all the combinations |
119 | TH1F* fhClustersDThetaAll; // Theta2 - Theta1 all the combinations | |
3ef75756 | 120 | |
9b373e9a | 121 | TH2F* fhDPhiVsDThetaAll; // 2D plot for all the combinations |
122 | TH2F* fhDPhiVsDThetaAcc; // same plot for tracklets | |
9b373e9a | 123 | |
124 | TH1F* fhetaTracklets; // Pseudorapidity distr. for tracklets | |
125 | TH1F* fhphiTracklets; // Azimuthal (Phi) distr. for tracklets | |
126 | TH1F* fhetaClustersLay1; // Pseudorapidity distr. for Clusters L. 1 | |
127 | TH1F* fhphiClustersLay1; // Azimuthal (Phi) distr. for Clusters L. 1 | |
128 | ||
ac903f1b | 129 | |
130 | void LoadClusterArrays(TTree* tree); | |
131 | ||
1f9831ab | 132 | ClassDef(AliITSMultReconstructor,7) |
ac903f1b | 133 | }; |
134 | ||
135 | #endif |