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