]>
Commit | Line | Data |
---|---|---|
d9105d92 | 1 | #ifndef ALIANAELECTRON_H |
2 | #define ALIANAELECTRON_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
d9105d92 | 5 | |
6 | //_________________________________________________________________________ | |
7 | // | |
8 | // Class for the electron identification, | |
9 | // Clusters from calorimeters are identified as electrons | |
10 | // and kept in the AOD. Few histograms produced. | |
11 | // Copy of AliAnaPhoton just add electron id. | |
12 | // | |
13 | ||
14 | //-- Author: Gustavo Conesa (LPSC-IN2P3-CNRS) | |
15 | ||
16 | // --- ROOT system --- | |
17 | class TH2F ; | |
18 | class TH1F; | |
19 | class TH3D; | |
20 | class TString ; | |
21 | class TObjString; | |
22 | ||
23 | // --- ANALYSIS system --- | |
745913ae | 24 | #include "AliAnaCaloTrackCorrBaseClass.h" |
d9105d92 | 25 | class AliStack; |
26 | class TParticle; | |
27 | ||
28 | class TList ; | |
29 | ||
745913ae | 30 | class AliAnaElectron : public AliAnaCaloTrackCorrBaseClass { |
d9105d92 | 31 | |
32 | public: | |
33 | ||
34 | AliAnaElectron() ; // default ctor | |
35 | ||
36 | virtual ~AliAnaElectron() { ; } // virtual dtor | |
d9105d92 | 37 | |
38 | //--------------------------------------- | |
39 | // General analysis frame methods | |
40 | //--------------------------------------- | |
41 | ||
42 | TObjString * GetAnalysisCuts(); | |
43 | ||
44 | TList * GetCreateOutputObjects(); | |
45 | ||
46 | void Init(); | |
47 | ||
48 | void InitParameters(); | |
49 | ||
50 | void MakeAnalysisFillAOD() ; | |
51 | ||
52 | void MakeAnalysisFillHistograms() ; | |
53 | ||
54 | void Print(const Option_t * opt)const; | |
55 | ||
56 | ||
57 | // Analysis methods | |
58 | ||
7e9a1194 | 59 | Bool_t ClusterSelected(AliVCluster* cl, TLorentzVector mom, Int_t nMaxima) ; |
d9105d92 | 60 | |
d9105d92 | 61 | void FillShowerShapeHistograms( AliVCluster* cluster, const Int_t mcTag , const Int_t pidTag) ; |
62 | ||
63 | void SwitchOnFillShowerShapeHistograms() { fFillSSHistograms = kTRUE ; } | |
64 | void SwitchOffFillShowerShapeHistograms() { fFillSSHistograms = kFALSE ; } | |
dbba06ca | 65 | |
78a28af3 | 66 | void WeightHistograms(AliVCluster *clus); |
67 | ||
68 | void SwitchOnFillWeightHistograms() { fFillWeightHistograms = kTRUE ; } | |
69 | void SwitchOffFillWeightHistograms() { fFillWeightHistograms = kFALSE ; } | |
70 | ||
d9105d92 | 71 | //--------------------------------------- |
72 | // Analysis parameters setters getters | |
73 | //--------------------------------------- | |
74 | ||
75 | TString GetCalorimeter() const { return fCalorimeter ; } | |
76 | void SetCalorimeter(TString & det) { fCalorimeter = det ; } | |
77 | ||
78 | // ** Cluster selection methods ** | |
79 | ||
80 | void SetdEdxCut(Double_t min, Double_t max) { fdEdxMin = min ; | |
81 | fdEdxMax = max ; } | |
82 | ||
83 | void SetEOverP(Double_t min, Double_t max) { fEOverPMin = min ; | |
84 | fEOverPMax = max ; } | |
85 | ||
86 | ||
87 | void SetMinDistanceToBadChannel(Float_t m1, Float_t m2, Float_t m3) { | |
88 | fMinDist = m1; fMinDist2 = m2; fMinDist3 = m3; } | |
89 | ||
90 | void SetTimeCut(Double_t min, Double_t max) { fTimeCutMin = min; | |
91 | fTimeCutMax = max ; } | |
92 | Double_t GetTimeCutMin() const { return fTimeCutMin ; } | |
93 | Double_t GetTimeCutMax() const { return fTimeCutMax ; } | |
94 | ||
95 | void SetNCellCut(Int_t n) { fNCellsCut = n ; } | |
96 | Double_t GetNCellCut() const { return fNCellsCut ; } | |
7e9a1194 | 97 | |
98 | void SetNLMCut(Int_t min, Int_t max) { fNLMCutMin = min; | |
99 | fNLMCutMax = max ; } | |
100 | Int_t GetNLMCutMin() const { return fNLMCutMin ; } | |
101 | Int_t GetNLMCutMax() const { return fNLMCutMax ; } | |
102 | ||
d9105d92 | 103 | void FillNOriginHistograms(Int_t n) { fNOriginHistograms = n ; |
764ab1f4 | 104 | if(n > 10) fNOriginHistograms = 10; } |
d9105d92 | 105 | |
764ab1f4 | 106 | |
107 | void FillAODWithElectrons() { fAODParticle = AliCaloPID::kElectron ; } | |
108 | void FillAODWithHadrons() { fAODParticle = AliCaloPID::kChargedHadron ; } | |
109 | void FillAODWithAny() { fAODParticle = 0 ; } | |
110 | ||
111 | void SwitchOnOnlySimpleSSHistoFill() { fFillOnlySimpleSSHisto = kTRUE ; } | |
112 | void SwitchOffOnlySimpleHistoFill() { fFillOnlySimpleSSHisto = kFALSE ; } | |
113 | ||
d9105d92 | 114 | // For histograms in arrays, index in the array, corresponding to a particle |
c5693f62 | 115 | enum mcTypes { kmcPhoton = 0, kmcPi0Decay = 1, kmcOtherDecay = 2, |
116 | kmcPi0 = 3, kmcEta = 4, kmcElectron = 5, | |
117 | kmcConversion = 6, kmcOther = 7, kmcAntiNeutron = 8, | |
118 | kmcAntiProton = 9 }; | |
d9105d92 | 119 | |
c5693f62 | 120 | enum mcssTypes { kmcssPhoton = 0, kmcssOther = 1, kmcssPi0 = 2, |
121 | kmcssEta = 3, kmcssConversion = 4, kmcssElectron = 5 }; | |
d9105d92 | 122 | |
123 | private: | |
124 | ||
125 | TString fCalorimeter ; // Calorimeter where the gamma is searched; | |
126 | Float_t fMinDist ; // Minimal distance to bad channel to accept cluster | |
127 | Float_t fMinDist2; // Cuts on Minimal distance to study acceptance evaluation | |
128 | Float_t fMinDist3; // One more cut on distance used for acceptance-efficiency study | |
129 | Double_t fTimeCutMin ; // Remove clusters/cells with time smaller than this value, in ns | |
130 | Double_t fTimeCutMax ; // Remove clusters/cells with time larger than this value, in ns | |
131 | Int_t fNCellsCut ; // Accept for the analysis clusters with more than fNCellsCut cells | |
7e9a1194 | 132 | Int_t fNLMCutMin ; // Remove clusters/cells with number of local maxima smaller than this value |
133 | Int_t fNLMCutMax ; // Remove clusters/cells with number of local maxima larger than this value | |
d9105d92 | 134 | Bool_t fFillSSHistograms ; // Fill shower shape histograms |
7e9a1194 | 135 | Bool_t fFillOnlySimpleSSHisto; // Fill selected cluster histograms, selected SS histograms |
78a28af3 | 136 | Bool_t fFillWeightHistograms ; // Fill weigth histograms |
d9105d92 | 137 | Int_t fNOriginHistograms; // Fill only NOriginHistograms of the 14 defined types |
138 | ||
139 | Float_t fdEdxMin; // Max dEdx for electrons | |
140 | Float_t fdEdxMax; // Min dEdx for electrons | |
141 | Float_t fEOverPMin; // Max E/p for electrons, after dEdx cut | |
142 | Float_t fEOverPMax; // Min E/p for electrons, after dEdx cut | |
143 | ||
764ab1f4 | 144 | Int_t fAODParticle; // Select the type of particle to put in AODs for other analysis |
145 | ||
7e9a1194 | 146 | //Histograms |
d9105d92 | 147 | TH2F * fhdEdxvsE; //! matched track dEdx vs cluster E |
148 | TH2F * fhdEdxvsP; //! matched track dEdx vs track P | |
149 | TH2F * fhEOverPvsE; //! matched track E cluster over P track vs cluster E, after dEdx cut | |
150 | TH2F * fhEOverPvsP; //! matched track E cluster over P track vs track P, after dEdx cut | |
151 | ||
7e9a1194 | 152 | TH2F * fhdEdxvsECutM02; //! matched track dEdx vs cluster E, mild M02 cut |
153 | TH2F * fhdEdxvsPCutM02; //! matched track dEdx vs track P, mild M02 cut | |
154 | TH2F * fhEOverPvsECutM02; //! matched track E cluster over P track vs cluster E, after dEdx cut, mild M02 cut | |
155 | TH2F * fhEOverPvsPCutM02; //! matched track E cluster over P track vs track P, after dEdx cut, mild M02 cut | |
156 | ||
157 | TH2F * fhdEdxvsECutEOverP; //! matched track dEdx vs cluster E , cut on EOverP | |
158 | TH2F * fhdEdxvsPCutEOverP; //! matched track dEdx vs track P, cut on EOverP | |
159 | TH2F * fhEOverPvsECutM02CutdEdx; //! matched track E cluster over P track vs cluster E, after dEdx cut and mild M02 cut | |
160 | TH2F * fhEOverPvsPCutM02CutdEdx; //! matched track E cluster over P track vs track P, after dEdx cut and mild M02 cut | |
161 | ||
162 | TH2F * fhMCdEdxvsE[10]; //! matched track dEdx vs cluster E, coming from MC particle | |
163 | TH2F * fhMCdEdxvsP[10]; //! matched track dEdx vs track P, coming from MC particle | |
164 | TH2F * fhMCEOverPvsE[10]; //! matched track E cluster over P track vs cluster E, after dEdx cut, coming from MC particle | |
165 | TH2F * fhMCEOverPvsP[10]; //! matched track E cluster over P track vs track P, after dEdx cut, coming from MC particle | |
166 | ||
167 | TH2F * fhNCellsE[2]; //! number of cells in cluster vs E | |
168 | TH2F * fhNLME[2]; //! number of local maxima in cluster vs E | |
d9105d92 | 169 | TH2F * fhMaxCellDiffClusterE[2]; //! Fraction of energy carried by cell with maximum energy |
42d47cb7 | 170 | TH2F * fhTimeE[2]; //! E vs Time of selected cluster |
171 | ||
d9105d92 | 172 | TH1F * fhE[2] ; //! Number of identified electron vs energy |
173 | TH1F * fhPt[2] ; //! Number of identified electron vs transerse momentum | |
174 | TH2F * fhPhi[2] ; //! Azimuthal angle of identified electron vs transerse momentum | |
175 | TH2F * fhEta[2] ; //! Pseudorapidity of identified electron vs transerse momentum | |
176 | TH2F * fhEtaPhi[2] ; //! Pseudorapidity vs Phi of identified electron for transerse momentum > 0.5 | |
177 | TH2F * fhEtaPhi05[2] ; //! Pseudorapidity vs Phi of identified electron for transerse momentum < 0.5 | |
178 | ||
179 | //Shower shape | |
180 | ||
181 | TH2F * fhDispE[2]; //! cluster dispersion vs E | |
182 | TH2F * fhLam0E[2]; //! cluster lambda0 vs E | |
183 | TH2F * fhLam1E[2]; //! cluster lambda1 vs E | |
184 | ||
185 | TH2F * fhDispETRD[2]; //! cluster dispersion vs E, SM covered by TRD | |
186 | TH2F * fhLam0ETRD[2]; //! cluster lambda0 vs E, SM covered by TRD | |
187 | TH2F * fhLam1ETRD[2]; //! cluster lambda1 vs E, SM covered by TRD | |
188 | ||
189 | TH2F * fhNCellsLam0LowE[2]; //! cluster N cells vs lambda0, E<2 | |
190 | TH2F * fhNCellsLam0HighE[2]; //! cluster N Cells vs lambda0, E>2 | |
191 | ||
192 | TH2F * fhEtaLam0LowE[2]; //! cluster eta vs lambda0, E<2 | |
193 | TH2F * fhPhiLam0LowE[2]; //! cluster phi vs lambda0, E<2 | |
194 | TH2F * fhEtaLam0HighE[2]; //! cluster eta vs lambda0, E>2 | |
195 | TH2F * fhPhiLam0HighE[2]; //! cluster phi vs lambda0, E>2 | |
196 | ||
34c16486 | 197 | TH2F * fhDispEtaE[2] ; //! shower dispersion in eta direction |
198 | TH2F * fhDispPhiE[2] ; //! shower dispersion in phi direction | |
199 | TH2F * fhSumEtaE[2] ; //! shower dispersion in eta direction | |
200 | TH2F * fhSumPhiE[2] ; //! shower dispersion in phi direction | |
201 | TH2F * fhSumEtaPhiE[2] ; //! shower dispersion in eta and phi direction | |
202 | TH2F * fhDispEtaPhiDiffE[2] ; //! shower dispersion eta - phi | |
203 | TH2F * fhSphericityE[2] ; //! shower sphericity in eta vs phi | |
204 | TH2F * fhDispEtaDispPhiEBin[2][5] ; //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10] | |
205 | ||
78a28af3 | 206 | // Weight studies |
207 | ||
208 | TH2F * fhECellClusterRatio; //! e cell / e cluster vs e cluster for selected electrons | |
209 | TH2F * fhECellClusterLogRatio; //! log (e cell / e cluster) vs e cluster for selected electrons | |
210 | TH2F * fhEMaxCellClusterRatio; //! e max cell / e cluster vs e cluster for selected electrons | |
211 | TH2F * fhEMaxCellClusterLogRatio; //! log (e max cell / e cluster) vs e cluster for selected electrons | |
34c16486 | 212 | TH2F * fhLambda0ForW0[14]; //! L0 for 7 defined w0= 3, 3.5 ... 6 for selected electrons |
1a72f6c5 | 213 | //TH2F * fhLambda1ForW0[14]; //! L1 for 7 defined w0= 3, 3.5 ... 6 for selected electrons |
78a28af3 | 214 | |
d9105d92 | 215 | //Fill MC dependent histograms, Origin of this cluster is ... |
216 | ||
217 | TH2F * fhMCDeltaE[2][10] ; //! MC-Reco E distribution coming from MC particle | |
218 | TH2F * fhMC2E[2][10] ; //! E distribution, Reco vs MC coming from MC particle | |
219 | ||
220 | TH1F * fhMCE[2][10]; //! Number of identified electron vs cluster energy coming from MC particle | |
221 | TH1F * fhMCPt[2][10]; //! Number of identified electron vs cluster energy coming from MC particle | |
222 | TH2F * fhMCPhi[2][10]; //! Phi of identified electron coming from MC particle | |
223 | TH2F * fhMCEta[2][10]; //! eta of identified electron coming from MC particle | |
224 | ||
225 | // Shower Shape MC | |
226 | ||
34c16486 | 227 | TH2F * fhMCELambda0[2][6] ; //! E vs Lambda0 from MC particle |
d9105d92 | 228 | |
34c16486 | 229 | TH2F * fhMCEDispEta[2][6] ; //! shower dispersion in eta direction from MC particle |
230 | TH2F * fhMCEDispPhi[2][6] ; //! shower dispersion in phi direction from MC particle | |
231 | TH2F * fhMCESumEtaPhi[2][6] ; //! shower dispersion in eta vs phi direction from MC particle | |
232 | TH2F * fhMCEDispEtaPhiDiff[2][6] ; //! shower dispersion in eta -phi direction from MC particle | |
233 | TH2F * fhMCESphericity[2][6] ; //! shower sphericity, eta vs phi from MC particle | |
34c16486 | 234 | |
235 | TH2F * fhMCElectronELambda0NoOverlap ; //! E vs Lambda0 from MC electrons, no overlap | |
236 | TH2F * fhMCElectronELambda0TwoOverlap ; //! E vs Lambda0 from MC electrons, 2 particles overlap | |
237 | TH2F * fhMCElectronELambda0NOverlap ; //! E vs Lambda0 from MC electrons, N particles overlap | |
d9105d92 | 238 | |
239 | //Embedding | |
240 | TH2F * fhEmbeddedSignalFractionEnergy ; //! Fraction of electron energy of embedded signal vs cluster energy | |
241 | ||
242 | TH2F * fhEmbedElectronELambda0FullSignal ; //! Lambda0 vs E for embedded electrons with more than 90% of the cluster energy | |
243 | TH2F * fhEmbedElectronELambda0MostlySignal ; //! Lambda0 vs E for embedded electrons with 90%<fraction<50% | |
244 | TH2F * fhEmbedElectronELambda0MostlyBkg ; //! Lambda0 vs E for embedded electrons with 50%<fraction<10% | |
245 | TH2F * fhEmbedElectronELambda0FullBkg ; //! Lambda0 vs E for embedded electrons with less than 10% of the cluster energy | |
246 | ||
764ab1f4 | 247 | AliAnaElectron( const AliAnaElectron & el) ; // cpy ctor |
248 | AliAnaElectron & operator = (const AliAnaElectron & el) ; // cpy assignment | |
c5693f62 | 249 | |
7e9a1194 | 250 | ClassDef(AliAnaElectron,5) |
d9105d92 | 251 | |
252 | } ; | |
253 | ||
254 | ||
255 | #endif//ALIANAELECTRON_H | |
256 | ||
257 | ||
258 |