]>
Commit | Line | Data |
---|---|---|
1c5acb87 | 1 | #ifndef ALIANAPI0_H |
2 | #define ALIANAPI0_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
1c5acb87 | 5 | |
6 | //_________________________________________________________________________ | |
6175da48 | 7 | // Class to fill two-photon invariant mass histograms |
1c5acb87 | 8 | // to be used to extract pi0 raw yield. |
6175da48 | 9 | // Input is produced by AliAnaPhoton (or any other analysis producing output AliAODPWG4Particles), |
10 | // it will do nothing if executed alone | |
1c5acb87 | 11 | // |
12 | //-- Author: Dmitri Peressounko (RRC "KI") | |
745913ae | 13 | //-- Adapted to CaloTrackCorr frame by Lamia Benhabib (SUBATECH) |
1c5acb87 | 14 | //-- and Gustavo Conesa (INFN-Frascati) |
15 | ||
16 | //Root | |
17 | class TList; | |
0333ede6 | 18 | class TH3F ; |
19 | class TH2F ; | |
0c1383b5 | 20 | class TObjString; |
1c5acb87 | 21 | |
22 | //Analysis | |
745913ae | 23 | #include "AliAnaCaloTrackCorrBaseClass.h" |
1c5acb87 | 24 | class AliAODEvent ; |
25 | class AliESDEvent ; | |
c8fe2783 | 26 | class AliAODPWG4Particle ; |
1c5acb87 | 27 | |
745913ae | 28 | class AliAnaPi0 : public AliAnaCaloTrackCorrBaseClass { |
6639984f | 29 | |
78219bac | 30 | public: |
6639984f | 31 | AliAnaPi0() ; // default ctor |
6639984f | 32 | virtual ~AliAnaPi0() ;//virtual dtor |
33 | ||
6175da48 | 34 | //------------------------------- |
35 | // General analysis frame methods | |
36 | //------------------------------- | |
37 | ||
0c1383b5 | 38 | TObjString * GetAnalysisCuts(); |
0333ede6 | 39 | |
0c1383b5 | 40 | TList * GetCreateOutputObjects(); |
0333ede6 | 41 | |
42 | void Print(const Option_t * opt) const; | |
43 | ||
44 | void MakeAnalysisFillHistograms(); | |
45 | ||
46 | void InitParameters(); | |
6175da48 | 47 | |
48 | //Calorimeter options | |
0333ede6 | 49 | TString GetCalorimeter() const { return fCalorimeter ; } |
50 | void SetCalorimeter(TString & det) { fCalorimeter = det ; } | |
51 | void SetNumberOfModules(Int_t nmod) { fNModules = nmod ; } | |
c8fe2783 | 52 | |
6175da48 | 53 | //------------------------------- |
54 | // EVENT Bin Methods | |
55 | //------------------------------- | |
56 | ||
2e876d85 | 57 | Int_t GetEventIndex(AliAODPWG4Particle * part, Double_t * vert) ; |
156549ae | 58 | |
6175da48 | 59 | //------------------------------- |
60 | //Opening angle pair selection | |
61 | //------------------------------- | |
0333ede6 | 62 | void SwitchOnAngleSelection() { fUseAngleCut = kTRUE ; } |
63 | void SwitchOffAngleSelection() { fUseAngleCut = kFALSE ; } | |
64 | ||
65 | void SwitchOnAngleEDepSelection() { fUseAngleEDepCut = kTRUE ; } | |
66 | void SwitchOffAngleEDepSelection() { fUseAngleEDepCut = kFALSE ; } | |
67 | ||
68 | void SetAngleCut(Float_t a) { fAngleCut = a ; } | |
69 | void SetAngleMaxCut(Float_t a) { fAngleMaxCut = a ; } | |
6175da48 | 70 | |
7a972c0c | 71 | void SwitchOnFillAngleHisto() { fFillAngleHisto = kTRUE ; } |
72 | void SwitchOffFillAngleHisto() { fFillAngleHisto = kFALSE ; } | |
73 | ||
6175da48 | 74 | //------------------------------------------ |
20218aea | 75 | //Do analysis only with clusters in same SM or different combinations of SM |
6175da48 | 76 | //------------------------------------------ |
0333ede6 | 77 | void SwitchOnSameSM() { fSameSM = kTRUE ; } |
78 | void SwitchOffSameSM() { fSameSM = kFALSE ; } | |
6175da48 | 79 | |
0333ede6 | 80 | void SwitchOnSMCombinations() { fFillSMCombinations = kTRUE ; } |
81 | void SwitchOffSMCombinations() { fFillSMCombinations = kFALSE ; } | |
20218aea | 82 | |
6175da48 | 83 | //------------------------------- |
84 | //Histogram filling options off by default | |
85 | //------------------------------- | |
0333ede6 | 86 | void SwitchOnInvPtWeight() { fMakeInvPtPlots = kTRUE ; } |
87 | void SwitchOffInvPtWeight() { fMakeInvPtPlots = kFALSE ; } | |
af7b3903 | 88 | |
0333ede6 | 89 | void SwitchOnFillBadDistHisto() { fFillBadDistHisto = kTRUE ; } |
90 | void SwitchOffFillBadDistHisto() { fFillBadDistHisto = kFALSE ; } | |
6175da48 | 91 | |
92 | //------------------------------------------- | |
93 | //Cuts for multiple analysis, off by default | |
94 | //------------------------------------------- | |
0333ede6 | 95 | void SwitchOnMultipleCutAnalysis() { fMultiCutAna = kTRUE ; } |
96 | void SwitchOffMultipleCutAnalysis() { fMultiCutAna = kFALSE ; } | |
5ae09196 | 97 | |
0333ede6 | 98 | void SetNPtCuts (Int_t s) { if(s <= 10)fNPtCuts = s ; } |
99 | void SetNAsymCuts (Int_t s) { if(s <= 10)fNAsymCuts = s ; } | |
100 | void SetNNCellCuts(Int_t s) { if(s <= 10)fNCellNCuts = s ; } | |
101 | void SetNPIDBits (Int_t s) { if(s <= 10)fNPIDBits = s ; } | |
d7c10d78 | 102 | |
0333ede6 | 103 | void SetPtCutsAt (Int_t p,Float_t v) { if(p < 10)fPtCuts[p] = v ; } |
104 | void SetAsymCutsAt(Int_t p,Float_t v) { if(p < 10)fAsymCuts[p] = v ; } | |
105 | void SetNCellCutsAt(Int_t p,Int_t v) { if(p < 10)fCellNCuts[p]= v ; } | |
106 | void SetPIDBitsAt (Int_t p,Int_t v) { if(p < 10)fPIDBits[p] = v ; } | |
d7c10d78 | 107 | |
7a972c0c | 108 | void SwitchOnFillSSCombinations() { fFillSSCombinations = kTRUE ; } |
109 | void SwitchOffFillSSCombinations() { fFillSSCombinations = kFALSE ; } | |
110 | ||
111 | void SwitchOnFillAsymmetryHisto() { fFillAsymmetryHisto = kTRUE ; } | |
112 | void SwitchOffFillAsymmetryHisto() { fFillAsymmetryHisto = kFALSE ; } | |
113 | ||
114 | ||
6175da48 | 115 | //MC analysis related methods |
0333ede6 | 116 | |
117 | void SwitchOnConversionChecker() { fCheckConversion = kTRUE ; } | |
118 | void SwitchOffConversionChecker() { fCheckConversion = kFALSE ; } | |
119 | ||
120 | void SwitchOnMultipleCutAnalysisInSimulation() { fMultiCutAnaSim = kTRUE ; } | |
121 | void SwitchOffMultipleCutAnalysisInSimulation() { fMultiCutAnaSim = kFALSE ; } | |
20218aea | 122 | |
0333ede6 | 123 | void FillAcceptanceHistograms(); |
124 | void FillMCVersusRecDataHistograms(const Int_t index1, const Int_t index2, | |
125 | const Float_t pt1, const Float_t pt2, | |
126 | const Int_t ncells1, const Int_t ncells2, | |
127 | const Double_t mass, const Double_t pt, const Double_t asym, | |
128 | const Double_t deta, const Double_t dphi); | |
6639984f | 129 | |
130 | private: | |
0333ede6 | 131 | |
0333ede6 | 132 | TList ** fEventsList ; //![GetNCentrBin()*GetNZvertBin()*GetNRPBin()] Containers for photons in stored events |
133 | ||
134 | TString fCalorimeter ; // Select Calorimeter for IM | |
135 | Int_t fNModules ; // Number of EMCAL/PHOS modules, set as many histogras as modules | |
136 | ||
137 | Bool_t fUseAngleCut ; // Select pairs depending on their opening angle | |
138 | Bool_t fUseAngleEDepCut ; // Select pairs depending on their opening angle | |
139 | Float_t fAngleCut ; // Select pairs with opening angle larger than a threshold | |
140 | Float_t fAngleMaxCut ; // Select pairs with opening angle smaller than a threshold | |
6175da48 | 141 | |
142 | //Multiple cuts analysis | |
0333ede6 | 143 | Bool_t fMultiCutAna; // Do analysis with several or fixed cut |
144 | Bool_t fMultiCutAnaSim; // Do analysis with several or fixed cut, in the simulation related part | |
145 | Int_t fNPtCuts; // Number of pt cuts | |
146 | Float_t fPtCuts[10]; // Array with different pt cuts | |
147 | Int_t fNAsymCuts; // Number of assymmetry cuts | |
148 | Float_t fAsymCuts[10]; // Array with different assymetry cuts | |
149 | Int_t fNCellNCuts; // Number of cuts with number of cells in cluster | |
150 | Int_t fCellNCuts[10]; // Array with different cell number cluster cuts | |
151 | Int_t fNPIDBits ; // Number of possible PID bit combinations | |
152 | Int_t fPIDBits[10]; // Array with different PID bits | |
6175da48 | 153 | |
154 | //Switchs of different analysis options | |
0333ede6 | 155 | Bool_t fMakeInvPtPlots; // D plots with inverse pt weight |
156 | Bool_t fSameSM; // Select only pairs in same SM; | |
157 | Bool_t fFillSMCombinations; // Fill histograms with different cluster pairs in SM combinations | |
158 | Bool_t fCheckConversion; // Fill histograms with tagged photons as conversion | |
0333ede6 | 159 | Bool_t fFillBadDistHisto; // Do plots for different distances to bad channels |
7a972c0c | 160 | Bool_t fFillSSCombinations; // Do invariant mass for different combination of shower shape clusters |
161 | Bool_t fFillAngleHisto; // Fill histograms with pair opening angle | |
162 | Bool_t fFillAsymmetryHisto; // Fill histograms with asymmetry vs pt | |
163 | ||
6639984f | 164 | //Histograms |
6175da48 | 165 | |
156549ae | 166 | //Event characterization |
0333ede6 | 167 | TH1F * fhAverTotECluster; //! Average number of clusters in SM |
168 | TH1F * fhAverTotECell; //! Average number of cells in SM | |
169 | TH2F * fhAverTotECellvsCluster; //! Average number of cells in SM | |
170 | TH1F * fhEDensityCluster; //! Deposited energy in event per cluster | |
171 | TH1F * fhEDensityCell; //! Deposited energy in event per cell vs cluster | |
172 | TH2F * fhEDensityCellvsCluster; //! Deposited energy in event per cell vs cluster | |
156549ae | 173 | |
7a972c0c | 174 | TH2F ** fhReMod ; //![fNModules] REAL two-photon invariant mass distribution for different calorimeter modules. |
175 | TH2F ** fhReSameSideEMCALMod ; //![fNModules-2] REAL two-photon invariant mass distribution for different clusters in different calorimeter modules. | |
176 | TH2F ** fhReSameSectorEMCALMod ; //![fNModules/2] REAL two-photon invariant mass distribution for different clusters in different calorimeter modules. | |
177 | TH2F ** fhReDiffPHOSMod ; //![fNModules] REAL two-photon invariant mass distribution for different clusters in different calorimeter modules. | |
178 | TH2F ** fhMiMod ; //![fNModules] MIXED two-photon invariant mass distribution for different calorimeter modules. | |
179 | TH2F ** fhMiSameSideEMCALMod ; //![fNModules-2] REAL two-photon invariant mass distribution for different clusters in different calorimeter modules. | |
180 | TH2F ** fhMiSameSectorEMCALMod ; //![fNModules/2] REAL two-photon invariant mass distribution for different clusters in different calorimeter modules. | |
181 | TH2F ** fhMiDiffPHOSMod ; //![fNModules-1] REAL two-photon invariant mass distribution for different clusters in different calorimeter modules. | |
6175da48 | 182 | |
183 | // Pairs with at least one cluster tagged as conversion | |
7a972c0c | 184 | TH2F * fhReConv ; //! REAL two-photon invariant mass distribution one of the pair was 2 clusters with small mass |
185 | TH2F * fhMiConv ; //! MIXED two-photon invariant mass distribution one of the pair was 2 clusters with small mass | |
186 | TH2F * fhReConv2 ; //! REAL two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass | |
187 | TH2F * fhMiConv2 ; //! MIXED two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass | |
0333ede6 | 188 | |
7a972c0c | 189 | TH2F ** fhRe1 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL two-photon invariant mass distribution for different centralities and Asymmetry |
190 | TH2F ** fhMi1 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry | |
191 | TH2F ** fhRe2 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL two-photon invariant mass distribution for different centralities and Asymmetry | |
192 | TH2F ** fhMi2 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry | |
193 | TH2F ** fhRe3 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL two-photon invariant mass distribution for different centralities and Asymmetry | |
194 | TH2F ** fhMi3 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry | |
6175da48 | 195 | |
6175da48 | 196 | //Histograms weighted by inverse pT |
0333ede6 | 197 | TH2F ** fhReInvPt1 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT |
198 | TH2F ** fhMiInvPt1 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT | |
199 | TH2F ** fhReInvPt2 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT | |
200 | TH2F ** fhMiInvPt2 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT | |
201 | TH2F ** fhReInvPt3 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT | |
202 | TH2F ** fhMiInvPt3 ; //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT | |
6175da48 | 203 | |
204 | //Multiple cuts: Assymmetry, pt, n cells, PID | |
0333ede6 | 205 | TH2F ** fhRePtNCellAsymCuts ; //![fNPtCuts*fNAsymCuts*fNCellNCuts*] REAL two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry |
206 | TH2F ** fhMiPtNCellAsymCuts ; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Mixed two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry | |
99b8e903 | 207 | TH2F ** fhRePtNCellAsymCutsSM[12] ; //![fNPtCuts*fNAsymCuts*fNCellNCutsfNModules] REAL two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry for each module |
0333ede6 | 208 | |
209 | TH2F ** fhRePIDBits ; //![fNPIDBits] REAL two-photon invariant mass distribution for different PID bits | |
210 | TH3F ** fhRePtMult ; //![fNAsymCuts] REAL two-photon invariant mass distribution for different track multiplicity and assymetry cuts | |
211 | TH2F * fhReSS[3] ; //! Combine clusters with 3 different cuts on shower shape | |
6175da48 | 212 | |
213 | // Asymmetry vs pt, in pi0/eta regions | |
0333ede6 | 214 | TH2F * fhRePtAsym ; //! REAL two-photon pt vs asymmetry |
215 | TH2F * fhRePtAsymPi0 ; //! REAL two-photon pt vs asymmetry, close to pi0 mass | |
216 | TH2F * fhRePtAsymEta ; //! REAL two-photon pt vs asymmetry, close to eta mass | |
c4a7d28a | 217 | |
72542aba | 218 | //Centrality, Event plane bins |
2e876d85 | 219 | TH1I * fhEventBin; //! Number of real pairs in a particular bin (cen,vz,rp) |
220 | TH1I * fhEventMixBin; //! Number of mixed pairs in a particular bin (cen,vz,rp) | |
0333ede6 | 221 | TH1F * fhCentrality; //! Histogram with centrality bins with at least one pare |
222 | TH1F * fhCentralityNoPair; //! Histogram with centrality bins with no pair | |
20218aea | 223 | |
0333ede6 | 224 | TH2F * fhEventPlaneResolution; //! Histogram with Event plane resolution vs centrality |
72542aba | 225 | |
6175da48 | 226 | // Pair opening angle |
0333ede6 | 227 | TH2F * fhRealOpeningAngle ; //! Opening angle of pair versus pair energy |
228 | TH2F * fhRealCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy | |
229 | TH2F * fhMixedOpeningAngle ; //! Opening angle of pair versus pair energy | |
230 | TH2F * fhMixedCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy | |
6175da48 | 231 | |
232 | //MC analysis histograms | |
233 | //Pi0 Acceptance | |
0333ede6 | 234 | TH1F * fhPrimPi0Pt ; //! Spectrum of Primary |
235 | TH1F * fhPrimPi0AccPt ; //! Spectrum of primary with accepted daughters | |
236 | TH2F * fhPrimPi0Y ; //! Rapidity distribution of primary particles vs pT | |
237 | TH2F * fhPrimPi0AccY ; //! Rapidity distribution of primary with accepted daughters vs pT | |
238 | TH2F * fhPrimPi0Phi ; //! Azimutal distribution of primary particles vs pT | |
239 | TH2F * fhPrimPi0AccPhi; //! Azimutal distribution of primary with accepted daughters vs pT | |
240 | TH2F * fhPrimPi0OpeningAngle ; //! Opening angle of pair versus pair energy, primaries | |
241 | TH2F * fhPrimPi0CosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy, primaries | |
8159b92d | 242 | TH2F * fhPrimEtaOpeningAngle ; //! Opening angle of pair versus pair energy, primaries |
243 | TH2F * fhPrimEtaCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy, primaries | |
6175da48 | 244 | //Eta acceptance |
0333ede6 | 245 | TH1F * fhPrimEtaPt ; //! Spectrum of Primary |
246 | TH1F * fhPrimEtaAccPt ; //! Spectrum of primary with accepted daughters | |
247 | TH2F * fhPrimEtaY ; //! Rapidity distribution of primary particles vs pT | |
248 | TH2F * fhPrimEtaAccY ; //! Rapidity distribution of primary with accepted daughters vs pT | |
249 | TH2F * fhPrimEtaPhi ; //! Azimutal distribution of primary particles vs pT | |
250 | TH2F * fhPrimEtaAccPhi; //! Azimutal distribution of primary with accepted daughters vs pT | |
6175da48 | 251 | |
08a56f5f | 252 | // Primaries origin |
0333ede6 | 253 | TH2F * fhPrimPi0PtOrigin ; //! Spectrum of generated pi0 vs mother |
254 | TH2F * fhPrimEtaPtOrigin ; //! Spectrum of generated eta vs mother | |
08a56f5f | 255 | |
6175da48 | 256 | //Pair origin |
257 | //Array of histograms ordered as follows: 0-Photon, 1-electron, 2-pi0, 3-eta, 4-a-proton, 5-a-neutron, 6-stable particles, | |
258 | // 7-other decays, 8-string, 9-final parton, 10-initial parton, intermediate, 11-colliding proton, 12-unrelated | |
0333ede6 | 259 | TH2F * fhMCOrgMass[13]; //! Mass vs pt of real pairs, check common origin of pair |
260 | TH2F * fhMCOrgAsym[13]; //! Asymmetry vs pt of real pairs, check common origin of pair | |
261 | TH2F * fhMCOrgDeltaEta[13]; //! Delta Eta vs pt of real pairs, check common origin of pair | |
262 | TH2F * fhMCOrgDeltaPhi[13]; //! Delta Phi vs pt of real pairs, check common origin of pair | |
6175da48 | 263 | |
264 | //Multiple cuts in simulation, origin pi0 or eta | |
0333ede6 | 265 | TH2F ** fhMCPi0MassPtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed mass vs reconstructed pt of original pair |
266 | TH2F ** fhMCPi0MassPtTrue; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed mass vs generated pt of original pair | |
267 | TH2F ** fhMCPi0PtTruePtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed pt vs generated pt of pair | |
268 | TH2F ** fhMCEtaMassPtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed mass vs reconstructed pt of original pair | |
269 | TH2F ** fhMCEtaMassPtTrue; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed mass vs generated pt of original pair | |
270 | TH2F ** fhMCEtaPtTruePtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed pt vs generated pt of pair | |
271 | ||
272 | TH2F * fhMCPi0PtOrigin ; //! Mass of reoconstructed pi0 pairs in calorimeter vs mother | |
273 | TH2F * fhMCEtaPtOrigin ; //! Mass of reoconstructed pi0 pairs in calorimeter vs mother | |
6175da48 | 274 | |
99b8e903 | 275 | TH2F * fhReMCFromConversion ; //! Invariant mass of 2 clusters originated in conversions |
276 | TH2F * fhReMCFromNotConversion ; //! Invariant mass of 2 clusters not originated in conversions | |
277 | TH2F * fhReMCFromMixConversion ; //! Invariant mass of 2 clusters one from conversion and the other not | |
278 | ||
745913ae | 279 | AliAnaPi0( const AliAnaPi0 & api0) ; // cpy ctor |
280 | AliAnaPi0 & operator = (const AliAnaPi0 & api0) ; // cpy assignment | |
99b8e903 | 281 | |
2e876d85 | 282 | ClassDef(AliAnaPi0,23) |
1c5acb87 | 283 | } ; |
284 | ||
285 | ||
286 | #endif //ALIANAPI0_H | |
287 | ||
288 | ||
289 |