]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaPi0.h
fix compilation warning
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaPi0.h
CommitLineData
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
17class TList;
0333ede6 18class TH3F ;
19class TH2F ;
0c1383b5 20class TObjString;
1c5acb87 21
22//Analysis
745913ae 23#include "AliAnaCaloTrackCorrBaseClass.h"
1c5acb87 24class AliAODEvent ;
25class AliESDEvent ;
c8fe2783 26class AliAODPWG4Particle ;
1c5acb87 27
745913ae 28class 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
3eb6ab95 241 TH2F * fhPrimPi0OpeningAngleAsym ; //! Opening angle of pair versus pair E asymmetry, pi0 primaries
242 TH2F * fhPrimPi0CosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy, pi0 primaries
c8710850 243 TH2F * fhPrimPi0PtCentrality ; //! primary pi0 reconstructed centrality vs pT
244 TH2F * fhPrimPi0PtEventPlane ; //! primary pi0 reconstructed event plane vs pT
245 TH2F * fhPrimPi0AccPtCentrality ; //! primary pi0 with accepted daughters reconstructed centrality vs pT
246 TH2F * fhPrimPi0AccPtEventPlane ; //! primary pi0 with accepted daughters reconstructed event plane vs pT
247
6175da48 248 //Eta acceptance
0333ede6 249 TH1F * fhPrimEtaPt ; //! Spectrum of Primary
250 TH1F * fhPrimEtaAccPt ; //! Spectrum of primary with accepted daughters
251 TH2F * fhPrimEtaY ; //! Rapidity distribution of primary particles vs pT
252 TH2F * fhPrimEtaAccY ; //! Rapidity distribution of primary with accepted daughters vs pT
253 TH2F * fhPrimEtaPhi ; //! Azimutal distribution of primary particles vs pT
254 TH2F * fhPrimEtaAccPhi; //! Azimutal distribution of primary with accepted daughters vs pT
c8710850 255 TH2F * fhPrimEtaOpeningAngle ; //! Opening angle of pair versus pair energy, eta primaries
256 TH2F * fhPrimEtaOpeningAngleAsym ; //! Opening angle of pair versus pair E asymmetry, eta primaries
257 TH2F * fhPrimEtaCosOpeningAngle ; //! Cosinus of opening angle of pair version pair energy, eta primaries
258 TH2F * fhPrimEtaPtCentrality ; //! primary eta reconstructed centrality vs pT
259 TH2F * fhPrimEtaPtEventPlane ; //! primary eta reconstructed event plane vs pT
260 TH2F * fhPrimEtaAccPtCentrality ; //! primary eta with accepted daughters reconstructed centrality vs pT
261 TH2F * fhPrimEtaAccPtEventPlane ; //! primary eta with accepted daughters reconstructed event plane vs pT
6175da48 262
08a56f5f 263 // Primaries origin
0333ede6 264 TH2F * fhPrimPi0PtOrigin ; //! Spectrum of generated pi0 vs mother
265 TH2F * fhPrimEtaPtOrigin ; //! Spectrum of generated eta vs mother
08a56f5f 266
6175da48 267 //Pair origin
268 //Array of histograms ordered as follows: 0-Photon, 1-electron, 2-pi0, 3-eta, 4-a-proton, 5-a-neutron, 6-stable particles,
269 // 7-other decays, 8-string, 9-final parton, 10-initial parton, intermediate, 11-colliding proton, 12-unrelated
0333ede6 270 TH2F * fhMCOrgMass[13]; //! Mass vs pt of real pairs, check common origin of pair
271 TH2F * fhMCOrgAsym[13]; //! Asymmetry vs pt of real pairs, check common origin of pair
272 TH2F * fhMCOrgDeltaEta[13]; //! Delta Eta vs pt of real pairs, check common origin of pair
273 TH2F * fhMCOrgDeltaPhi[13]; //! Delta Phi vs pt of real pairs, check common origin of pair
6175da48 274
275 //Multiple cuts in simulation, origin pi0 or eta
0333ede6 276 TH2F ** fhMCPi0MassPtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed mass vs reconstructed pt of original pair
277 TH2F ** fhMCPi0MassPtTrue; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed mass vs generated pt of original pair
278 TH2F ** fhMCPi0PtTruePtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed pt vs generated pt of pair
279 TH2F ** fhMCEtaMassPtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed mass vs reconstructed pt of original pair
280 TH2F ** fhMCEtaMassPtTrue; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed mass vs generated pt of original pair
281 TH2F ** fhMCEtaPtTruePtRec; //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed pt vs generated pt of pair
282
283 TH2F * fhMCPi0PtOrigin ; //! Mass of reoconstructed pi0 pairs in calorimeter vs mother
284 TH2F * fhMCEtaPtOrigin ; //! Mass of reoconstructed pi0 pairs in calorimeter vs mother
6175da48 285
99b8e903 286 TH2F * fhReMCFromConversion ; //! Invariant mass of 2 clusters originated in conversions
287 TH2F * fhReMCFromNotConversion ; //! Invariant mass of 2 clusters not originated in conversions
288 TH2F * fhReMCFromMixConversion ; //! Invariant mass of 2 clusters one from conversion and the other not
289
745913ae 290 AliAnaPi0( const AliAnaPi0 & api0) ; // cpy ctor
291 AliAnaPi0 & operator = (const AliAnaPi0 & api0) ; // cpy assignment
99b8e903 292
3eb6ab95 293 ClassDef(AliAnaPi0,24)
1c5acb87 294} ;
295
296
297#endif //ALIANAPI0_H
298
299
300