]>
Commit | Line | Data |
---|---|---|
1a31a9ab | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
1a31a9ab | 15 | |
16 | //_________________________________________________________________________ | |
17 | // Class for analysis of particle isolation | |
18 | // Input is selected particles put in AOD branch (AliAODPWG4ParticleCorrelation) | |
19 | // | |
6ae3345d | 20 | // Class created from old AliPHOSGammaJet |
1a31a9ab | 21 | // (see AliRoot versions previous Release 4-09) |
22 | // | |
6ae3345d | 23 | // -- Author: Gustavo Conesa (LNF-INFN) |
1a31a9ab | 24 | |
25 | //-Yaxian Mao (add the possibility for different IC method with different pt range, 01/10/2010) | |
26 | ////////////////////////////////////////////////////////////////////////////// | |
db6fb352 | 27 | |
6ae3345d | 28 | // --- ROOT system --- |
1a31a9ab | 29 | #include <TClonesArray.h> |
30 | #include <TList.h> | |
31 | #include <TObjString.h> | |
32 | #include <TH2F.h> | |
1a31a9ab | 33 | #include <TClass.h> |
dc9c6e78 | 34 | #include <TH2F.h> |
35 | #include "TParticle.h" | |
36 | #include "TDatabasePDG.h" | |
37 | ||
6ae3345d | 38 | // --- Analysis system --- |
39 | #include "AliAnaParticleIsolation.h" | |
1a31a9ab | 40 | #include "AliCaloTrackReader.h" |
dc9c6e78 | 41 | #include "AliStack.h" |
1a31a9ab | 42 | #include "AliIsolationCut.h" |
dc9c6e78 | 43 | #include "AliFiducialCut.h" |
44 | #include "AliMCAnalysisUtils.h" | |
1a31a9ab | 45 | #include "AliNeutralMesonSelection.h" |
dc9c6e78 | 46 | #include "AliAODMCParticle.h" |
1a31a9ab | 47 | #include "AliAODPWG4ParticleCorrelation.h" |
48 | #include "AliMCAnalysisUtils.h" | |
49 | #include "AliVTrack.h" | |
50 | #include "AliVCluster.h" | |
2ad19c3d | 51 | #include "AliESDEvent.h" |
52 | #include "AliAODEvent.h" | |
dc9c6e78 | 53 | // --- Detectors --- |
6ae3345d | 54 | #include "AliEMCALGeometry.h" |
dc9c6e78 | 55 | #include "AliPHOSGeoUtils.h" |
1a31a9ab | 56 | |
57 | ClassImp(AliAnaParticleIsolation) | |
db6fb352 | 58 | |
803d06a8 | 59 | //______________________________________________________________________________ |
6ae3345d | 60 | AliAnaParticleIsolation::AliAnaParticleIsolation() : |
4b6cb0f2 | 61 | AliAnaCaloTrackCorrBaseClass(), |
32bff2da | 62 | fIsoDetector(-1), fIsoDetectorString(""), |
6ae3345d | 63 | fReMakeIC(0), fMakeSeveralIC(0), |
977564f5 | 64 | fFillTMHisto(0), fFillSSHisto(1), |
65 | fFillUEBandSubtractHistograms(1), fFillCellHistograms(0), | |
0cea6003 | 66 | fFillTaggedDecayHistograms(0), |
8913c8c4 | 67 | fNDecayBits(0), fDecayBits(), |
4d1d8f00 | 68 | fFillNLMHistograms(0), |
64373095 | 69 | fLeadingOnly(0), fCheckLeadingWithNeutralClusters(0), |
d24561b6 | 70 | fSelectPrimariesInCone(0), fMakePrimaryPi0DecayStudy(0), |
dc1966bb | 71 | fFillBackgroundBinHistograms(0), fNBkgBin(0), |
d125fd57 | 72 | fFillPtTrigBinHistograms(0), fNPtTrigBin(0), |
4afdc1d8 | 73 | fMinCellsAngleOverlap(0), |
db6fb352 | 74 | // Several IC |
6ae3345d | 75 | fNCones(0), fNPtThresFrac(0), |
76 | fConeSizes(), fPtThresholds(), | |
db6fb352 | 77 | fPtFractions(), fSumPtThresholds(), |
32bff2da | 78 | fMomentum(), fMomIso(), |
79 | fMomDaugh1(), fMomDaugh2(), | |
848cd3a3 | 80 | fTrackVector(), |
db6fb352 | 81 | // Histograms |
c8710850 | 82 | fhEIso(0), fhPtIso(0), |
83 | fhPtCentralityIso(0), fhPtEventPlaneIso(0), | |
84 | fhPtNLocMaxIso(0), | |
6ae3345d | 85 | fhPhiIso(0), fhEtaIso(0), fhEtaPhiIso(0), |
86 | fhEtaPhiNoIso(0), | |
9b01dc66 | 87 | fhENoIso(0), fhPtNoIso(0), fhPtNLocMaxNoIso(0), |
23130491 | 88 | fhPtInCone(0), |
9b01dc66 | 89 | fhPtClusterInCone(0), fhPtCellInCone(0), fhPtTrackInCone(0), |
2a9171b5 | 90 | fhPtTrackInConeOtherBC(0), fhPtTrackInConeOtherBCPileUpSPD(0), |
cc944149 | 91 | fhPtTrackInConeBC0(0), fhPtTrackInConeVtxBC0(0), |
92 | fhPtTrackInConeBC0PileUpSPD(0), | |
17af6e24 | 93 | fhPtInConePileUp(), fhPtInConeCent(0), |
23130491 | 94 | fhPerpConeSumPt(0), fhPtInPerpCone(0), |
977564f5 | 95 | fhEtaPhiInConeCluster(0), fhEtaPhiCluster(0), |
96 | fhEtaPhiInConeTrack(0), fhEtaPhiTrack(0), | |
23130491 | 97 | fhEtaBandCluster(0), fhPhiBandCluster(0), |
98 | fhEtaBandTrack(0), fhPhiBandTrack(0), | |
9b01dc66 | 99 | fhEtaBandCell(0), fhPhiBandCell(0), |
1b1a1b2e | 100 | fhConePtLead(0), fhConePtLeadCluster(0), fhConePtLeadTrack(0), |
dc1966bb | 101 | fhConePtLeadClustervsTrack(0), fhConePtLeadClusterTrackFrac(0), |
9b01dc66 | 102 | fhConeSumPt(0), fhConeSumPtCellTrack(0), |
103 | fhConeSumPtCell(0), fhConeSumPtCluster(0), fhConeSumPtTrack(0), | |
23130491 | 104 | fhConeSumPtEtaBandUECluster(0), fhConeSumPtPhiBandUECluster(0), |
105 | fhConeSumPtEtaBandUETrack(0), fhConeSumPtPhiBandUETrack(0), | |
9b01dc66 | 106 | fhConeSumPtEtaBandUECell(0), fhConeSumPtPhiBandUECell(0), |
23130491 | 107 | fhConeSumPtTrigEtaPhi(0), |
9b01dc66 | 108 | fhConeSumPtCellTrackTrigEtaPhi(0), |
23130491 | 109 | fhConeSumPtEtaBandUEClusterTrigEtaPhi(0), fhConeSumPtPhiBandUEClusterTrigEtaPhi(0), |
110 | fhConeSumPtEtaBandUETrackTrigEtaPhi(0), fhConeSumPtPhiBandUETrackTrigEtaPhi(0), | |
67b42f6d | 111 | fhConeSumPtEtaBandUECellTrigEtaPhi(0), fhConeSumPtPhiBandUECellTrigEtaPhi(0), |
23130491 | 112 | fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0), |
113 | fhConeSumPtEtaUESubTrigEtaPhi(0), fhConeSumPtPhiUESubTrigEtaPhi(0), | |
9b01dc66 | 114 | fhConeSumPtEtaUESubTrackCell(0), fhConeSumPtPhiUESubTrackCell(0), |
115 | fhConeSumPtEtaUESubTrackCellTrigEtaPhi(0), fhConeSumPtPhiUESubTrackCellTrigEtaPhi(0), | |
23130491 | 116 | fhConeSumPtEtaUESubCluster(0), fhConeSumPtPhiUESubCluster(0), |
117 | fhConeSumPtEtaUESubClusterTrigEtaPhi(0), fhConeSumPtPhiUESubClusterTrigEtaPhi(0), | |
9b01dc66 | 118 | fhConeSumPtEtaUESubCell(0), fhConeSumPtPhiUESubCell(0), |
119 | fhConeSumPtEtaUESubCellTrigEtaPhi(0), fhConeSumPtPhiUESubCellTrigEtaPhi(0), | |
23130491 | 120 | fhConeSumPtEtaUESubTrack(0), fhConeSumPtPhiUESubTrack(0), |
121 | fhConeSumPtEtaUESubTrackTrigEtaPhi(0), fhConeSumPtPhiUESubTrackTrigEtaPhi(0), | |
122 | fhFractionTrackOutConeEta(0), fhFractionTrackOutConeEtaTrigEtaPhi(0), | |
123 | fhFractionClusterOutConeEta(0), fhFractionClusterOutConeEtaTrigEtaPhi(0), | |
124 | fhFractionClusterOutConePhi(0), fhFractionClusterOutConePhiTrigEtaPhi(0), | |
9b01dc66 | 125 | fhFractionCellOutConeEta(0), fhFractionCellOutConeEtaTrigEtaPhi(0), |
126 | fhFractionCellOutConePhi(0), fhFractionCellOutConePhiTrigEtaPhi(0), | |
dc1966bb | 127 | fhConeSumPtClustervsTrack(0), fhConeSumPtClusterTrackFrac(0), |
814d1087 | 128 | fhConeSumPtEtaUESubClustervsTrack(0), fhConeSumPtPhiUESubClustervsTrack(0), |
9b01dc66 | 129 | fhConeSumPtCellvsTrack(0), |
130 | fhConeSumPtEtaUESubCellvsTrack(0), fhConeSumPtPhiUESubCellvsTrack(0), | |
814d1087 | 131 | fhEtaBandClustervsTrack(0), fhPhiBandClustervsTrack(0), |
132 | fhEtaBandNormClustervsTrack(0), fhPhiBandNormClustervsTrack(0), | |
9b01dc66 | 133 | fhEtaBandCellvsTrack(0), fhPhiBandCellvsTrack(0), |
134 | fhEtaBandNormCellvsTrack(0), fhPhiBandNormCellvsTrack(0), | |
b5d10017 | 135 | fhConeSumPtSubvsConeSumPtTotPhiTrack(0), fhConeSumPtSubNormvsConeSumPtTotPhiTrack(0), |
136 | fhConeSumPtSubvsConeSumPtTotEtaTrack(0), fhConeSumPtSubNormvsConeSumPtTotEtaTrack(0), | |
137 | fhConeSumPtSubvsConeSumPtTotPhiCluster(0), fhConeSumPtSubNormvsConeSumPtTotPhiCluster(0), | |
138 | fhConeSumPtSubvsConeSumPtTotEtaCluster(0), fhConeSumPtSubNormvsConeSumPtTotEtaCluster(0), | |
139 | fhConeSumPtSubvsConeSumPtTotPhiCell(0), fhConeSumPtSubNormvsConeSumPtTotPhiCell(0), | |
140 | fhConeSumPtSubvsConeSumPtTotEtaCell(0), fhConeSumPtSubNormvsConeSumPtTotEtaCell(0), | |
727a309a | 141 | fhConeSumPtVSUETracksEtaBand(0), fhConeSumPtVSUETracksPhiBand(0), |
142 | fhConeSumPtVSUEClusterEtaBand(0), fhConeSumPtVSUEClusterPhiBand(0), | |
9ecbb69a | 143 | fhPtPrimMCPi0DecayPairOutOfCone(0), |
144 | fhPtPrimMCPi0DecayPairOutOfAcceptance(0), | |
145 | fhPtPrimMCPi0DecayPairOutOfAcceptanceNoOverlap(0), | |
146 | fhPtPrimMCPi0DecayPairAcceptInConeLowPt(0), | |
147 | fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlap(0), | |
148 | fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlapCaloE(0), | |
9cfeb6de | 149 | fhPtPrimMCPi0DecayPairNoOverlap(0), |
9ecbb69a | 150 | fhPtPrimMCPi0DecayIsoPairOutOfCone(0), |
151 | fhPtPrimMCPi0DecayIsoPairOutOfAcceptance(0), | |
152 | fhPtPrimMCPi0DecayIsoPairOutOfAcceptanceNoOverlap(0), | |
153 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPt(0), | |
154 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlap(0), | |
155 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlapCaloE(0), | |
7eedb724 | 156 | fhPtPrimMCPi0DecayIsoPairNoOverlap(0), |
9cfeb6de | 157 | fhPtPrimMCPi0Overlap(0), fhPtPrimMCPi0IsoOverlap(0), |
7a5b478e | 158 | fhPtLeadConeBin(0), fhSumPtConeBin(0), |
159 | fhPtLeadConeBinMC(0), fhSumPtConeBinMC(0), | |
160 | fhPtLeadConeBinDecay(0), fhSumPtConeBinDecay(0), | |
dc1966bb | 161 | fhPtLeadConeBinLambda0(0), fhSumPtConeBinLambda0(0), |
162 | fhPtLeadConeBinLambda0MC(0), fhSumPtConeBinLambda0MC(0), | |
d125fd57 | 163 | fhPtTrigBinPtLeadCone(0), fhPtTrigBinSumPtCone(0), |
164 | fhPtTrigBinPtLeadConeMC(0), fhPtTrigBinSumPtConeMC(0), | |
165 | fhPtTrigBinPtLeadConeDecay(0), fhPtTrigBinSumPtConeDecay(0), | |
5988ecc8 | 166 | fhPtTrigBinLambda0vsPtLeadCone(0), fhPtTrigBinLambda0vsSumPtCone(0), |
167 | fhPtTrigBinLambda0vsPtLeadConeMC(0), fhPtTrigBinLambda0vsSumPtConeMC(0), | |
db6fb352 | 168 | // Number of local maxima in cluster |
ca134929 | 169 | fhNLocMax(), |
170 | fhELambda0LocMax1(), fhELambda1LocMax1(), | |
171 | fhELambda0LocMax2(), fhELambda1LocMax2(), | |
172 | fhELambda0LocMaxN(), fhELambda1LocMaxN(), | |
2ad19c3d | 173 | // PileUp |
17af6e24 | 174 | fhEIsoPileUp(), fhPtIsoPileUp(), |
175 | fhENoIsoPileUp(), fhPtNoIsoPileUp(), | |
2ad19c3d | 176 | fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0), |
177 | fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0), | |
178 | fhTimeNPileUpVertContributors(0), | |
98287a43 | 179 | fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0) |
1a31a9ab | 180 | { |
181 | //default ctor | |
182 | ||
183 | //Initialize parameters | |
184 | InitParameters(); | |
db6fb352 | 185 | |
b5dbb99b | 186 | for(Int_t i = 0; i < 5 ; i++) |
dc9c6e78 | 187 | { |
188 | fConeSizes[i] = 0 ; | |
189 | ||
d24561b6 | 190 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
f5b702a0 | 191 | fhSumPtLeadingPtMC[imc][i] = 0 ; |
1a31a9ab | 192 | |
b5dbb99b | 193 | for(Int_t j = 0; j < 5 ; j++) |
dc9c6e78 | 194 | { |
23130491 | 195 | fhPtThresIsolated [i][j] = 0 ; |
196 | fhPtFracIsolated [i][j] = 0 ; | |
f5b702a0 | 197 | fhSumPtIsolated [i][j] = 0 ; |
23130491 | 198 | |
199 | fhEtaPhiPtThresIso [i][j] = 0 ; | |
200 | fhEtaPhiPtThresDecayIso [i][j] = 0 ; | |
201 | fhPtPtThresDecayIso [i][j] = 0 ; | |
202 | ||
203 | fhEtaPhiPtFracIso [i][j] = 0 ; | |
204 | fhEtaPhiPtFracDecayIso [i][j] = 0 ; | |
205 | fhPtPtFracDecayIso [i][j] = 0 ; | |
206 | fhPtPtSumDecayIso [i][j] = 0 ; | |
207 | fhPtSumDensityIso [i][j] = 0 ; | |
208 | fhPtSumDensityDecayIso [i][j] = 0 ; | |
209 | fhEtaPhiSumDensityIso [i][j] = 0 ; | |
210 | fhEtaPhiSumDensityDecayIso [i][j] = 0 ; | |
211 | fhPtFracPtSumIso [i][j] = 0 ; | |
212 | fhPtFracPtSumDecayIso [i][j] = 0 ; | |
213 | fhEtaPhiFracPtSumIso [i][j] = 0 ; | |
214 | fhEtaPhiFracPtSumDecayIso [i][j] = 0 ; | |
db6fb352 | 215 | |
d24561b6 | 216 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
124bffb3 | 217 | { |
218 | fhPtThresIsolatedMC[imc][i][j] = 0 ; | |
219 | fhPtFracIsolatedMC [imc][i][j] = 0 ; | |
f5b702a0 | 220 | fhSumPtIsolatedMC [imc][i][j] = 0 ; |
124bffb3 | 221 | |
222 | } | |
dc9c6e78 | 223 | } |
224 | } | |
1a31a9ab | 225 | |
34861433 | 226 | for(Int_t ibit =0; ibit < 4; ibit++) |
8913c8c4 | 227 | { |
34861433 | 228 | for(Int_t iso =0; iso < 2; iso++) |
8913c8c4 | 229 | { |
93518258 | 230 | fhPtDecay [iso][ibit] = 0; |
231 | fhEtaPhiDecay [iso][ibit] = 0; | |
232 | fhPtLambda0Decay[iso][ibit] = 0; | |
233 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) | |
234 | fhPtDecayMC[iso][ibit][imc] = 0; | |
8913c8c4 | 235 | } |
236 | } | |
237 | ||
db6fb352 | 238 | for(Int_t i = 0; i < 5 ; i++) |
dc9c6e78 | 239 | { |
240 | fPtFractions [i] = 0 ; | |
db6fb352 | 241 | fPtThresholds [i] = 0 ; |
242 | fSumPtThresholds[i] = 0 ; | |
ddaa6315 | 243 | |
244 | fhSumPtLeadingPt [i] = 0 ; | |
245 | fhPtLeadingPt [i] = 0 ; | |
246 | fhPerpSumPtLeadingPt[i] = 0 ; | |
6ae3345d | 247 | fhPerpPtLeadingPt [i] = 0 ; |
dc9c6e78 | 248 | } |
249 | ||
d24561b6 | 250 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
124bffb3 | 251 | { |
252 | fhPtNoIsoMC [imc] = 0; | |
253 | fhPtIsoMC [imc] = 0; | |
254 | fhPhiIsoMC [imc] = 0; | |
255 | fhEtaIsoMC [imc] = 0; | |
256 | fhPtLambda0MC[imc][0] = 0; | |
257 | fhPtLambda0MC[imc][1] = 0; | |
258 | } | |
ca134929 | 259 | |
260 | for(Int_t i = 0; i < 2 ; i++) | |
dc9c6e78 | 261 | { |
ddaa6315 | 262 | fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ; |
263 | fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ; | |
c12a38d9 | 264 | fhELambda0 [i] = 0 ; fhPtLambda0 [i] = 0 ; //fhELambda1 [i] = 0 ; |
265 | fhELambda0TRD [i] = 0 ; fhPtLambda0TRD [i] = 0 ; //fhELambda1TRD [i] = 0 ; | |
ca134929 | 266 | |
267 | // Number of local maxima in cluster | |
268 | fhNLocMax [i] = 0 ; | |
269 | fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ; | |
270 | fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ; | |
271 | fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ; | |
dc9c6e78 | 272 | } |
273 | ||
dc9c6e78 | 274 | // Acceptance |
d24561b6 | 275 | for(Int_t i = 0; i < fgkNmcPrimTypes; i++) |
dc9c6e78 | 276 | { |
277 | fhPtPrimMCiso[i] = 0; | |
278 | fhEPrimMC [i] = 0; | |
d24561b6 | 279 | fhPtPrimMC [i] = 0; |
dc9c6e78 | 280 | fhEtaPrimMC [i] = 0; |
db4ffddf | 281 | fhPhiPrimMC [i] = 0; |
dc9c6e78 | 282 | } |
db6fb352 | 283 | |
17af6e24 | 284 | // Pile-Up |
285 | ||
286 | for(Int_t i = 0 ; i < 7 ; i++) | |
287 | { | |
288 | fhPtInConePileUp[i] = 0 ; | |
289 | fhEIsoPileUp [i] = 0 ; | |
290 | fhPtIsoPileUp [i] = 0 ; | |
291 | fhENoIsoPileUp [i] = 0 ; | |
292 | fhPtNoIsoPileUp [i] = 0 ; | |
293 | } | |
1a31a9ab | 294 | } |
295 | ||
23130491 | 296 | //_______________________________________________________________________________________________ |
297 | void AliAnaParticleIsolation::CalculateCaloUEBand(AliAODPWG4ParticleCorrelation * pCandidate, | |
298 | Float_t & etaBandPtSum, Float_t & phiBandPtSum) | |
299 | { | |
300 | // Get the clusters pT or sum of pT in phi/eta bands or at 45 degrees from trigger | |
301 | ||
72433939 | 302 | if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ; |
303 | ||
23130491 | 304 | Float_t conesize = GetIsolationCut()->GetConeSize(); |
23130491 | 305 | |
6ae3345d | 306 | //Select the Calorimeter |
23130491 | 307 | TObjArray * pl = 0x0; |
32bff2da | 308 | if (GetCalorimeter() == kPHOS ) |
23130491 | 309 | pl = GetPHOSClusters(); |
32bff2da | 310 | else if (GetCalorimeter() == kEMCAL) |
23130491 | 311 | pl = GetEMCALClusters(); |
312 | ||
313 | if(!pl) return ; | |
314 | ||
315 | //Get vertex for cluster momentum calculation | |
316 | Double_t vertex[] = {0,0,0} ; //vertex ; | |
317 | if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) | |
318 | GetReader()->GetVertex(vertex); | |
319 | ||
320 | Float_t ptTrig = pCandidate->Pt() ; | |
321 | Float_t phiTrig = pCandidate->Phi(); | |
322 | Float_t etaTrig = pCandidate->Eta(); | |
323 | ||
324 | for(Int_t icluster=0; icluster < pl->GetEntriesFast(); icluster++) | |
325 | { | |
326 | AliVCluster* cluster = (AliVCluster *) pl->At(icluster); | |
327 | ||
328 | if(!cluster) | |
329 | { | |
330 | printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Cluster not available?"); | |
331 | continue; | |
332 | } | |
6ae3345d | 333 | |
23130491 | 334 | //Do not count the candidate (photon or pi0) or the daughters of the candidate |
335 | if(cluster->GetID() == pCandidate->GetCaloLabel(0) || | |
336 | cluster->GetID() == pCandidate->GetCaloLabel(1) ) continue ; | |
337 | ||
72433939 | 338 | //Remove matched clusters to tracks if Neutral and Track info is used |
339 | if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged && | |
6ae3345d | 340 | IsTrackMatched(cluster,GetReader()->GetInputEvent())) continue ; |
73378bcc | 341 | |
32bff2da | 342 | cluster->GetMomentum(fMomentum,vertex) ;//Assume that come from vertex in straight line |
23130491 | 343 | |
344 | //exclude particles in cone | |
32bff2da | 345 | Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, fMomentum.Eta(), fMomentum.Phi()); |
23130491 | 346 | |
9004af1c | 347 | // histo of eta and phi for all clusters |
32bff2da | 348 | fhEtaPhiCluster->Fill(fMomentum.Eta(), fMomentum.Phi()); |
9004af1c | 349 | if(rad < conesize) { |
350 | // histos for all clusters in cone | |
32bff2da | 351 | fhEtaPhiInConeCluster->Fill(fMomentum.Eta(), fMomentum.Phi()); |
6ae3345d | 352 | continue ; |
9004af1c | 353 | } |
23130491 | 354 | //fill histogram for UE in phi band in EMCal acceptance |
32bff2da | 355 | if(fMomentum.Eta() > (etaTrig-conesize) && fMomentum.Eta() < (etaTrig+conesize)) |
23130491 | 356 | { |
32bff2da | 357 | phiBandPtSum+=fMomentum.Pt(); |
358 | fhPhiBandCluster->Fill(fMomentum.Eta(),fMomentum.Phi()); | |
9004af1c | 359 | |
6ae3345d | 360 | } |
23130491 | 361 | |
362 | //fill histogram for UE in eta band in EMCal acceptance | |
32bff2da | 363 | if(fMomentum.Phi() > (phiTrig-conesize) && fMomentum.Phi() < (phiTrig+conesize)) |
23130491 | 364 | { |
32bff2da | 365 | etaBandPtSum+=fMomentum.Pt(); |
366 | fhEtaBandCluster->Fill(fMomentum.Eta(),fMomentum.Phi()); | |
23130491 | 367 | } |
368 | } | |
369 | ||
814d1087 | 370 | fhConeSumPtEtaBandUECluster ->Fill(ptTrig , etaBandPtSum); |
371 | fhConeSumPtPhiBandUECluster ->Fill(ptTrig , phiBandPtSum); | |
23130491 | 372 | fhConeSumPtEtaBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum); |
373 | fhConeSumPtPhiBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum); | |
6ae3345d | 374 | |
23130491 | 375 | } |
376 | ||
b5d10017 | 377 | //________________________________________________________________________________________________ |
9b01dc66 | 378 | void AliAnaParticleIsolation::CalculateCaloCellUEBand(AliAODPWG4ParticleCorrelation * pCandidate, |
379 | Float_t & etaBandPtSumCells, Float_t & phiBandPtSumCells) | |
380 | { | |
381 | // Get the cells amplitude or sum of amplitude in phi/eta bands or at 45 degrees from trigger | |
382 | ||
383 | if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ; | |
b5d10017 | 384 | |
385 | Float_t conesize = GetIsolationCut()->GetConeSize(); | |
9b01dc66 | 386 | |
387 | Float_t phiTrig = pCandidate->Phi(); | |
b5d10017 | 388 | if(phiTrig<0) phiTrig += TMath::TwoPi(); |
9b01dc66 | 389 | Float_t etaTrig = pCandidate->Eta(); |
9b01dc66 | 390 | |
32bff2da | 391 | if(pCandidate->GetDetectorTag()==kEMCAL) |
9b01dc66 | 392 | { |
b5d10017 | 393 | AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance(); |
394 | Int_t absId = -999; | |
395 | ||
396 | if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId)) | |
e0ddcd8e | 397 | { |
b5d10017 | 398 | if(!eGeom->CheckAbsCellId(absId)) return ; |
9b01dc66 | 399 | |
b5d10017 | 400 | // Get absolute (col,row) of trigger particle |
401 | Int_t nSupMod = eGeom->GetSuperModuleNumber(absId); | |
402 | Int_t nModule = -1; | |
403 | Int_t imEta=-1, imPhi=-1; | |
404 | Int_t ieta =-1, iphi =-1; | |
6ae3345d | 405 | |
b5d10017 | 406 | if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta)) |
407 | { | |
408 | eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta); | |
409 | ||
410 | Int_t colTrig = ieta; | |
411 | if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + ieta ; | |
412 | Int_t rowTrig = iphi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2); | |
413 | ||
414 | Int_t sqrSize = int(conesize/0.0143); | |
415 | ||
416 | AliVCaloCells * cells = GetEMCALCells(); | |
417 | ||
10a65cc6 | 418 | Int_t nTotalRows = AliEMCALGeoParams::fgkEMCALRows*16/3 ; // 24*(16/3) 5 full-size Sectors (2 SM) + 1 one-third Sector (2 SM) |
419 | Int_t nTotalCols = 2*AliEMCALGeoParams::fgkEMCALCols; | |
6ae3345d | 420 | // printf("nTotalRows %i, nTotalCols %i\n",nTotalRows,nTotalCols); |
b5d10017 | 421 | // Loop on cells in eta band |
6ae3345d | 422 | |
10a65cc6 | 423 | Int_t irowmin = rowTrig-sqrSize; |
6ae3345d | 424 | if(irowmin<0) irowmin=0; |
425 | Int_t irowmax = rowTrig+sqrSize; | |
426 | if(irowmax>AliEMCALGeoParams::fgkEMCALRows) irowmax=AliEMCALGeoParams::fgkEMCALRows; | |
427 | ||
428 | ||
10a65cc6 | 429 | for(Int_t irow = irowmin; irow <irowmax; irow++) |
b5d10017 | 430 | { |
10a65cc6 | 431 | for(Int_t icol = 0; icol < nTotalCols; icol++) |
b5d10017 | 432 | { |
433 | Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows); | |
6ae3345d | 434 | if(inSector==5) continue; |
435 | Int_t inSupMod = -1; | |
b5d10017 | 436 | Int_t icolLoc = -1; |
437 | if(icol < AliEMCALGeoParams::fgkEMCALCols) | |
438 | { | |
ea051413 | 439 | inSupMod = 2*inSector + 1; |
b5d10017 | 440 | icolLoc = icol; |
441 | } | |
442 | else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1) | |
443 | { | |
ea051413 | 444 | inSupMod = 2*inSector; |
b5d10017 | 445 | icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols; |
446 | } | |
447 | ||
b5c8089d | 448 | Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ; |
6ae3345d | 449 | |
b5d10017 | 450 | // Exclude cells in cone |
9004af1c | 451 | if(TMath::Abs(icol-colTrig) < sqrSize || TMath::Abs(irow-rowTrig) < sqrSize){ |
6ae3345d | 452 | continue ; |
9004af1c | 453 | } |
b5d10017 | 454 | Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc); |
455 | if(!eGeom->CheckAbsCellId(iabsId)) continue; | |
456 | etaBandPtSumCells += cells->GetCellAmplitude(iabsId); | |
6ae3345d | 457 | fhEtaBandCell->Fill(colTrig,rowTrig); |
458 | ||
459 | // printf("ETA inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, etaBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,etaBandPtSumCells); | |
460 | } | |
b5d10017 | 461 | } |
6ae3345d | 462 | Int_t icolmin = colTrig-sqrSize; |
463 | if(icolmin<0) icolmin=0; | |
464 | Int_t icolmax = colTrig+sqrSize; | |
465 | if(icolmax>AliEMCALGeoParams::fgkEMCALCols) icolmax=AliEMCALGeoParams::fgkEMCALCols; | |
10a65cc6 | 466 | |
b5d10017 | 467 | // Loop on cells in phi band |
10a65cc6 | 468 | for(Int_t icol = icolmin; icol < icolmax; icol++) |
b5d10017 | 469 | { |
470 | for(Int_t irow = 0; irow < nTotalRows; irow++) | |
6ae3345d | 471 | { |
b5d10017 | 472 | Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows); |
6ae3345d | 473 | if(inSector==5) continue; |
b5d10017 | 474 | Int_t inSupMod = -1; |
475 | Int_t icolLoc = -1; | |
6ae3345d | 476 | // printf("icol %i, irow %i, inSector %i\n",icol,irow ,inSector); |
b5d10017 | 477 | if(icol < AliEMCALGeoParams::fgkEMCALCols) |
478 | { | |
6ae3345d | 479 | // printf("icol < AliEMCALGeoParams::fgkEMCALCols %i\n",AliEMCALGeoParams::fgkEMCALCols ); |
ea051413 | 480 | inSupMod = 2*inSector + 1; |
b5d10017 | 481 | icolLoc = icol; |
482 | } | |
483 | else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1) | |
484 | { | |
6ae3345d | 485 | // printf("icol > AliEMCALGeoParams::fgkEMCALCols -1 %i\n",AliEMCALGeoParams::fgkEMCALCols -1 ); |
486 | inSupMod = 2*inSector; | |
b5d10017 | 487 | icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols; |
488 | } | |
489 | ||
ea051413 | 490 | Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ; // Stesso problema di sopra // |
6ae3345d | 491 | |
b5d10017 | 492 | // Exclude cells in cone |
10a65cc6 | 493 | if(TMath::Abs(icol-colTrig) < sqrSize) { |
6ae3345d | 494 | //printf("TMath::Abs(icol-colTrig) %i < sqrSize %i\n",TMath::Abs(icol-colTrig) ,sqrSize);continue ; |
495 | } | |
10a65cc6 | 496 | if(TMath::Abs(irow-rowTrig) < sqrSize) { |
6ae3345d | 497 | //printf("TMath::Abs(irow-rowTrig) %i < sqrSize %i\n",TMath::Abs(irow-rowTrig) ,sqrSize);continue ; |
498 | } | |
b5d10017 | 499 | |
500 | Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc); | |
10a65cc6 | 501 | if(!eGeom->CheckAbsCellId(iabsId)) {printf("!eGeom->CheckAbsCellId(iabsId=%i) inSupMod %i irowLoc %i icolLoc %i \n",iabsId,inSupMod, irowLoc, icolLoc);continue;} |
b5d10017 | 502 | phiBandPtSumCells += cells->GetCellAmplitude(iabsId); |
6ae3345d | 503 | fhPhiBandCell->Fill(colTrig,rowTrig); |
504 | //printf("inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, phiBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,phiBandPtSumCells); | |
505 | } | |
b5d10017 | 506 | } |
507 | } | |
9b01dc66 | 508 | } |
509 | } | |
510 | ||
511 | Float_t ptTrig = pCandidate->Pt(); | |
512 | ||
513 | fhConeSumPtEtaBandUECell ->Fill(ptTrig , etaBandPtSumCells); | |
514 | fhConeSumPtPhiBandUECell ->Fill(ptTrig , phiBandPtSumCells); | |
515 | fhConeSumPtEtaBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSumCells); | |
516 | fhConeSumPtPhiBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSumCells); | |
517 | ||
518 | } | |
519 | ||
23130491 | 520 | //________________________________________________________________________________________________ |
521 | void AliAnaParticleIsolation::CalculateTrackUEBand(AliAODPWG4ParticleCorrelation * pCandidate, | |
522 | Float_t & etaBandPtSum, Float_t & phiBandPtSum) | |
523 | { | |
524 | // Get the track pT or sum of pT in phi/eta bands or at 45 degrees from trigger | |
525 | ||
72433939 | 526 | if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ; |
527 | ||
23130491 | 528 | Float_t conesize = GetIsolationCut()->GetConeSize(); |
529 | ||
530 | Double_t sumptPerp= 0. ; | |
531 | Float_t ptTrig = pCandidate->Pt() ; | |
532 | Float_t phiTrig = pCandidate->Phi(); | |
533 | Float_t etaTrig = pCandidate->Eta(); | |
534 | ||
535 | TObjArray * trackList = GetCTSTracks() ; | |
536 | for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++) | |
537 | { | |
538 | AliVTrack* track = (AliVTrack *) trackList->At(itrack); | |
539 | ||
540 | if(!track) | |
541 | { | |
727a309a | 542 | printf("AliAnaParticleIsolation::CalculateTrackUEBand() - Track not available?"); |
23130491 | 543 | continue; |
544 | } | |
545 | ||
546 | //Do not count the candidate (pion, conversion photon) or the daughters of the candidate | |
547 | if(track->GetID() == pCandidate->GetTrackLabel(0) || track->GetID() == pCandidate->GetTrackLabel(1) || | |
548 | track->GetID() == pCandidate->GetTrackLabel(2) || track->GetID() == pCandidate->GetTrackLabel(3) ) continue ; | |
6ae3345d | 549 | |
550 | // histo of eta:phi for all tracks | |
9004af1c | 551 | fhEtaPhiTrack->Fill(track->Eta(),track->Phi()); |
6ae3345d | 552 | |
23130491 | 553 | //exclude particles in cone |
554 | Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, track->Eta(), track->Phi()); | |
9004af1c | 555 | if(rad < conesize) { |
556 | // histo of eta:phi for all tracks in cone | |
6ae3345d | 557 | fhEtaPhiInConeTrack->Fill(track->Eta(),track->Phi()); |
9004af1c | 558 | continue ; |
559 | } | |
23130491 | 560 | |
561 | //fill histogram for UE in phi band | |
562 | if(track->Eta() > (etaTrig-conesize) && track->Eta() < (etaTrig+conesize)) | |
563 | { | |
564 | phiBandPtSum+=track->Pt(); | |
565 | fhPhiBandTrack->Fill(track->Eta(),track->Phi()); | |
566 | } | |
567 | ||
568 | //fill histogram for UE in eta band in EMCal acceptance | |
6ae3345d | 569 | if(track->Phi() > (phiTrig-conesize) && track->Phi() < (phiTrig+conesize)) |
23130491 | 570 | { |
571 | etaBandPtSum+=track->Pt(); | |
572 | fhEtaBandTrack->Fill(track->Eta(),track->Phi()); | |
573 | } | |
574 | ||
575 | //fill the histograms at +-45 degrees in phi from trigger particle, perpedicular to trigger axis in phi | |
576 | Double_t dPhi = phiTrig - track->Phi() + TMath::PiOver2(); | |
577 | Double_t dEta = etaTrig - track->Eta(); | |
578 | Double_t arg = dPhi*dPhi + dEta*dEta; | |
579 | if(TMath::Sqrt(arg) < conesize) | |
580 | { | |
581 | fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py())); | |
582 | sumptPerp+=track->Pt(); | |
583 | } | |
584 | ||
585 | dPhi = phiTrig - track->Phi() - TMath::PiOver2(); | |
586 | arg = dPhi*dPhi + dEta*dEta; | |
587 | if(TMath::Sqrt(arg) < conesize) | |
588 | { | |
589 | fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py())); | |
590 | sumptPerp+=track->Pt(); | |
591 | } | |
592 | } | |
593 | ||
814d1087 | 594 | fhPerpConeSumPt ->Fill(ptTrig , sumptPerp ); |
595 | fhConeSumPtEtaBandUETrack ->Fill(ptTrig , etaBandPtSum); | |
596 | fhConeSumPtPhiBandUETrack ->Fill(ptTrig , phiBandPtSum); | |
23130491 | 597 | fhConeSumPtEtaBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum); |
598 | fhConeSumPtPhiBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum); | |
6ae3345d | 599 | |
23130491 | 600 | } |
601 | ||
0e7a6570 | 602 | |
0e7a6570 | 603 | |
b94e038e | 604 | //_____________________________________________________________________________________________________________________________________ |
605 | void AliAnaParticleIsolation::CalculateNormalizeUEBandPerUnitArea(AliAODPWG4ParticleCorrelation * pCandidate, Float_t coneptsumCluster, | |
606 | Float_t coneptsumCell, Float_t coneptsumTrack, | |
607 | Float_t &etaBandptsumTrackNorm, Float_t &etaBandptsumClusterNorm) | |
23130491 | 608 | { |
609 | //normalize phi/eta band per area unit | |
6ae3345d | 610 | |
23130491 | 611 | Float_t etaUEptsumTrack = 0 ; |
612 | Float_t phiUEptsumTrack = 0 ; | |
613 | Float_t etaUEptsumCluster = 0 ; | |
614 | Float_t phiUEptsumCluster = 0 ; | |
9b01dc66 | 615 | Float_t etaUEptsumCell = 0 ; |
616 | Float_t phiUEptsumCell = 0 ; | |
617 | ||
72433939 | 618 | Int_t partTypeInCone = GetIsolationCut()->GetParticleTypeInCone(); |
23130491 | 619 | |
23130491 | 620 | // Do the normalization |
621 | ||
622 | Float_t conesize = GetIsolationCut()->GetConeSize(); | |
623 | Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area | |
624 | Float_t ptTrig = pCandidate->Pt() ; | |
625 | Float_t phiTrig = pCandidate->Phi(); | |
626 | Float_t etaTrig = pCandidate->Eta(); | |
727a309a | 627 | |
6ae3345d | 628 | |
23130491 | 629 | // ------ // |
630 | // Tracks // | |
631 | // ------ // | |
72433939 | 632 | Float_t phiUEptsumTrackNorm = 0 ; |
633 | Float_t etaUEptsumTrackNorm = 0 ; | |
634 | Float_t coneptsumTrackSubPhi = 0 ; | |
635 | Float_t coneptsumTrackSubEta = 0 ; | |
b5d10017 | 636 | Float_t coneptsumTrackSubPhiNorm = 0 ; |
637 | Float_t coneptsumTrackSubEtaNorm = 0 ; | |
727a309a | 638 | etaBandptsumTrackNorm = 0 ; |
6ae3345d | 639 | |
72433939 | 640 | if( partTypeInCone!=AliIsolationCut::kOnlyNeutral ) |
23130491 | 641 | { |
727a309a | 642 | // Sum the pT in the phi or eta band for clusters or tracks |
643 | CalculateTrackUEBand (pCandidate,etaUEptsumTrack ,phiUEptsumTrack );// rajouter ici l'histo eta phi | |
6ae3345d | 644 | |
645 | //Fill histos | |
646 | fhConeSumPtVSUETracksEtaBand->Fill(coneptsumTrack,etaUEptsumTrack); | |
647 | fhConeSumPtVSUETracksPhiBand->Fill(coneptsumTrack,phiUEptsumTrack); | |
648 | ||
649 | ||
727a309a | 650 | Float_t correctConeSumTrack = 1; |
651 | Float_t correctConeSumTrackPhi = 1; | |
6ae3345d | 652 | |
727a309a | 653 | GetIsolationCut()->CalculateUEBandTrackNormalization(GetReader(),etaTrig, phiTrig, |
6ae3345d | 654 | phiUEptsumTrack,etaUEptsumTrack, |
655 | phiUEptsumTrackNorm,etaUEptsumTrackNorm, | |
656 | correctConeSumTrack,correctConeSumTrackPhi); | |
657 | ||
727a309a | 658 | coneptsumTrackSubPhi = coneptsumTrack - phiUEptsumTrackNorm; |
659 | coneptsumTrackSubEta = coneptsumTrack - etaUEptsumTrackNorm; | |
6ae3345d | 660 | |
727a309a | 661 | etaBandptsumTrackNorm = etaUEptsumTrackNorm; |
72433939 | 662 | |
663 | fhConeSumPtPhiUESubTrack ->Fill(ptTrig , coneptsumTrackSubPhi); | |
664 | fhConeSumPtPhiUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubPhi); | |
665 | fhConeSumPtEtaUESubTrack ->Fill(ptTrig , coneptsumTrackSubEta); | |
666 | fhConeSumPtEtaUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubEta); | |
667 | ||
668 | fhFractionTrackOutConeEta ->Fill(ptTrig , correctConeSumTrack-1); | |
669 | fhFractionTrackOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig,correctConeSumTrack-1); | |
b5d10017 | 670 | |
727a309a | 671 | if(coneptsumTrack > 0) |
672 | { | |
673 | coneptsumTrackSubPhiNorm = coneptsumTrackSubPhi/coneptsumTrack; | |
10a65cc6 | 674 | coneptsumTrackSubEtaNorm = coneptsumTrackSubEta/coneptsumTrack; |
675 | } | |
727a309a | 676 | |
b5d10017 | 677 | fhConeSumPtSubvsConeSumPtTotPhiTrack ->Fill(coneptsumTrack,coneptsumTrackSubPhi); |
678 | fhConeSumPtSubNormvsConeSumPtTotPhiTrack->Fill(coneptsumTrack,coneptsumTrackSubPhiNorm); | |
679 | fhConeSumPtSubvsConeSumPtTotEtaTrack ->Fill(coneptsumTrack,coneptsumTrackSubEta); | |
680 | fhConeSumPtSubNormvsConeSumPtTotEtaTrack->Fill(coneptsumTrack,coneptsumTrackSubEtaNorm); | |
681 | ||
72433939 | 682 | } |
23130491 | 683 | |
9b01dc66 | 684 | // ------------------------ // |
685 | // EMCal Clusters and cells // | |
686 | // ------------------------ // | |
72433939 | 687 | Float_t phiUEptsumClusterNorm = 0 ; |
688 | Float_t etaUEptsumClusterNorm = 0 ; | |
689 | Float_t coneptsumClusterSubPhi = 0 ; | |
690 | Float_t coneptsumClusterSubEta = 0 ; | |
b5d10017 | 691 | Float_t coneptsumClusterSubPhiNorm = 0 ; |
692 | Float_t coneptsumClusterSubEtaNorm = 0 ; | |
9b01dc66 | 693 | Float_t phiUEptsumCellNorm = 0 ; |
694 | Float_t etaUEptsumCellNorm = 0 ; | |
695 | Float_t coneptsumCellSubPhi = 0 ; | |
696 | Float_t coneptsumCellSubEta = 0 ; | |
b5d10017 | 697 | Float_t coneptsumCellSubPhiNorm = 0 ; |
698 | Float_t coneptsumCellSubEtaNorm = 0 ; | |
727a309a | 699 | etaBandptsumClusterNorm = 0; |
6ae3345d | 700 | |
72433939 | 701 | if( partTypeInCone!=AliIsolationCut::kOnlyCharged ) |
23130491 | 702 | { |
977564f5 | 703 | |
9b01dc66 | 704 | // -------------- // |
705 | // EMCal clusters // | |
706 | // -------------- // | |
72433939 | 707 | |
727a309a | 708 | // Sum the pT in the phi or eta band for clusters or tracks |
709 | CalculateCaloUEBand (pCandidate,etaUEptsumCluster,phiUEptsumCluster);// rajouter ici l'histo eta phi | |
977564f5 | 710 | |
711 | //Fill histos | |
712 | fhConeSumPtVSUEClusterEtaBand->Fill(coneptsumCluster,etaUEptsumCluster); | |
713 | fhConeSumPtVSUEClusterPhiBand->Fill(coneptsumCluster,phiUEptsumCluster); | |
714 | ||
715 | ||
727a309a | 716 | Float_t correctConeSumClusterEta = 1; |
72433939 | 717 | Float_t correctConeSumClusterPhi = 1; |
977564f5 | 718 | |
727a309a | 719 | GetIsolationCut()->CalculateUEBandClusterNormalization(GetReader(),etaTrig, phiTrig, |
720 | phiUEptsumCluster,etaUEptsumCluster, | |
721 | phiUEptsumClusterNorm,etaUEptsumClusterNorm, | |
722 | correctConeSumClusterEta,correctConeSumClusterPhi); | |
72433939 | 723 | |
724 | // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ... | |
727a309a | 725 | // Comment if not used |
726 | // Float_t coneBadCellsCoeff =1; | |
727 | // Float_t etaBandBadCellsCoeff=1; | |
728 | // Float_t phiBandBadCellsCoeff=1; | |
729 | // GetIsolationCut()->GetCoeffNormBadCell(pCandidate, GetReader(),coneBadCellsCoeff,etaBandBadCellsCoeff,phiBandBadCellsCoeff) ; | |
977564f5 | 730 | |
727a309a | 731 | //coneptsumCluster=coneptsumCluster*coneBadCellsCoeff*correctConeSumClusterEta*correctConeSumClusterPhi; |
732 | ||
733 | coneptsumClusterSubPhi = coneptsumCluster - phiUEptsumClusterNorm; | |
26a8bf11 | 734 | coneptsumClusterSubEta = coneptsumCluster - etaUEptsumClusterNorm; |
72433939 | 735 | |
727a309a | 736 | etaBandptsumClusterNorm = etaUEptsumClusterNorm; |
977564f5 | 737 | |
72433939 | 738 | fhConeSumPtPhiUESubCluster ->Fill(ptTrig , coneptsumClusterSubPhi); |
739 | fhConeSumPtPhiUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubPhi); | |
740 | fhConeSumPtEtaUESubCluster ->Fill(ptTrig , coneptsumClusterSubEta); | |
741 | fhConeSumPtEtaUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubEta); | |
742 | ||
743 | fhFractionClusterOutConeEta ->Fill(ptTrig , correctConeSumClusterEta-1); | |
744 | fhFractionClusterOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterEta-1); | |
745 | fhFractionClusterOutConePhi ->Fill(ptTrig , correctConeSumClusterPhi-1); | |
746 | fhFractionClusterOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterPhi-1); | |
9b01dc66 | 747 | |
727a309a | 748 | if(coneptsumCluster!=0) |
749 | { | |
10a65cc6 | 750 | coneptsumClusterSubPhiNorm = coneptsumClusterSubPhi/coneptsumCluster; |
751 | coneptsumClusterSubEtaNorm = coneptsumClusterSubEta/coneptsumCluster; | |
752 | } | |
727a309a | 753 | |
b5d10017 | 754 | fhConeSumPtSubvsConeSumPtTotPhiCluster ->Fill(coneptsumCluster,coneptsumClusterSubPhi); |
755 | fhConeSumPtSubNormvsConeSumPtTotPhiCluster->Fill(coneptsumCluster,coneptsumClusterSubPhiNorm); | |
756 | fhConeSumPtSubvsConeSumPtTotEtaCluster ->Fill(coneptsumCluster,coneptsumClusterSubEta); | |
757 | fhConeSumPtSubNormvsConeSumPtTotEtaCluster->Fill(coneptsumCluster,coneptsumClusterSubEtaNorm); | |
758 | ||
9b01dc66 | 759 | // ----------- // |
760 | // EMCal Cells // | |
761 | // ----------- // | |
727a309a | 762 | |
977564f5 | 763 | if(fFillCellHistograms) |
9b01dc66 | 764 | { |
977564f5 | 765 | // Sum the pT in the phi or eta band for clusters or tracks |
766 | CalculateCaloCellUEBand(pCandidate,etaUEptsumCell ,phiUEptsumCell ); | |
9b01dc66 | 767 | |
977564f5 | 768 | // Move to AliIsolationCut the calculation not the histograms?? |
b5d10017 | 769 | |
977564f5 | 770 | //Careful here if EMCal limits changed .. 2010 (4 SM) to 2011-12 (10 SM), for the moment consider 100 deg in phi |
771 | Float_t emcEtaSize = 0.7*2; // TO FIX | |
772 | Float_t emcPhiSize = TMath::DegToRad()*100.; // TO FIX | |
773 | ||
774 | if(((2*conesize*emcPhiSize)-coneA)!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*conesize*emcPhiSize)-coneA)); | |
775 | if(((2*conesize*emcEtaSize)-coneA)!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*conesize*emcEtaSize)-coneA)); | |
776 | ||
777 | // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance! | |
778 | ||
779 | Float_t correctConeSumCellEta = 1; | |
780 | if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.) | |
781 | { | |
782 | Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.; | |
783 | correctConeSumCellEta = GetIsolationCut()->CalculateExcessAreaFraction(excess); | |
784 | //printf("Excess EMC-Eta %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",excess,coneA, excessA, angle*TMath::RadToDeg(), correctConeSumClusterEta); | |
785 | // Need to correct phi band surface if part of the cone falls out of track cut acceptance! | |
786 | if(((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta))!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta))); | |
787 | } | |
788 | ||
789 | Float_t correctConeSumCellPhi = 1; | |
790 | //printf("EMCPhiTrig %2.2f, conesize %2.2f, sum %2.2f, rest %2.2f \n",phiTrig*TMath::RadToDeg(),conesize*TMath::RadToDeg(),(phiTrig+conesize)*TMath::RadToDeg(),(phiTrig-conesize)*TMath::RadToDeg() ); | |
791 | if((phiTrig+conesize > 180*TMath::DegToRad()) || | |
792 | (phiTrig-conesize < 80*TMath::DegToRad())) | |
793 | { | |
794 | Float_t excess = 0; | |
795 | if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ; | |
796 | else excess = conesize - phiTrig + 80*TMath::DegToRad() ; | |
797 | ||
798 | correctConeSumCellPhi = GetIsolationCut()->CalculateExcessAreaFraction(excess); | |
799 | //printf("Excess EMC-Phi %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",excess,coneA, excessA, angle*TMath::RadToDeg(), correctConeSumClusterPhi); | |
800 | ||
801 | // Need to correct eta band surface if part of the cone falls out of track cut acceptance! | |
802 | if(((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi))!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi))); | |
803 | ||
804 | } | |
805 | ||
806 | // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ... | |
807 | coneptsumCellSubPhi = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - phiUEptsumCellNorm; | |
808 | coneptsumCellSubEta = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - etaUEptsumCellNorm; | |
809 | ||
810 | fhConeSumPtPhiUESubCell ->Fill(ptTrig , coneptsumCellSubPhi); | |
811 | fhConeSumPtPhiUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubPhi); | |
812 | fhConeSumPtEtaUESubCell ->Fill(ptTrig , coneptsumCellSubEta); | |
813 | fhConeSumPtEtaUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubEta); | |
814 | ||
815 | fhFractionCellOutConeEta ->Fill(ptTrig , correctConeSumCellEta-1); | |
816 | fhFractionCellOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellEta-1); | |
817 | fhFractionCellOutConePhi ->Fill(ptTrig , correctConeSumCellPhi-1); | |
818 | fhFractionCellOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellPhi-1); | |
819 | if(coneptsumCell!=0) | |
820 | { | |
821 | coneptsumCellSubPhiNorm = coneptsumCellSubPhi/coneptsumCell; | |
822 | coneptsumCellSubEtaNorm = coneptsumCellSubEta/coneptsumCell; | |
823 | } | |
824 | ||
825 | fhConeSumPtSubvsConeSumPtTotPhiCell ->Fill(coneptsumCell,coneptsumCellSubPhi); | |
826 | fhConeSumPtSubNormvsConeSumPtTotPhiCell->Fill(coneptsumCell,coneptsumCellSubPhiNorm); | |
827 | fhConeSumPtSubvsConeSumPtTotEtaCell ->Fill(coneptsumCell,coneptsumCellSubEta); | |
828 | fhConeSumPtSubNormvsConeSumPtTotEtaCell->Fill(coneptsumCell,coneptsumCellSubEtaNorm); | |
10a65cc6 | 829 | } |
23130491 | 830 | } |
977564f5 | 831 | |
72433939 | 832 | if( partTypeInCone==AliIsolationCut::kNeutralAndCharged ) |
833 | { | |
9b01dc66 | 834 | // --------------------------- // |
835 | // Tracks and clusters in cone // | |
836 | // --------------------------- // | |
72433939 | 837 | |
838 | Double_t sumPhiUESub = coneptsumClusterSubPhi + coneptsumTrackSubPhi; | |
839 | Double_t sumEtaUESub = coneptsumClusterSubEta + coneptsumTrackSubEta; | |
840 | ||
841 | fhConeSumPtPhiUESub ->Fill(ptTrig , sumPhiUESub); | |
842 | fhConeSumPtPhiUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESub); | |
843 | fhConeSumPtEtaUESub ->Fill(ptTrig , sumEtaUESub); | |
844 | fhConeSumPtEtaUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESub); | |
845 | ||
9b01dc66 | 846 | fhEtaBandClustervsTrack ->Fill(etaUEptsumCluster ,etaUEptsumTrack ); |
847 | fhPhiBandClustervsTrack ->Fill(phiUEptsumCluster ,phiUEptsumTrack ); | |
72433939 | 848 | fhEtaBandNormClustervsTrack->Fill(etaUEptsumClusterNorm,etaUEptsumTrackNorm); |
849 | fhPhiBandNormClustervsTrack->Fill(phiUEptsumClusterNorm,phiUEptsumTrackNorm); | |
850 | ||
851 | fhConeSumPtEtaUESubClustervsTrack->Fill(coneptsumClusterSubEta,coneptsumTrackSubEta); | |
852 | fhConeSumPtPhiUESubClustervsTrack->Fill(coneptsumClusterSubPhi,coneptsumTrackSubPhi); | |
977564f5 | 853 | |
9b01dc66 | 854 | // ------------------------ // |
855 | // Tracks and cells in cone // | |
856 | // ------------------------ // | |
857 | ||
977564f5 | 858 | if(fFillCellHistograms) |
859 | { | |
860 | Double_t sumPhiUESubTrackCell = coneptsumCellSubPhi + coneptsumTrackSubPhi; | |
861 | Double_t sumEtaUESubTrackCell = coneptsumCellSubEta + coneptsumTrackSubEta; | |
862 | ||
863 | fhConeSumPtPhiUESubTrackCell ->Fill(ptTrig , sumPhiUESubTrackCell); | |
864 | fhConeSumPtPhiUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESubTrackCell); | |
865 | fhConeSumPtEtaUESubTrackCell ->Fill(ptTrig , sumEtaUESubTrackCell); | |
866 | fhConeSumPtEtaUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESubTrackCell); | |
867 | ||
868 | fhEtaBandCellvsTrack ->Fill(etaUEptsumCell ,etaUEptsumTrack ); | |
869 | fhPhiBandCellvsTrack ->Fill(phiUEptsumCell ,phiUEptsumTrack ); | |
870 | fhEtaBandNormCellvsTrack->Fill(etaUEptsumCellNorm,etaUEptsumTrackNorm); | |
871 | fhPhiBandNormCellvsTrack->Fill(phiUEptsumCellNorm,phiUEptsumTrackNorm); | |
872 | ||
873 | fhConeSumPtEtaUESubCellvsTrack->Fill(coneptsumCellSubEta,coneptsumTrackSubEta); | |
874 | fhConeSumPtPhiUESubCellvsTrack->Fill(coneptsumCellSubPhi,coneptsumTrackSubPhi); | |
875 | } | |
9b01dc66 | 876 | |
72433939 | 877 | } |
23130491 | 878 | } |
879 | ||
880 | ||
1b1a1b2e | 881 | //______________________________________________________________________________________________________________ |
23130491 | 882 | void AliAnaParticleIsolation::CalculateCaloSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle, |
1b1a1b2e | 883 | Float_t & coneptsumCluster, Float_t & coneptLeadCluster) |
23130491 | 884 | { |
885 | // Get the cluster pT or sum of pT in isolation cone | |
1b1a1b2e | 886 | coneptLeadCluster = 0; |
887 | coneptsumCluster = 0; | |
23130491 | 888 | |
72433939 | 889 | if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ; |
890 | ||
23130491 | 891 | //Recover reference arrays with clusters and tracks |
6ae3345d | 892 | TObjArray * refclusters = aodParticle->GetObjArray(GetAODObjArrayName()+"Clusters"); |
23130491 | 893 | if(!refclusters) return ; |
894 | ||
895 | Float_t ptTrig = aodParticle->Pt(); | |
6ae3345d | 896 | |
23130491 | 897 | //Get vertex for cluster momentum calculation |
898 | Double_t vertex[] = {0,0,0} ; //vertex ; | |
899 | if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) | |
900 | GetReader()->GetVertex(vertex); | |
901 | ||
32bff2da | 902 | Float_t ptcone = 0; |
903 | ||
23130491 | 904 | for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++) |
905 | { | |
906 | AliVCluster* calo = (AliVCluster *) refclusters->At(icalo); | |
32bff2da | 907 | calo->GetMomentum(fMomentum,vertex) ;//Assume that come from vertex in straight line |
908 | ptcone = fMomentum.Pt(); | |
23130491 | 909 | |
32bff2da | 910 | fhPtInCone ->Fill(ptTrig, ptcone); |
911 | fhPtClusterInCone->Fill(ptTrig, ptcone); | |
23130491 | 912 | |
0cea6003 | 913 | if(IsPileUpAnalysisOn()) |
23130491 | 914 | { |
32bff2da | 915 | if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(ptTrig,ptcone); |
916 | if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,ptcone); | |
917 | if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,ptcone); | |
918 | if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,ptcone); | |
919 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,ptcone); | |
920 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,ptcone); | |
921 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,ptcone); | |
23130491 | 922 | } |
923 | ||
32bff2da | 924 | if(IsHighMultiplicityAnalysisOn()) fhPtInConeCent->Fill(GetEventCentrality(),ptcone); |
977564f5 | 925 | |
32bff2da | 926 | coneptsumCluster+=ptcone; |
927 | if(ptcone > coneptLeadCluster) coneptLeadCluster = ptcone; | |
72433939 | 928 | } |
6ae3345d | 929 | |
1b1a1b2e | 930 | fhConeSumPtCluster ->Fill(ptTrig, coneptsumCluster ); |
931 | fhConePtLeadCluster->Fill(ptTrig, coneptLeadCluster); | |
23130491 | 932 | } |
933 | ||
b94e038e | 934 | //______________________________________________________________________________________________________ |
9b01dc66 | 935 | void AliAnaParticleIsolation::CalculateCaloCellSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle, |
936 | Float_t & coneptsumCell) | |
937 | { | |
b5d10017 | 938 | // Get the cell amplityde or sum of amplitudes in isolation cone |
939 | // Mising: Remove signal cells in cone in case the trigger is a cluster! | |
9b01dc66 | 940 | |
941 | if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ; | |
b5d10017 | 942 | |
9b01dc66 | 943 | Float_t conesize = GetIsolationCut()->GetConeSize(); |
944 | ||
945 | Float_t ptTrig = aodParticle->Pt(); | |
946 | Float_t phiTrig = aodParticle->Phi(); | |
b5d10017 | 947 | if(phiTrig<0) phiTrig += TMath::TwoPi(); |
9b01dc66 | 948 | Float_t etaTrig = aodParticle->Eta(); |
949 | ||
32bff2da | 950 | if(aodParticle->GetDetectorTag()==kEMCAL) |
9b01dc66 | 951 | { |
b5d10017 | 952 | AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance(); |
953 | Int_t absId = -999; | |
954 | ||
955 | if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId)) | |
9b01dc66 | 956 | { |
b5d10017 | 957 | if(!eGeom->CheckAbsCellId(absId)) return ; |
9b01dc66 | 958 | |
b5d10017 | 959 | // Get absolute (col,row) of trigger particle |
960 | Int_t nSupMod = eGeom->GetSuperModuleNumber(absId); | |
961 | Int_t nModule = -1; | |
962 | Int_t imEta=-1, imPhi=-1; | |
963 | Int_t ieta =-1, iphi =-1; | |
6ae3345d | 964 | |
b5d10017 | 965 | if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta)) |
966 | { | |
967 | Int_t iEta=-1, iPhi=-1; | |
968 | eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta); | |
969 | ||
970 | Int_t colTrig = iEta; | |
971 | if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + iEta ; | |
972 | Int_t rowTrig = iPhi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2); | |
973 | ||
974 | Int_t sqrSize = int(conesize/0.0143); | |
975 | ||
976 | AliVCaloCells * cells = GetEMCALCells(); | |
977 | ||
978 | // Loop on cells in cone | |
979 | for(Int_t irow = rowTrig-sqrSize; irow < rowTrig+sqrSize; irow++) | |
980 | { | |
10a65cc6 | 981 | for(Int_t icol = colTrig-sqrSize; icol < colTrig+sqrSize; icol++) |
b5d10017 | 982 | { |
983 | Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows); | |
6ae3345d | 984 | if(inSector==5) continue; |
985 | ||
986 | Int_t inSupMod = -1; | |
b5d10017 | 987 | Int_t icolLoc = -1; |
988 | if(icol < AliEMCALGeoParams::fgkEMCALCols) | |
989 | { | |
ea051413 | 990 | inSupMod = 2*inSector + 1; |
b5d10017 | 991 | icolLoc = icol; |
992 | } | |
993 | else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1) | |
994 | { | |
ea051413 | 995 | inSupMod = 2*inSector; |
b5d10017 | 996 | icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols; |
997 | } | |
998 | ||
b5c8089d | 999 | Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ; |
b5d10017 | 1000 | |
1001 | Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc); | |
1002 | if(!eGeom->CheckAbsCellId(iabsId)) continue; | |
1003 | ||
1004 | fhPtCellInCone->Fill(ptTrig, cells->GetCellAmplitude(iabsId)); | |
1005 | coneptsumCell += cells->GetCellAmplitude(iabsId); | |
1006 | } | |
1007 | } | |
1008 | } | |
9b01dc66 | 1009 | } |
1010 | } | |
1011 | ||
1012 | fhConeSumPtCell->Fill(ptTrig,coneptsumCell); | |
b5d10017 | 1013 | |
9b01dc66 | 1014 | } |
1015 | ||
1b1a1b2e | 1016 | //___________________________________________________________________________________________________________ |
23130491 | 1017 | void AliAnaParticleIsolation::CalculateTrackSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle, |
1b1a1b2e | 1018 | Float_t & coneptsumTrack, Float_t & coneptLeadTrack) |
23130491 | 1019 | { |
1020 | // Get the track pT or sum of pT in isolation cone | |
1021 | ||
72433939 | 1022 | if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ; |
1023 | ||
23130491 | 1024 | //Recover reference arrays with clusters and tracks |
1025 | TObjArray * reftracks = aodParticle->GetObjArray(GetAODObjArrayName()+"Tracks"); | |
1026 | if(!reftracks) return ; | |
1027 | ||
1028 | Float_t ptTrig = aodParticle->Pt(); | |
1029 | Double_t bz = GetReader()->GetInputEvent()->GetMagneticField(); | |
6ae3345d | 1030 | |
23130491 | 1031 | for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++) |
1032 | { | |
1033 | AliVTrack* track = (AliVTrack *) reftracks->At(itrack); | |
1034 | Float_t pTtrack = track->Pt(); | |
1035 | ||
1036 | fhPtInCone ->Fill(ptTrig,pTtrack); | |
1037 | fhPtTrackInCone->Fill(ptTrig,pTtrack); | |
1038 | ||
0cea6003 | 1039 | if(IsPileUpAnalysisOn()) |
23130491 | 1040 | { |
1041 | ULong_t status = track->GetStatus(); | |
1042 | Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ; | |
1043 | //Double32_t tof = track->GetTOFsignal()*1e-3; | |
1044 | Int_t trackBC = track->GetTOFBunchCrossing(bz); | |
1045 | ||
1046 | if ( okTOF && trackBC!=0 ) fhPtTrackInConeOtherBC->Fill(ptTrig,pTtrack); | |
1047 | else if( okTOF && trackBC==0 ) fhPtTrackInConeBC0 ->Fill(ptTrig,pTtrack); | |
1048 | ||
1049 | Int_t vtxBC = GetReader()->GetVertexBC(); | |
1050 | if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtTrackInConeVtxBC0->Fill(ptTrig,pTtrack); | |
1051 | ||
1052 | if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(ptTrig,pTtrack); | |
6ae3345d | 1053 | if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(ptTrig,pTtrack); |
1054 | if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(ptTrig,pTtrack); } | |
23130491 | 1055 | if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,pTtrack); |
1056 | if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,pTtrack); | |
1057 | if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,pTtrack); | |
1058 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,pTtrack); | |
1059 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,pTtrack); | |
1060 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,pTtrack); | |
1061 | } | |
1062 | ||
0cea6003 | 1063 | if(IsHighMultiplicityAnalysisOn()) fhPtInConeCent->Fill(GetEventCentrality(),pTtrack); |
977564f5 | 1064 | |
23130491 | 1065 | coneptsumTrack+=pTtrack; |
1b1a1b2e | 1066 | if(pTtrack > coneptLeadTrack) coneptLeadTrack = pTtrack; |
23130491 | 1067 | } |
1b1a1b2e | 1068 | |
1069 | fhConeSumPtTrack ->Fill(ptTrig, coneptsumTrack ); | |
1070 | fhConePtLeadTrack->Fill(ptTrig, coneptLeadTrack); | |
1071 | ||
23130491 | 1072 | } |
1073 | ||
2ad19c3d | 1074 | //_________________________________________________________________ |
23130491 | 1075 | void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID) |
2ad19c3d | 1076 | { |
1077 | // Fill some histograms to understand pile-up | |
2ad19c3d | 1078 | |
6ae3345d | 1079 | if(clusterID < 0 ) |
2ad19c3d | 1080 | { |
1081 | printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID); | |
1082 | return; | |
1083 | } | |
1084 | ||
1085 | Int_t iclus = -1; | |
1086 | TObjArray* clusters = 0x0; | |
32bff2da | 1087 | if (GetCalorimeter() == kEMCAL) clusters = GetEMCALClusters(); |
1088 | else if(GetCalorimeter() == kPHOS ) clusters = GetPHOSClusters(); | |
2ad19c3d | 1089 | |
1090 | Float_t energy = 0; | |
1091 | Float_t time = -1000; | |
6ae3345d | 1092 | |
2ad19c3d | 1093 | if(clusters) |
1094 | { | |
6ae3345d | 1095 | AliVCluster *cluster = FindCluster(clusters,clusterID,iclus); |
2ad19c3d | 1096 | energy = cluster->E(); |
994051fa | 1097 | time = cluster->GetTOF()*1e9; |
6ae3345d | 1098 | } |
2ad19c3d | 1099 | |
1100 | //printf("E %f, time %f\n",energy,time); | |
1101 | AliVEvent * event = GetReader()->GetInputEvent(); | |
1102 | ||
1103 | fhTimeENoCut->Fill(energy,time); | |
1104 | if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time); | |
1105 | if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time); | |
1106 | ||
de101942 | 1107 | if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold |
2ad19c3d | 1108 | |
1109 | AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event); | |
1110 | AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event); | |
1111 | ||
1112 | // N pile up vertices | |
1113 | Int_t nVerticesSPD = -1; | |
1114 | Int_t nVerticesTracks = -1; | |
1115 | ||
1116 | if (esdEv) | |
1117 | { | |
1118 | nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD(); | |
1119 | nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks(); | |
1120 | ||
1121 | }//ESD | |
1122 | else if (aodEv) | |
1123 | { | |
1124 | nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD(); | |
1125 | nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks(); | |
1126 | }//AOD | |
1127 | ||
1128 | fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD); | |
1129 | fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks); | |
1130 | ||
6ae3345d | 1131 | //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n", |
2ad19c3d | 1132 | // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks); |
1133 | ||
1134 | Int_t ncont = -1; | |
5559f30a | 1135 | Float_t z1 = -1, z2 = -1; |
2ad19c3d | 1136 | Float_t diamZ = -1; |
1137 | for(Int_t iVert=0; iVert<nVerticesSPD;iVert++) | |
1138 | { | |
1139 | if (esdEv) | |
1140 | { | |
1141 | const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert); | |
1142 | ncont=pv->GetNContributors(); | |
1143 | z1 = esdEv->GetPrimaryVertexSPD()->GetZ(); | |
1144 | z2 = pv->GetZ(); | |
1145 | diamZ = esdEv->GetDiamondZ(); | |
1146 | }//ESD | |
1147 | else if (aodEv) | |
1148 | { | |
1149 | AliAODVertex *pv=aodEv->GetVertex(iVert); | |
1150 | if(pv->GetType()!=AliAODVertex::kPileupSPD) continue; | |
1151 | ncont=pv->GetNContributors(); | |
1152 | z1=aodEv->GetPrimaryVertexSPD()->GetZ(); | |
1153 | z2=pv->GetZ(); | |
1154 | diamZ = aodEv->GetDiamondZ(); | |
1155 | }// AOD | |
1156 | ||
1157 | Double_t distZ = TMath::Abs(z2-z1); | |
1158 | diamZ = TMath::Abs(z2-diamZ); | |
1159 | ||
1160 | fhTimeNPileUpVertContributors ->Fill(time,ncont); | |
1161 | fhTimePileUpMainVertexZDistance->Fill(time,distZ); | |
1162 | fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ); | |
1163 | ||
1164 | }// loop | |
1165 | } | |
1166 | ||
23130491 | 1167 | //_____________________________________________________________________________________________________________________ |
124bffb3 | 1168 | void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation *pCandidate, |
dc1966bb | 1169 | Float_t coneptsum, Float_t coneleadpt, |
124bffb3 | 1170 | Int_t mcIndex) |
b5dbb99b | 1171 | { |
6ae3345d | 1172 | // Fill Track matching and Shower Shape control histograms |
93518258 | 1173 | if(!fFillTMHisto && !fFillSSHisto && !fFillBackgroundBinHistograms && !fFillTaggedDecayHistograms) return; |
b5dbb99b | 1174 | |
23130491 | 1175 | Int_t clusterID = pCandidate->GetCaloLabel(0) ; |
c12a38d9 | 1176 | Int_t nMaxima = pCandidate->GetNLM(); |
23130491 | 1177 | Int_t mcTag = pCandidate->GetTag() ; |
1178 | Bool_t isolated = pCandidate->IsIsolated(); | |
1179 | ||
1180 | if(clusterID < 0 ) | |
547c2f01 | 1181 | { |
81a5e27b | 1182 | printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID); |
547c2f01 | 1183 | return; |
1184 | } | |
1185 | ||
2ff4efcd | 1186 | |
c12a38d9 | 1187 | Float_t m02 = pCandidate->GetM02() ; |
32d244b0 | 1188 | Float_t energy = pCandidate->E(); |
1189 | Float_t pt = pCandidate->Pt(); | |
93518258 | 1190 | Float_t eta = pCandidate->Eta(); |
1191 | Float_t phi = pCandidate->Phi(); | |
1192 | if(phi<0) phi+= TMath::TwoPi(); | |
1193 | ||
1194 | // Candidates tagged as decay in another analysis (AliAnaPi0EbE) | |
1195 | if(fFillTaggedDecayHistograms) | |
1196 | { | |
c12a38d9 | 1197 | Int_t decayTag = pCandidate->DecayTag(); |
1198 | if(decayTag < 0) decayTag = 0; | |
2ff4efcd | 1199 | |
93518258 | 1200 | for(Int_t ibit = 0; ibit < fNDecayBits; ibit++) |
1201 | { | |
1202 | if(!GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[ibit])) continue; | |
1203 | ||
1204 | if(fFillSSHisto) fhPtLambda0Decay[isolated][ibit]->Fill(pt,m02); | |
1205 | ||
1206 | // In case it was not done on the trigger selection task | |
1207 | // apply here a shower shape cut, not too strong, to select photons | |
1208 | if( m02 < 0.3 ) continue; | |
1209 | ||
1210 | fhPtDecay [isolated][ibit]->Fill(pt); | |
1211 | fhEtaPhiDecay[isolated][ibit]->Fill(eta,phi); | |
1212 | ||
1213 | if(IsDataMC()) | |
1214 | { | |
1215 | fhPtDecayMC[isolated][ibit][mcIndex]->Fill(pt); | |
1216 | ||
1217 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) | |
1218 | fhPtDecayMC[isolated][ibit][kmcPhoton]->Fill(pt); | |
1219 | ||
1220 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) | |
1221 | fhPtDecayMC[isolated][ibit][kmcPi0DecayLostPair]->Fill(pt); | |
1222 | } | |
1223 | } // bit loop | |
1224 | } // decay histograms | |
1225 | ||
1226 | ||
2ff4efcd | 1227 | // Get the max pt leading in cone or the sum of pt in cone |
1228 | // assign a bin to the candidate, depending on both quantities | |
1229 | // see the shower shape in those bins. | |
1230 | if(fFillBackgroundBinHistograms) | |
b5dbb99b | 1231 | { |
2ff4efcd | 1232 | // Get the background bin for this cone and trigger |
1233 | Int_t ptsumBin = -1; | |
1234 | Int_t leadptBin = -1; | |
b5dbb99b | 1235 | |
2ff4efcd | 1236 | if( GetDebug() > 1 ) |
1237 | printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms() - pT cand: %2.2f, In cone pT: Sum %2.2f, Lead %2.2f, n bins %d\n", | |
1238 | pt,coneptsum,coneleadpt,fNBkgBin); | |
1239 | ||
1240 | for(Int_t ibin = 0; ibin < fNBkgBin; ibin++) | |
dc1966bb | 1241 | { |
2ff4efcd | 1242 | if( coneptsum >= fBkgBinLimit[ibin] && coneptsum < fBkgBinLimit[ibin+1]) ptsumBin = ibin; |
1243 | if( coneleadpt >= fBkgBinLimit[ibin] && coneleadpt < fBkgBinLimit[ibin+1]) leadptBin = ibin; | |
dc1966bb | 1244 | } |
dc1966bb | 1245 | |
2ff4efcd | 1246 | // Fill the histograms per bin of pt lead or pt sum |
1247 | if( GetDebug() > 1 && ptsumBin >=0 ) printf("\t Sum bin %d [%2.2f,%2.2f]\n" , ptsumBin ,fBkgBinLimit[ptsumBin] ,fBkgBinLimit[ptsumBin +1]); | |
1248 | if( GetDebug() > 1 && leadptBin >=0 ) printf("\t Lead bin %d [%2.2f,%2.2f]\n", leadptBin,fBkgBinLimit[leadptBin],fBkgBinLimit[leadptBin+1]); | |
1249 | ||
7a5b478e | 1250 | if( leadptBin >=0 ) |
1251 | { | |
1252 | fhPtLeadConeBin[leadptBin]->Fill(pt); | |
1253 | if(fFillSSHisto) fhPtLeadConeBinLambda0[leadptBin]->Fill(pt,m02); | |
1254 | } | |
1255 | ||
1256 | if( ptsumBin >=0 ) | |
1257 | { | |
1258 | fhSumPtConeBin[ptsumBin]->Fill(pt); | |
1259 | if(fFillSSHisto) fhSumPtConeBinLambda0[ptsumBin]->Fill(pt,m02); | |
1260 | } | |
1261 | ||
1262 | // Check if it was a decay | |
49ac0ab4 | 1263 | if(fFillTaggedDecayHistograms && m02 < 0.3) |
7a5b478e | 1264 | { |
c12a38d9 | 1265 | Int_t decayTag = pCandidate->DecayTag(); |
1266 | if(decayTag < 0) decayTag = 0; | |
7a5b478e | 1267 | for(Int_t ibit = 0; ibit < fNDecayBits; ibit++) |
1268 | { | |
1269 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[ibit])) | |
1270 | { | |
1271 | Int_t leadptBinDecay = leadptBin+ibit*fNBkgBin; | |
1272 | Int_t ptsumBinDecay = ptsumBin+ibit*fNBkgBin; | |
1273 | if( leadptBin >=0 ) fhPtLeadConeBinDecay[leadptBinDecay]->Fill(pt); | |
1274 | if( ptsumBin >=0 ) fhSumPtConeBinDecay [ ptsumBinDecay]->Fill(pt); | |
1275 | } | |
1276 | } | |
1277 | } | |
2ff4efcd | 1278 | |
1279 | if( GetDebug() > 1 && leadptBin == 0 ) | |
1280 | printf("No track/clusters in isolation cone: cand pt %2.2f GeV/c, track multiplicity %d, N clusters %d\n", | |
1281 | pt, GetTrackMultiplicity(),GetEMCALClusters()->GetEntriesFast()); | |
1282 | ||
1283 | if(IsDataMC()) | |
b5dbb99b | 1284 | { |
2ff4efcd | 1285 | Int_t leadptBinMC = leadptBin+mcIndex*fNBkgBin; |
1286 | Int_t ptsumBinMC = ptsumBin+mcIndex*fNBkgBin; | |
7a5b478e | 1287 | |
1288 | if( leadptBin >=0 ) | |
1289 | { | |
1290 | fhPtLeadConeBinMC[leadptBinMC]->Fill(pt); | |
1291 | if(fFillSSHisto) fhPtLeadConeBinLambda0MC[leadptBinMC]->Fill(pt,m02); | |
1292 | } | |
1293 | ||
1294 | if( ptsumBin >=0 ) | |
1295 | { | |
1296 | fhSumPtConeBinMC [ ptsumBinMC]->Fill(pt); | |
1297 | if(fFillSSHisto) fhSumPtConeBinLambda0MC [ ptsumBinMC]->Fill(pt,m02); | |
1298 | } | |
1299 | ||
1300 | ||
2ff4efcd | 1301 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) |
764ab1f4 | 1302 | { |
2ff4efcd | 1303 | leadptBinMC = leadptBin+kmcPhoton*fNBkgBin; |
1304 | ptsumBinMC = ptsumBin+kmcPhoton*fNBkgBin; | |
7a5b478e | 1305 | if( leadptBin >=0 ) |
1306 | { | |
1307 | fhPtLeadConeBinMC[leadptBinMC]->Fill(pt); | |
1308 | if(fFillSSHisto) fhPtLeadConeBinLambda0MC[leadptBinMC]->Fill(pt,m02); | |
1309 | } | |
1310 | ||
1311 | if( ptsumBin >=0 ) | |
1312 | { | |
1313 | fhSumPtConeBinMC [ ptsumBinMC]->Fill(pt); | |
1314 | if(fFillSSHisto) fhSumPtConeBinLambda0MC [ ptsumBinMC]->Fill(pt,m02); | |
1315 | } | |
764ab1f4 | 1316 | } |
2ff4efcd | 1317 | } |
1318 | } | |
1319 | ||
d125fd57 | 1320 | if(fFillPtTrigBinHistograms) |
1321 | { | |
1322 | // Get the background bin for this cone and trigger | |
1323 | Int_t ptTrigBin = -1; | |
1324 | ||
1325 | for(Int_t ibin = 0; ibin < fNPtTrigBin; ibin++) | |
1326 | { | |
1327 | if( pt >= fPtTrigBinLimit[ibin] && coneptsum < fPtTrigBinLimit[ibin+1]) ptTrigBin = ibin; | |
1328 | } | |
1329 | ||
1330 | // Fill the histograms per pT candidate bin of pt lead or pt sum | |
1331 | if( GetDebug() > 1 && ptTrigBin >=0 ) printf("Trigger pT %f, bin %d [%2.2f,%2.2f]\n" , pt , ptTrigBin, fPtTrigBinLimit[ptTrigBin] ,fPtTrigBinLimit[ptTrigBin +1]); | |
1332 | ||
1333 | if( ptTrigBin >=0 ) | |
1334 | { | |
1335 | fhPtTrigBinPtLeadCone[ptTrigBin]->Fill(coneleadpt); | |
1336 | fhPtTrigBinSumPtCone [ptTrigBin]->Fill(coneptsum ); | |
1337 | if(fFillSSHisto) | |
1338 | { | |
1339 | fhPtTrigBinLambda0vsPtLeadCone[ptTrigBin]->Fill(coneleadpt,m02); | |
1340 | fhPtTrigBinLambda0vsSumPtCone [ptTrigBin]->Fill(coneptsum ,m02); | |
1341 | } | |
1342 | } | |
1343 | ||
1344 | // Check if it was a decay | |
f095894e | 1345 | if( fFillTaggedDecayHistograms && m02 < 0.3 ) |
d125fd57 | 1346 | { |
c12a38d9 | 1347 | Int_t decayTag = pCandidate->DecayTag(); |
1348 | if(decayTag < 0) decayTag = 0; | |
d125fd57 | 1349 | for(Int_t ibit = 0; ibit < fNDecayBits; ibit++) |
1350 | { | |
1351 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[ibit])) | |
1352 | { | |
1353 | Int_t binDecay = ptTrigBin+ibit*fNPtTrigBin; | |
1354 | if( binDecay > 0 ) | |
1355 | { | |
1356 | fhPtTrigBinPtLeadConeDecay[binDecay]->Fill(coneleadpt); | |
1357 | fhPtTrigBinSumPtConeDecay [binDecay]->Fill(coneptsum ); | |
1358 | } | |
1359 | } | |
1360 | } | |
1361 | } | |
1362 | ||
f095894e | 1363 | if( IsDataMC() ) |
d125fd57 | 1364 | { |
1365 | Int_t ptTrigBinMC = ptTrigBin+mcIndex*fNPtTrigBin; | |
1366 | ||
1367 | if( ptTrigBin >=0 ) | |
1368 | { | |
1369 | fhPtTrigBinPtLeadConeMC[ptTrigBinMC]->Fill(coneleadpt); | |
1370 | fhPtTrigBinSumPtConeMC [ptTrigBinMC]->Fill(coneptsum ); | |
1371 | if(fFillSSHisto) | |
1372 | { | |
1373 | fhPtTrigBinLambda0vsPtLeadConeMC[ptTrigBinMC]->Fill(coneleadpt,m02); | |
1374 | fhPtTrigBinLambda0vsSumPtConeMC [ptTrigBinMC]->Fill(coneptsum ,m02); | |
1375 | } | |
1376 | } | |
1377 | ||
1378 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) | |
1379 | { | |
1380 | ptTrigBinMC = ptTrigBin+kmcPhoton*fNPtTrigBin; | |
1381 | if( ptTrigBin >=0 ) | |
1382 | { | |
1383 | fhPtTrigBinPtLeadConeMC[ptTrigBinMC]->Fill(coneleadpt); | |
1384 | fhPtTrigBinSumPtConeMC [ptTrigBinMC]->Fill(coneptsum ); | |
1385 | if(fFillSSHisto) | |
1386 | { | |
1387 | fhPtTrigBinLambda0vsPtLeadConeMC[ptTrigBinMC]->Fill(coneleadpt,m02); | |
1388 | fhPtTrigBinLambda0vsSumPtConeMC [ptTrigBinMC]->Fill(coneptsum ,m02); | |
1389 | } | |
1390 | } | |
1391 | } // photon MC | |
1392 | } // MC | |
1393 | } // pT trigger bins | |
1394 | ||
93518258 | 1395 | // Shower shape dependent histograms |
2ff4efcd | 1396 | if(fFillSSHisto) |
1397 | { | |
1398 | fhELambda0 [isolated]->Fill(energy, m02); | |
1399 | fhPtLambda0[isolated]->Fill(pt, m02); | |
c12a38d9 | 1400 | //fhELambda1 [isolated]->Fill(energy, m20); |
2ff4efcd | 1401 | |
1402 | if(IsDataMC()) | |
1403 | { | |
1404 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) | |
1405 | fhPtLambda0MC[kmcPhoton][isolated]->Fill(pt,m02); | |
5c46c992 | 1406 | |
e23c7107 | 1407 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 1408 | fhPtLambda0MC[kmcPi0DecayLostPair][isolated]->Fill(pt,m02); |
1409 | ||
2ff4efcd | 1410 | fhPtLambda0MC[mcIndex][isolated]->Fill(pt,m02); |
1411 | } | |
1412 | ||
32bff2da | 1413 | if(GetCalorimeter() == kEMCAL && GetFirstSMCoveredByTRD() >= 0 && |
c12a38d9 | 1414 | GetModuleNumber(pCandidate) >= GetFirstSMCoveredByTRD() ) |
2ff4efcd | 1415 | { |
1416 | fhELambda0TRD [isolated]->Fill(energy, m02 ); | |
1417 | fhPtLambda0TRD[isolated]->Fill(pt , m02 ); | |
c12a38d9 | 1418 | //fhELambda1TRD [isolated]->Fill(energy, m20 ); |
2ff4efcd | 1419 | } |
1420 | ||
1421 | if(fFillNLMHistograms) | |
1422 | { | |
1423 | fhNLocMax[isolated]->Fill(energy,nMaxima); | |
1424 | if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,m02); fhELambda1LocMax1[isolated]->Fill(energy,m02); } | |
1425 | else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,m02); fhELambda1LocMax2[isolated]->Fill(energy,m02); } | |
1426 | else { fhELambda0LocMaxN[isolated]->Fill(energy,m02); fhELambda1LocMaxN[isolated]->Fill(energy,m02); } | |
1427 | } | |
1428 | } // SS histo fill | |
1429 | ||
93518258 | 1430 | // Track matching dependent histograms |
2ff4efcd | 1431 | if(fFillTMHisto) |
1432 | { | |
c12a38d9 | 1433 | Int_t iclus = -1; |
1434 | TObjArray* clusters = 0x0; | |
32bff2da | 1435 | if (GetCalorimeter() == kEMCAL) clusters = GetEMCALClusters(); |
1436 | else if(GetCalorimeter() == kPHOS ) clusters = GetPHOSClusters(); | |
c12a38d9 | 1437 | |
1438 | if(!clusters) return; | |
1439 | ||
1440 | AliVCluster *cluster = FindCluster(clusters,clusterID,iclus); | |
1441 | ||
2ff4efcd | 1442 | Float_t dZ = cluster->GetTrackDz(); |
1443 | Float_t dR = cluster->GetTrackDx(); | |
b5dbb99b | 1444 | |
2ff4efcd | 1445 | if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn()) |
1446 | { | |
1447 | dR = 2000., dZ = 2000.; | |
1448 | GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR); | |
1449 | } | |
1450 | ||
1451 | //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ); | |
1452 | if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999) | |
1453 | { | |
1454 | fhTrackMatchedDEta[isolated]->Fill(energy,dZ); | |
1455 | fhTrackMatchedDPhi[isolated]->Fill(energy,dR); | |
1456 | if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR); | |
1457 | } | |
1458 | ||
1459 | // Check dEdx and E/p of matched clusters | |
1460 | ||
1461 | if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05) | |
b5dbb99b | 1462 | { |
b5dbb99b | 1463 | |
2ff4efcd | 1464 | AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent()); |
b5dbb99b | 1465 | |
2ff4efcd | 1466 | if(track) |
b5dbb99b | 1467 | { |
2ff4efcd | 1468 | Float_t dEdx = track->GetTPCsignal(); |
1469 | fhdEdx[isolated]->Fill(cluster->E(), dEdx); | |
1470 | ||
1471 | Float_t eOverp = cluster->E()/track->P(); | |
1472 | fhEOverP[isolated]->Fill(cluster->E(), eOverp); | |
b5dbb99b | 1473 | } |
2ff4efcd | 1474 | //else |
1475 | // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ); | |
b5dbb99b | 1476 | |
b5dbb99b | 1477 | |
2ff4efcd | 1478 | if(IsDataMC()) |
b5dbb99b | 1479 | { |
2ff4efcd | 1480 | if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) ) |
b5dbb99b | 1481 | { |
2ff4efcd | 1482 | if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) || |
1483 | GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 ); | |
1484 | else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 ); | |
1485 | else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 ); | |
1486 | else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 ); | |
b5dbb99b | 1487 | |
b5dbb99b | 1488 | } |
2ff4efcd | 1489 | else |
db6fb352 | 1490 | { |
2ff4efcd | 1491 | if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) || |
1492 | GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 ); | |
1493 | else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 ); | |
1494 | else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 ); | |
1495 | else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 ); | |
1496 | } | |
1497 | } // MC | |
b5dbb99b | 1498 | |
2ff4efcd | 1499 | } // match window |
b5dbb99b | 1500 | |
2ff4efcd | 1501 | }// TM histos fill |
b5dbb99b | 1502 | |
1503 | } | |
1504 | ||
803d06a8 | 1505 | //______________________________________________________ |
1a31a9ab | 1506 | TObjString * AliAnaParticleIsolation::GetAnalysisCuts() |
6ae3345d | 1507 | { |
b0a31c92 | 1508 | //Save parameters used for analysis |
1a31a9ab | 1509 | TString parList ; //this will be list of parameters used for this analysis. |
1510 | const Int_t buffersize = 255; | |
1511 | char onePar[buffersize] ; | |
1512 | ||
1513 | snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ; | |
6ae3345d | 1514 | parList+=onePar ; |
32bff2da | 1515 | snprintf(onePar, buffersize,"Calorimeter: %s\n",GetCalorimeterString().Data()) ; |
1a31a9ab | 1516 | parList+=onePar ; |
32bff2da | 1517 | snprintf(onePar, buffersize,"Isolation Cand Detector: %s\n",fIsoDetectorString.Data()) ; |
4b6cb0f2 | 1518 | parList+=onePar ; |
1a31a9ab | 1519 | snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ; |
1520 | parList+=onePar ; | |
1521 | snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ; | |
6ae3345d | 1522 | parList+=onePar ; |
09273901 | 1523 | snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ; |
1a31a9ab | 1524 | parList+=onePar ; |
09273901 | 1525 | snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ; |
1526 | parList+=onePar ; | |
db6fb352 | 1527 | |
b5dbb99b | 1528 | if(fMakeSeveralIC) |
1529 | { | |
1a31a9ab | 1530 | snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ; |
1531 | parList+=onePar ; | |
1532 | snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ; | |
1533 | parList+=onePar ; | |
1534 | ||
b5dbb99b | 1535 | for(Int_t icone = 0; icone < fNCones ; icone++) |
1536 | { | |
1a31a9ab | 1537 | snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ; |
6ae3345d | 1538 | parList+=onePar ; |
1a31a9ab | 1539 | } |
b5dbb99b | 1540 | for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++) |
1541 | { | |
1a31a9ab | 1542 | snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ; |
6ae3345d | 1543 | parList+=onePar ; |
1a31a9ab | 1544 | } |
b5dbb99b | 1545 | for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++) |
1546 | { | |
1a31a9ab | 1547 | snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ; |
6ae3345d | 1548 | parList+=onePar ; |
db6fb352 | 1549 | } |
1550 | for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++) | |
1551 | { | |
1552 | snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ; | |
6ae3345d | 1553 | parList+=onePar ; |
1554 | } | |
1a31a9ab | 1555 | } |
1556 | ||
1557 | //Get parameters set in base class. | |
1558 | parList += GetBaseParametersList() ; | |
1559 | ||
1560 | //Get parameters set in IC class. | |
1561 | if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ; | |
1562 | ||
1563 | return new TObjString(parList) ; | |
b0a31c92 | 1564 | |
1a31a9ab | 1565 | } |
1566 | ||
803d06a8 | 1567 | //________________________________________________________ |
1a31a9ab | 1568 | TList * AliAnaParticleIsolation::GetCreateOutputObjects() |
6ae3345d | 1569 | { |
1570 | // Create histograms to be saved in output file and | |
1a31a9ab | 1571 | // store them in outputContainer |
6ae3345d | 1572 | TList * outputContainer = new TList() ; |
1573 | outputContainer->SetName("IsolatedParticleHistos") ; | |
1a31a9ab | 1574 | |
745913ae | 1575 | Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); |
1576 | Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); | |
1577 | Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); | |
1578 | Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); | |
1579 | Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); | |
1580 | Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); | |
1581 | Float_t ptmin = GetHistogramRanges()->GetHistoPtMin(); | |
1582 | Float_t phimin = GetHistogramRanges()->GetHistoPhiMin(); | |
6ae3345d | 1583 | Float_t etamin = GetHistogramRanges()->GetHistoEtaMin(); |
1584 | Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins(); | |
1585 | Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax(); | |
09273901 | 1586 | Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin(); |
6ae3345d | 1587 | Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins(); |
1588 | Float_t timemax = GetHistogramRanges()->GetHistoTimeMax(); | |
1589 | Float_t timemin = GetHistogramRanges()->GetHistoTimeMin(); | |
1590 | ||
1591 | Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins(); | |
1592 | Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax(); | |
09273901 | 1593 | Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin(); |
6ae3345d | 1594 | Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins(); |
1595 | Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax(); | |
1596 | Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin(); | |
803d06a8 | 1597 | |
6ae3345d | 1598 | Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins(); |
1599 | Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax(); | |
31ae6d59 | 1600 | Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin(); |
6ae3345d | 1601 | Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins(); |
1602 | Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax(); | |
31ae6d59 | 1603 | Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin(); |
1604 | ||
98287a43 | 1605 | Int_t nptsumbins = GetHistogramRanges()->GetHistoNPtSumBins(); |
1606 | Float_t ptsummax = GetHistogramRanges()->GetHistoPtSumMax(); | |
1607 | Float_t ptsummin = GetHistogramRanges()->GetHistoPtSumMin(); | |
1608 | Int_t nptinconebins = GetHistogramRanges()->GetHistoNPtInConeBins(); | |
1609 | Float_t ptinconemax = GetHistogramRanges()->GetHistoPtInConeMax(); | |
1610 | Float_t ptinconemin = GetHistogramRanges()->GetHistoPtInConeMin(); | |
1a31a9ab | 1611 | |
7726e3a3 | 1612 | //Float_t ptthre = GetIsolationCut()->GetPtThreshold(); |
1613 | //Float_t ptsumthre = GetIsolationCut()->GetSumPtThreshold(); | |
1614 | //Float_t ptfrac = GetIsolationCut()->GetPtFraction(); | |
1615 | Float_t r = GetIsolationCut()->GetConeSize(); | |
1616 | Int_t method = GetIsolationCut()->GetICMethod() ; | |
1617 | Int_t particle = GetIsolationCut()->GetParticleTypeInCone() ; | |
1618 | ||
1619 | TString sThreshold = ""; | |
124bffb3 | 1620 | if ( method == AliIsolationCut::kSumPtIC ) |
1621 | { | |
1622 | sThreshold = Form(", %2.2f < #Sigma #it{p}_{T}^{in cone} < %2.2f GeV/#it{c}", | |
1623 | GetIsolationCut()->GetSumPtThreshold(), GetIsolationCut()->GetSumPtThresholdMax()); | |
1624 | if(GetIsolationCut()->GetSumPtThresholdMax() > 200) | |
1625 | sThreshold = Form(", #Sigma #it{p}_{T}^{in cone} = %2.2f GeV/#it{c}", | |
1626 | GetIsolationCut()->GetSumPtThreshold()); | |
1627 | } | |
1628 | else if ( method == AliIsolationCut::kPtThresIC) | |
1629 | { | |
1630 | sThreshold = Form(", %2.2f < #it{p}_{T}^{th} < %2.2f GeV/#it{c}", | |
1631 | GetIsolationCut()->GetPtThreshold(),GetIsolationCut()->GetPtThresholdMax()); | |
1632 | if(GetIsolationCut()->GetSumPtThreshold() > 200) | |
1633 | sThreshold = Form(", #it{p}_{T}^{th} = %2.2f GeV/#it{c}", | |
1634 | GetIsolationCut()->GetPtThreshold()); | |
1635 | } | |
1636 | else if ( method == AliIsolationCut::kPtFracIC) | |
1637 | sThreshold = Form(", #Sigma #it{p}_{T}^{in cone}/#it{p}_{T}^{trig} = %2.2f" , | |
1638 | GetIsolationCut()->GetPtFraction()); | |
6ae3345d | 1639 | |
7726e3a3 | 1640 | TString sParticle = ", x^{0,#pm}"; |
1641 | if ( particle == AliIsolationCut::kOnlyNeutral ) sParticle = ", x^{0}"; | |
1642 | else if ( particle == AliIsolationCut::kOnlyCharged ) sParticle = ", x^{#pm}"; | |
1643 | ||
1644 | TString parTitle = Form("#it{R} = %2.2f%s%s",GetIsolationCut()->GetConeSize(), sThreshold.Data(),sParticle.Data()); | |
db6fb352 | 1645 | |
17af6e24 | 1646 | TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ; |
1647 | ||
124bffb3 | 1648 | // MC histograms title and name |
1649 | TString mcPartType[] = { "#gamma", "#gamma_{prompt}", "#gamma_{fragmentation}", | |
70460dc6 | 1650 | "#pi^{0} (merged #gamma)","#gamma_{#pi decay}","#gamma_{#pi decay} lost companion", |
6ae3345d | 1651 | "#gamma_{#eta decay}","#gamma_{other decay}", |
1652 | "e^{#pm}","hadrons?"} ; | |
124bffb3 | 1653 | |
1654 | TString mcPartName[] = { "Photon","PhotonPrompt","PhotonFrag", | |
70460dc6 | 1655 | "Pi0","Pi0Decay","Pi0DecayLostPair","EtaDecay","OtherDecay", |
6ae3345d | 1656 | "Electron","Hadron"} ; |
124bffb3 | 1657 | |
1658 | // Primary MC histograms title and name | |
bf8a7dac | 1659 | TString pptype[] = { "#gamma", "#gamma_{#pi decay}","#gamma_{other decay}", |
d24561b6 | 1660 | "#gamma_{prompt}","#gamma_{fragmentation}","#gamma_{ISR}","#pi^{0}"} ; |
124bffb3 | 1661 | |
bf8a7dac | 1662 | TString ppname[] = { "Photon","PhotonPi0Decay","PhotonOtherDecay", |
d24561b6 | 1663 | "PhotonPrompt","PhotonFrag","PhotonISR","Pi0"} ; |
6ae3345d | 1664 | |
be703b18 | 1665 | // Not Isolated histograms, reference histograms |
1666 | ||
1667 | fhENoIso = new TH1F("hENoIso", | |
1668 | Form("Number of not isolated leading particles vs #it{p}_{T}, %s",parTitle.Data()), | |
1669 | nptbins,ptmin,ptmax); | |
1670 | fhENoIso->SetYTitle("#it{counts}"); | |
1671 | fhENoIso->SetXTitle("E (GeV/#it{c})"); | |
1672 | outputContainer->Add(fhENoIso) ; | |
1673 | ||
1674 | fhPtNoIso = new TH1F("hPtNoIso", | |
1675 | Form("Number of not isolated leading particles vs #it{p}_{T}, %s",parTitle.Data()), | |
1676 | nptbins,ptmin,ptmax); | |
1677 | fhPtNoIso->SetYTitle("#it{counts}"); | |
1678 | fhPtNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1679 | outputContainer->Add(fhPtNoIso) ; | |
1680 | ||
1681 | fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso", | |
1682 | Form("Number of not isolated leading particles #eta vs #phi, %s",parTitle.Data()), | |
1683 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
1684 | fhEtaPhiNoIso->SetXTitle("#eta"); | |
1685 | fhEtaPhiNoIso->SetYTitle("#phi"); | |
1686 | outputContainer->Add(fhEtaPhiNoIso) ; | |
6ae3345d | 1687 | |
be703b18 | 1688 | if(IsDataMC()) |
1689 | { | |
1690 | // For histograms in arrays, index in the array, corresponding to any particle origin | |
1691 | ||
d24561b6 | 1692 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
be703b18 | 1693 | { |
be703b18 | 1694 | fhPtNoIsoMC[imc] = new TH1F(Form("hPtNoIsoMC%s",mcPartName[imc].Data()), |
1695 | Form("#it{p}_{T} of NOT isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()), | |
1696 | nptbins,ptmin,ptmax); | |
1697 | fhPtNoIsoMC[imc]->SetYTitle("#it{counts}"); | |
1698 | fhPtNoIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
1699 | outputContainer->Add(fhPtNoIsoMC[imc]) ; | |
1700 | ||
1701 | fhPtIsoMC[imc] = new TH1F(Form("hPtMC%s",mcPartName[imc].Data()), | |
1702 | Form("#it{p}_{T} of isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()), | |
1703 | nptbins,ptmin,ptmax); | |
1704 | fhPtIsoMC[imc]->SetYTitle("#it{counts}"); | |
1705 | fhPtIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
1706 | outputContainer->Add(fhPtIsoMC[imc]) ; | |
1707 | ||
1708 | fhPhiIsoMC[imc] = new TH2F(Form("hPhiMC%s",mcPartName[imc].Data()), | |
1709 | Form("#phi vs #it{p}_{T} of isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()), | |
1710 | nptbins,ptmin,ptmax,nphibins,phimin,phimax); | |
1711 | fhPhiIsoMC[imc]->SetYTitle("#phi"); | |
1712 | fhPhiIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
1713 | outputContainer->Add(fhPhiIsoMC[imc]) ; | |
1714 | ||
1715 | fhEtaIsoMC[imc] = new TH2F(Form("hEtaMC%s",mcPartName[imc].Data()), | |
1716 | Form("#phi vs #it{p}_{T} of isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()), | |
1717 | nptbins,ptmin,ptmax,netabins,etamin,etamax); | |
1718 | fhEtaIsoMC[imc]->SetYTitle("#eta"); | |
1719 | fhEtaIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
1720 | outputContainer->Add(fhEtaIsoMC[imc]) ; | |
1721 | } | |
1722 | } | |
1723 | ||
1724 | // Histograms for tagged candidates as decay | |
1725 | if(fFillTaggedDecayHistograms) | |
1726 | { | |
93518258 | 1727 | TString isoName [] = {"NoIso","Iso"}; |
1728 | TString isoTitle[] = {"Not isolated" ,"isolated"}; | |
1729 | ||
8913c8c4 | 1730 | for(Int_t ibit = 0; ibit < fNDecayBits; ibit++) |
aa2e58e4 | 1731 | { |
93518258 | 1732 | for(Int_t iso = 0; iso < 2; iso++) |
aa2e58e4 | 1733 | { |
93518258 | 1734 | if(fMakeSeveralIC && iso) continue; |
1735 | fhPtDecay[iso][ibit] = | |
1736 | new TH1F(Form("hPtDecay%s_bit%d",isoName[iso].Data(),fDecayBits[ibit]), | |
1737 | Form("Number of %s leading pi0 decay particles vs #it{p}_{T}, bit %d, %s",isoTitle[iso].Data(),fDecayBits[ibit],parTitle.Data()), | |
8913c8c4 | 1738 | nptbins,ptmin,ptmax); |
93518258 | 1739 | fhPtDecay[iso][ibit]->SetYTitle("#it{counts}"); |
1740 | fhPtDecay[iso][ibit]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1741 | outputContainer->Add(fhPtDecay[iso][ibit]) ; | |
8913c8c4 | 1742 | |
93518258 | 1743 | fhEtaPhiDecay[iso][ibit] = |
1744 | new TH2F(Form("hEtaPhiDecay%s_bit%d",isoName[iso].Data(),fDecayBits[ibit]), | |
1745 | Form("Number of %s leading Pi0 decay particles #eta vs #phi, bit %d, %s",isoTitle[iso].Data(),fDecayBits[ibit],parTitle.Data()), | |
8913c8c4 | 1746 | netabins,etamin,etamax,nphibins,phimin,phimax); |
93518258 | 1747 | fhEtaPhiDecay[iso][ibit]->SetXTitle("#eta"); |
1748 | fhEtaPhiDecay[iso][ibit]->SetYTitle("#phi"); | |
1749 | outputContainer->Add(fhEtaPhiDecay[iso][ibit]) ; | |
1750 | ||
1751 | if(fFillSSHisto) | |
aa2e58e4 | 1752 | { |
93518258 | 1753 | fhPtLambda0Decay[iso][ibit] = new TH2F |
1754 | (Form("hPtLambda0Decay%s_bit%d",isoName[iso].Data(),fDecayBits[ibit]), | |
1755 | Form("%s cluster : #it{p}_{T} vs #lambda_{0}, decay bit %d, %s",isoTitle[iso].Data(), fDecayBits[ibit], parTitle.Data()), | |
1756 | nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
1757 | fhPtLambda0Decay[iso][ibit]->SetYTitle("#lambda_{0}^{2}"); | |
1758 | fhPtLambda0Decay[iso][ibit]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1759 | outputContainer->Add(fhPtLambda0Decay[iso][ibit]) ; | |
1760 | } | |
1761 | ||
1762 | if(IsDataMC()) | |
1763 | { | |
1764 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) | |
8913c8c4 | 1765 | { |
93518258 | 1766 | fhPtDecayMC[iso][ibit][imc] = |
1767 | new TH1F(Form("hPtDecay%s_bit%d_MC%s",isoName[iso].Data(),fDecayBits[ibit],mcPartName[imc].Data()), | |
1768 | Form("#it{p}_{T} of %s, decay bit %d, %s, %s",isoTitle[iso].Data(),fDecayBits[ibit],mcPartType[imc].Data(),parTitle.Data()), | |
8913c8c4 | 1769 | nptbins,ptmin,ptmax); |
93518258 | 1770 | fhPtDecayMC[iso][ibit][imc]->SetYTitle("#it{counts}"); |
1771 | fhPtDecayMC[iso][ibit][imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
1772 | outputContainer->Add(fhPtDecayMC[iso][ibit][imc]) ; | |
1773 | }// MC particle loop | |
1774 | }// MC | |
1775 | } // bit loop | |
1776 | } //iso loop | |
aa2e58e4 | 1777 | }// decay |
be703b18 | 1778 | |
b5dbb99b | 1779 | if(!fMakeSeveralIC) |
1780 | { | |
93518258 | 1781 | TString isoName [] = {"NoIso","Iso"}; |
7726e3a3 | 1782 | TString isoTitle[] = {"Not isolated" ,"isolated"}; |
c8710850 | 1783 | |
72433939 | 1784 | fhEIso = new TH1F("hE", |
7726e3a3 | 1785 | Form("Number of isolated particles vs E, %s",parTitle.Data()), |
72433939 | 1786 | nptbins,ptmin,ptmax); |
977564f5 | 1787 | fhEIso->SetYTitle("d#it{N} / d#it{E}"); |
9a97f32f | 1788 | fhEIso->SetXTitle("#it{E} (GeV/#it{c})"); |
72433939 | 1789 | outputContainer->Add(fhEIso) ; |
1790 | ||
1791 | fhPtIso = new TH1F("hPt", | |
7726e3a3 | 1792 | Form("Number of isolated particles vs #it{p}_{T}, %s",parTitle.Data()), |
72433939 | 1793 | nptbins,ptmin,ptmax); |
9a97f32f | 1794 | fhPtIso->SetYTitle("d#it{N} / #it{p}_{T}"); |
dc9c6e78 | 1795 | fhPtIso->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
72433939 | 1796 | outputContainer->Add(fhPtIso) ; |
1797 | ||
124bffb3 | 1798 | fhPhiIso = new TH2F("hPhi", |
1799 | Form("Number of isolated particles vs #phi, %s",parTitle.Data()), | |
1800 | nptbins,ptmin,ptmax,nphibins,phimin,phimax); | |
1801 | fhPhiIso->SetYTitle("#phi"); | |
1802 | fhPhiIso->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1803 | outputContainer->Add(fhPhiIso) ; | |
1804 | ||
1805 | fhEtaIso = new TH2F("hEta", | |
1806 | Form("Number of isolated particles vs #eta, %s",parTitle.Data()), | |
1807 | nptbins,ptmin,ptmax,netabins,etamin,etamax); | |
1808 | fhEtaIso->SetYTitle("#eta"); | |
1809 | fhEtaIso->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1810 | outputContainer->Add(fhEtaIso) ; | |
1811 | ||
1812 | fhEtaPhiIso = new TH2F("hEtaPhiIso", | |
1813 | Form("Number of isolated particles #eta vs #phi, %s",parTitle.Data()), | |
1814 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
1815 | fhEtaPhiIso->SetXTitle("#eta"); | |
1816 | fhEtaPhiIso->SetYTitle("#phi"); | |
1817 | outputContainer->Add(fhEtaPhiIso) ; | |
1818 | ||
0cea6003 | 1819 | if(IsHighMultiplicityAnalysisOn()) |
977564f5 | 1820 | { |
1821 | fhPtCentralityIso = new TH2F("hPtCentrality", | |
1822 | Form("centrality vs #it{p}_{T} for isolated particles, %s",parTitle.Data()), | |
1823 | nptbins,ptmin,ptmax, 100,0,100); | |
1824 | fhPtCentralityIso->SetYTitle("centrality"); | |
1825 | fhPtCentralityIso->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
1826 | outputContainer->Add(fhPtCentralityIso) ; | |
1827 | ||
1828 | fhPtEventPlaneIso = new TH2F("hPtEventPlane", | |
1829 | Form("event plane angle vs #it{p}_{T} for isolated particles, %s",parTitle.Data()), | |
1830 | nptbins,ptmin,ptmax, 100,0,TMath::Pi()); | |
1831 | fhPtEventPlaneIso->SetYTitle("Event plane angle (rad)"); | |
1832 | fhPtEventPlaneIso->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1833 | outputContainer->Add(fhPtEventPlaneIso) ; | |
1834 | } | |
72433939 | 1835 | |
977564f5 | 1836 | if(fFillNLMHistograms) |
1837 | { | |
1838 | fhPtNLocMaxIso = new TH2F("hPtNLocMax", | |
1839 | Form("Number of isolated particles vs #it{p}_{T}, %s",parTitle.Data()), | |
1840 | nptbins,ptmin,ptmax,10,0,10); | |
1841 | fhPtNLocMaxIso->SetYTitle("#it{NLM}"); | |
1842 | fhPtNLocMaxIso->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
6ae3345d | 1843 | |
124bffb3 | 1844 | fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso", |
1845 | Form("Number of not isolated particles vs #it{p}_{T}, %s",parTitle.Data()), | |
1846 | nptbins,ptmin,ptmax,10,0,10); | |
1847 | fhPtNLocMaxNoIso->SetYTitle("#it{NLM}"); | |
1848 | fhPtNLocMaxNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1849 | outputContainer->Add(fhPtNLocMaxNoIso) ; | |
977564f5 | 1850 | } |
1b1a1b2e | 1851 | |
1852 | fhConePtLead = new TH2F("hConePtLead", | |
1853 | Form("Track or Cluster leading #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), | |
88ab1a2c | 1854 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); |
1b1a1b2e | 1855 | fhConePtLead->SetYTitle("#it{p}_{T, leading} (GeV/#it{c})"); |
1856 | fhConePtLead->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
1857 | outputContainer->Add(fhConePtLead) ; | |
72433939 | 1858 | |
72433939 | 1859 | fhConeSumPt = new TH2F("hConePtSum", |
9a97f32f | 1860 | Form("Track and Cluster #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), |
72433939 | 1861 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); |
dc9c6e78 | 1862 | fhConeSumPt->SetYTitle("#Sigma #it{p}_{T}"); |
9a97f32f | 1863 | fhConeSumPt->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); |
72433939 | 1864 | outputContainer->Add(fhConeSumPt) ; |
1865 | ||
1866 | fhConeSumPtTrigEtaPhi = new TH2F("hConePtSumTrigEtaPhi", | |
6ae3345d | 1867 | Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), |
1868 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
dc9c6e78 | 1869 | fhConeSumPtTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); |
72433939 | 1870 | fhConeSumPtTrigEtaPhi->SetXTitle("#eta_{trigger}"); |
1871 | fhConeSumPtTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
1872 | outputContainer->Add(fhConeSumPtTrigEtaPhi) ; | |
1873 | ||
1874 | fhPtInCone = new TH2F("hPtInCone", | |
9a97f32f | 1875 | Form("#it{p}_{T} of clusters and tracks in isolation cone for #it{R} = %2.2f",r), |
72433939 | 1876 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 1877 | fhPtInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 1878 | fhPtInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
72433939 | 1879 | outputContainer->Add(fhPtInCone) ; |
1880 | ||
dc1966bb | 1881 | if(fFillBackgroundBinHistograms) |
1882 | { | |
7a5b478e | 1883 | fhPtLeadConeBin = new TH1F*[fNBkgBin]; |
1884 | fhSumPtConeBin = new TH1F*[fNBkgBin]; | |
1885 | if(fFillSSHisto) | |
1886 | { | |
1887 | fhPtLeadConeBinLambda0 = new TH2F*[fNBkgBin]; | |
1888 | fhSumPtConeBinLambda0 = new TH2F*[fNBkgBin]; | |
1889 | } | |
1890 | ||
1891 | if(fFillTaggedDecayHistograms) | |
1892 | { | |
1893 | fhPtLeadConeBinDecay = new TH1F*[fNBkgBin*fNDecayBits]; | |
1894 | fhSumPtConeBinDecay = new TH1F*[fNBkgBin*fNDecayBits]; | |
1895 | } | |
dc1966bb | 1896 | |
1897 | if(IsDataMC()) | |
1898 | { | |
7a5b478e | 1899 | fhPtLeadConeBinMC = new TH1F*[fNBkgBin*fgkNmcTypes]; |
1900 | fhSumPtConeBinMC = new TH1F*[fNBkgBin*fgkNmcTypes]; | |
1901 | ||
1902 | if(fFillSSHisto) | |
1903 | { | |
1904 | fhPtLeadConeBinLambda0MC = new TH2F*[fNBkgBin*fgkNmcTypes]; | |
1905 | fhSumPtConeBinLambda0MC = new TH2F*[fNBkgBin*fgkNmcTypes]; | |
1906 | } | |
dc1966bb | 1907 | } |
1908 | ||
1909 | for(Int_t ibin = 0; ibin < fNBkgBin; ibin++) | |
1910 | { | |
7a5b478e | 1911 | fhPtLeadConeBin[ibin] = new TH1F |
1912 | (Form("hPtLeadCone_Bin%d",ibin), | |
1913 | Form("cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s", | |
1914 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax); | |
1915 | fhPtLeadConeBin[ibin]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
1916 | fhPtLeadConeBin[ibin]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1917 | outputContainer->Add(fhPtLeadConeBin[ibin]) ; | |
1918 | ||
1919 | fhSumPtConeBin[ibin] = new TH1F | |
1920 | (Form("hSumPtCone_Bin%d",ibin), | |
1921 | Form("in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s", | |
1922 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax); | |
1923 | fhSumPtConeBin[ibin]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
1924 | fhSumPtConeBin[ibin]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1925 | outputContainer->Add(fhSumPtConeBin[ibin]) ; | |
1926 | ||
1927 | if(fFillTaggedDecayHistograms) | |
1928 | { | |
1929 | for(Int_t idecay = 0; idecay < fNDecayBits; idecay++) | |
1930 | { | |
1931 | Int_t bindecay = ibin+idecay*fNBkgBin; | |
1932 | ||
1933 | fhPtLeadConeBinDecay[bindecay] = new TH1F | |
d125fd57 | 1934 | (Form("hPtLeadCone_Bin%d_DecayBit%d",ibin,fDecayBits[idecay]), |
7a5b478e | 1935 | Form("Decay bit %d, cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s", |
1936 | fDecayBits[idecay],fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax); | |
1937 | fhPtLeadConeBinDecay[bindecay]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
1938 | fhPtLeadConeBinDecay[bindecay]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1939 | outputContainer->Add(fhPtLeadConeBinDecay[bindecay]) ; | |
1940 | ||
1941 | fhSumPtConeBinDecay[bindecay] = new TH1F | |
d125fd57 | 1942 | (Form("hSumPtCone_Bin%d_DecayBit%d",ibin,fDecayBits[idecay]), |
7a5b478e | 1943 | Form("Decay bit %d, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s", |
1944 | fDecayBits[idecay],fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax); | |
1945 | fhSumPtConeBinDecay[bindecay]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
1946 | fhSumPtConeBinDecay[bindecay]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1947 | outputContainer->Add(fhSumPtConeBinDecay[bindecay]) ; | |
1948 | } | |
1949 | } | |
dc1966bb | 1950 | |
1951 | if(IsDataMC()) | |
1952 | { | |
d24561b6 | 1953 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
dc1966bb | 1954 | { |
1955 | Int_t binmc = ibin+imc*fNBkgBin; | |
7a5b478e | 1956 | fhPtLeadConeBinMC[binmc] = new TH1F |
1957 | (Form("hPtLeadCone_Bin%d_MC%s",ibin, mcPartName[imc].Data()), | |
1958 | Form("in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, MC %s, %s", | |
1959 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptbins,ptmin,ptmax); | |
1960 | fhPtLeadConeBinMC[binmc]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
1961 | fhPtLeadConeBinMC[binmc]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1962 | outputContainer->Add(fhPtLeadConeBinMC[binmc]) ; | |
dc1966bb | 1963 | |
7a5b478e | 1964 | fhSumPtConeBinMC[binmc] = new TH1F |
1965 | (Form("hSumPtCone_Bin%d_MC%s",ibin,mcPartName[imc].Data()), | |
1966 | Form("in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, MC %s, %s", | |
1967 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptbins,ptmin,ptmax); | |
1968 | fhSumPtConeBinMC[binmc]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
1969 | fhSumPtConeBinMC[binmc]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1970 | outputContainer->Add(fhSumPtConeBinMC[binmc]) ; | |
dc1966bb | 1971 | } // MC particle loop |
1972 | } | |
1973 | ||
7a5b478e | 1974 | if(fFillSSHisto) |
1975 | { | |
1976 | fhPtLeadConeBinLambda0[ibin] = new TH2F | |
1977 | (Form("hPtLeadConeLambda0_Bin%d",ibin), | |
1978 | Form("#lambda_{0}, in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s", | |
1979 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
1980 | fhPtLeadConeBinLambda0[ibin]->SetYTitle("#lambda_{0}^{2}"); | |
1981 | fhPtLeadConeBinLambda0[ibin]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1982 | outputContainer->Add(fhPtLeadConeBinLambda0[ibin]) ; | |
1983 | ||
1984 | fhSumPtConeBinLambda0[ibin] = new TH2F | |
1985 | (Form("hSumPtConeLambda0_Bin%d",ibin), | |
1986 | Form("#lambda_{0}, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s", | |
1987 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
1988 | fhSumPtConeBinLambda0[ibin]->SetYTitle("#lambda_{0}^{2}"); | |
1989 | fhSumPtConeBinLambda0[ibin]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
1990 | outputContainer->Add(fhSumPtConeBinLambda0[ibin]) ; | |
1991 | ||
1992 | if(IsDataMC()) | |
1993 | { | |
1994 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) | |
1995 | { | |
1996 | Int_t binmc = ibin+imc*fNBkgBin; | |
1997 | fhPtLeadConeBinLambda0MC[binmc] = new TH2F | |
1998 | (Form("hPtLeadConeLambda0_Bin%d_MC%s",ibin, mcPartName[imc].Data()), | |
1999 | Form("#lambda_{0}, in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, MC %s, %s", | |
2000 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
2001 | fhPtLeadConeBinLambda0MC[binmc]->SetYTitle("#lambda_{0}^{2}"); | |
2002 | fhPtLeadConeBinLambda0MC[binmc]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2003 | outputContainer->Add(fhPtLeadConeBinLambda0MC[binmc]) ; | |
2004 | ||
2005 | fhSumPtConeBinLambda0MC[binmc] = new TH2F | |
2006 | (Form("hSumPtConeLambda0_Bin%d_MC%s",ibin,mcPartName[imc].Data()), | |
2007 | Form("#lambda_{0}, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, MC %s, %s", | |
2008 | fBkgBinLimit[ibin],fBkgBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
2009 | fhSumPtConeBinLambda0MC[binmc]->SetYTitle("#lambda_{0}^{2}"); | |
2010 | fhSumPtConeBinLambda0MC[binmc]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2011 | outputContainer->Add(fhSumPtConeBinLambda0MC[binmc]) ; | |
2012 | } // MC particle loop | |
2013 | } | |
2014 | } // shower shape on | |
2015 | } // pt in cone bin loop | |
dc1966bb | 2016 | } // bkg cone pt bin histograms |
7a5b478e | 2017 | |
d125fd57 | 2018 | if(fFillPtTrigBinHistograms) |
7a5b478e | 2019 | { |
d125fd57 | 2020 | fhPtTrigBinPtLeadCone = new TH1F*[fNPtTrigBin]; |
2021 | fhPtTrigBinSumPtCone = new TH1F*[fNPtTrigBin]; | |
2022 | ||
2023 | fhPtTrigBinPtLeadConeDecay = new TH1F*[fNPtTrigBin]; | |
2024 | fhPtTrigBinSumPtConeDecay = new TH1F*[fNPtTrigBin]; | |
7a5b478e | 2025 | |
2026 | if(IsDataMC()) | |
2027 | { | |
d125fd57 | 2028 | fhPtTrigBinPtLeadConeMC = new TH1F*[fNPtTrigBin*fgkNmcTypes]; |
2029 | fhPtTrigBinSumPtConeMC = new TH1F*[fNPtTrigBin*fgkNmcTypes]; | |
2030 | } | |
2031 | ||
2032 | if(fFillSSHisto) | |
2033 | { | |
2034 | fhPtTrigBinLambda0vsPtLeadCone = new TH2F*[fNPtTrigBin]; | |
2035 | fhPtTrigBinLambda0vsSumPtCone = new TH2F*[fNPtTrigBin]; | |
2036 | ||
2037 | if(IsDataMC()) | |
2038 | { | |
2039 | fhPtTrigBinLambda0vsPtLeadConeMC = new TH2F*[fNPtTrigBin*fgkNmcTypes]; | |
2040 | fhPtTrigBinLambda0vsSumPtConeMC = new TH2F*[fNPtTrigBin*fgkNmcTypes]; | |
2041 | } | |
7a5b478e | 2042 | } |
2043 | ||
2044 | for(Int_t ibin = 0; ibin < fNPtTrigBin; ibin++) | |
2045 | { | |
d125fd57 | 2046 | fhPtTrigBinPtLeadCone[ibin] = new TH1F |
2047 | (Form("hPtTrigBin_PtLeadCone_Bin%d",ibin), | |
2048 | Form("#it{p}_{T}^{lead. in cone}, %2.2f<#it{p}_{T}^{cand}<%2.2f GeV/#it{c}, %s", | |
2049 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax); | |
2050 | fhPtTrigBinPtLeadCone[ibin]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
3a5fd800 | 2051 | fhPtTrigBinPtLeadCone[ibin]->SetXTitle("#it{p}_{T}^{in cone} (GeV/#it{c})"); |
d125fd57 | 2052 | outputContainer->Add(fhPtTrigBinPtLeadCone[ibin]) ; |
2053 | ||
2054 | fhPtTrigBinSumPtCone[ibin] = new TH1F | |
2055 | (Form("hPtTrigBin_SumPtCone_Bin%d",ibin), | |
2056 | Form("#Sigma #it{p}_{T}^{in cone} %2.2f <#it{p}_{T}^{cand}< %2.2f GeV/#it{c}, %s", | |
2057 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], parTitle.Data()),nptsumbins,ptsummin,ptsummax); | |
2058 | fhPtTrigBinSumPtCone[ibin]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
3a5fd800 | 2059 | fhPtTrigBinSumPtCone[ibin]->SetXTitle("#Sigma #it{p}_{T}^{in cone} (GeV/#it{c})"); |
d125fd57 | 2060 | outputContainer->Add(fhPtTrigBinSumPtCone[ibin]) ; |
2061 | ||
2062 | if(fFillTaggedDecayHistograms) | |
2063 | { | |
2064 | for(Int_t idecay = 0; idecay < fNDecayBits; idecay++) | |
2065 | { | |
2066 | Int_t binDecay = ibin+idecay*fNPtTrigBin; | |
2067 | ||
2068 | fhPtTrigBinPtLeadConeDecay[binDecay] = new TH1F | |
2069 | (Form("hPtTrigBin_PtLeadCone_Bin%d_DecayBit%d",ibin,fDecayBits[idecay]), | |
2070 | Form("Decay bit %d, #it{p}_{T}^{lead. in cone}, %2.2f<#it{p}_{T}^{cand}<%2.2f GeV/#it{c}, %s", | |
2071 | fDecayBits[idecay],fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax); | |
2072 | fhPtTrigBinPtLeadConeDecay[binDecay]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
a3d5bd9b | 2073 | fhPtTrigBinPtLeadConeDecay[binDecay]->SetXTitle("#it{p}_{T}^{lead in cone} (GeV/#it{c})"); |
d125fd57 | 2074 | outputContainer->Add(fhPtTrigBinPtLeadConeDecay[binDecay]) ; |
2075 | ||
2076 | fhPtTrigBinSumPtConeDecay[binDecay] = new TH1F | |
2077 | (Form("hPtTrigBin_SumPtCone_Bin%d_DecayBit%d",ibin,fDecayBits[idecay]), | |
2078 | Form("Decay bit %d, #Sigma #it{p}_{T}^{in cone} %2.2f <#it{p}_{T}^{cand}< %2.2f GeV/#it{c}, %s", | |
2079 | fDecayBits[idecay],fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], parTitle.Data()),nptsumbins,ptsummin,ptsummax); | |
2080 | fhPtTrigBinSumPtConeDecay[binDecay]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
a3d5bd9b | 2081 | fhPtTrigBinSumPtConeDecay[binDecay]->SetXTitle("#Sigma #it{p}_{T}^{in cone} (GeV/#it{c})"); |
d125fd57 | 2082 | outputContainer->Add(fhPtTrigBinSumPtConeDecay[binDecay]) ; |
2083 | } | |
2084 | } | |
7a5b478e | 2085 | |
2086 | if(IsDataMC()) | |
2087 | { | |
2088 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) | |
2089 | { | |
2090 | Int_t binmc = ibin+imc*fNPtTrigBin; | |
d125fd57 | 2091 | fhPtTrigBinPtLeadConeMC[binmc] = new TH1F |
2092 | (Form("hPtTrigBin_PtLeadCone_Bin%d_MC%s",ibin, mcPartName[imc].Data()), | |
2093 | Form("#it{p}_{T}^{lead. in cone}, %2.2f<#it{p}_{T}^{cand}<%2.2f GeV/#it{c}, MC %s, %s", | |
2094 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptbins,ptmin,ptmax); | |
2095 | fhPtTrigBinPtLeadConeMC[binmc]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
a3d5bd9b | 2096 | fhPtTrigBinPtLeadConeMC[binmc]->SetXTitle("#it{p}_{T}^{lead in cone} (GeV/#it{c})"); |
d125fd57 | 2097 | outputContainer->Add(fhPtTrigBinPtLeadConeMC[binmc]) ; |
7a5b478e | 2098 | |
d125fd57 | 2099 | fhPtTrigBinSumPtConeMC[binmc] = new TH1F |
2100 | (Form("hPtTrigBin_SumPtCone_Bin%d_MC%s",ibin,mcPartName[imc].Data()), | |
2101 | Form("#Sigma #it{p}_{T}^{in cone}, %2.2f <#it{p}_{T}^{cand}< %2.2f GeV/#it{c}, MC %s, %s", | |
2102 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptsumbins,ptsummin,ptsummax); | |
2103 | fhPtTrigBinSumPtConeMC[binmc]->SetYTitle("d #it{N} / d #it{p}_{T}"); | |
a3d5bd9b | 2104 | fhPtTrigBinSumPtConeMC[binmc]->SetXTitle("#Sigma #it{p}_{T}^{in cone} (GeV/#it{c})"); |
d125fd57 | 2105 | outputContainer->Add(fhPtTrigBinSumPtConeMC[binmc]) ; |
7a5b478e | 2106 | } // MC particle loop |
2107 | } // MC | |
d125fd57 | 2108 | |
2109 | if(fFillSSHisto) | |
2110 | { | |
2111 | fhPtTrigBinLambda0vsPtLeadCone[ibin] = new TH2F | |
2112 | (Form("hPtTrigBin_PtLeadConeVSLambda0_Bin%d",ibin), | |
2113 | Form("#lambda_{0} vs #it{p}_{T}^{lead. in cone}, %2.2f<#it{p}_{T}^{cand}<%2.2f GeV/#it{c}, %s", | |
2114 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
2115 | fhPtTrigBinLambda0vsPtLeadCone[ibin]->SetYTitle("#lambda_{0}^{2}"); | |
a3d5bd9b | 2116 | fhPtTrigBinLambda0vsPtLeadCone[ibin]->SetXTitle("#it{p}_{T}^{lead in cone} (GeV/#it{c})"); |
d125fd57 | 2117 | outputContainer->Add(fhPtTrigBinLambda0vsPtLeadCone[ibin]) ; |
2118 | ||
2119 | fhPtTrigBinLambda0vsSumPtCone[ibin] = new TH2F | |
2120 | (Form("hPtTrigBin_SumPtConeVSLambda0_Bin%d",ibin), | |
2121 | Form("#lambda_{0} vs #Sigma #it{p}_{T}^{in cone} %2.2f <#it{p}_{T}^{cand}< %2.2f GeV/#it{c}, %s", | |
2122 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], parTitle.Data()),nptsumbins,ptsummin,ptsummax,ssbins,ssmin,ssmax); | |
2123 | fhPtTrigBinLambda0vsSumPtCone[ibin]->SetYTitle("#lambda_{0}^{2}"); | |
a3d5bd9b | 2124 | fhPtTrigBinLambda0vsSumPtCone[ibin]->SetXTitle("#Sigma #it{p}_{T}^{in cone} (GeV/#it{c})"); |
d125fd57 | 2125 | outputContainer->Add(fhPtTrigBinLambda0vsSumPtCone[ibin]) ; |
2126 | ||
2127 | if(IsDataMC()) | |
2128 | { | |
2129 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) | |
2130 | { | |
2131 | Int_t binmc = ibin+imc*fNPtTrigBin; | |
2132 | fhPtTrigBinLambda0vsPtLeadConeMC[binmc] = new TH2F | |
2133 | (Form("hPtTrigBin_PtLeadConeVSLambda0_Bin%d_MC%s",ibin, mcPartName[imc].Data()), | |
2134 | Form("#lambda_{0} vs #it{p}_{T}^{lead. in cone}, %2.2f<#it{p}_{T}^{cand}<%2.2f GeV/#it{c}, MC %s, %s", | |
2135 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
2136 | fhPtTrigBinLambda0vsPtLeadConeMC[binmc]->SetYTitle("#lambda_{0}^{2}"); | |
a3d5bd9b | 2137 | fhPtTrigBinLambda0vsPtLeadConeMC[binmc]->SetXTitle("#it{p}_{T}^{lead in cone} (GeV/#it{c})"); |
d125fd57 | 2138 | outputContainer->Add(fhPtTrigBinLambda0vsPtLeadConeMC[binmc]) ; |
2139 | ||
2140 | fhPtTrigBinLambda0vsSumPtConeMC[binmc] = new TH2F | |
2141 | (Form("hPtTrigBin_SumPtConeVSLambda0_Bin%d_MC%s",ibin,mcPartName[imc].Data()), | |
2142 | Form("#lambda_{0} vs #Sigma #it{p}_{T}^{in cone}, %2.2f <#it{p}_{T}^{cand}< %2.2f GeV/#it{c}, MC %s, %s", | |
2143 | fPtTrigBinLimit[ibin],fPtTrigBinLimit[ibin+1], mcPartType[imc].Data(), parTitle.Data()),nptsumbins,ptsummin,ptsummax,ssbins,ssmin,ssmax); | |
2144 | fhPtTrigBinLambda0vsSumPtConeMC[binmc]->SetYTitle("#lambda_{0}^{2}"); | |
a3d5bd9b | 2145 | fhPtTrigBinLambda0vsSumPtConeMC[binmc]->SetXTitle("#Sigma #it{p}_{T}^{in cone} (GeV/#it{c})"); |
d125fd57 | 2146 | outputContainer->Add(fhPtTrigBinLambda0vsSumPtConeMC[binmc]) ; |
2147 | } // MC particle loop | |
2148 | } // MC | |
2149 | } // SS histo | |
7a5b478e | 2150 | } // pt trig bin loop |
2151 | } // pt trig bin histograms | |
dc1966bb | 2152 | |
0cea6003 | 2153 | if(IsHighMultiplicityAnalysisOn()) |
977564f5 | 2154 | { |
2155 | fhPtInConeCent = new TH2F("hPtInConeCent", | |
2156 | Form("#it{p}_{T} in isolation cone for #it{R} = %2.2f",r), | |
2157 | 100,0,100,nptinconebins,ptinconemin,ptinconemax); | |
2158 | fhPtInConeCent->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); | |
2159 | fhPtInConeCent->SetXTitle("centrality"); | |
2160 | outputContainer->Add(fhPtInConeCent) ; | |
2161 | } | |
72433939 | 2162 | |
2163 | // Cluster only histograms | |
2164 | if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyCharged) | |
2165 | { | |
2166 | fhConeSumPtCluster = new TH2F("hConePtSumCluster", | |
9a97f32f | 2167 | Form("Cluster #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), |
72433939 | 2168 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); |
dc9c6e78 | 2169 | fhConeSumPtCluster->SetYTitle("#Sigma #it{p}_{T}"); |
9a97f32f | 2170 | fhConeSumPtCluster->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); |
72433939 | 2171 | outputContainer->Add(fhConeSumPtCluster) ; |
2172 | ||
1b1a1b2e | 2173 | fhConePtLeadCluster = new TH2F("hConeLeadPtCluster", |
2174 | Form("Cluster leading in isolation cone for #it{R} = %2.2f",r), | |
88ab1a2c | 2175 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); |
1b1a1b2e | 2176 | fhConePtLeadCluster->SetYTitle("#it{p}_{T, leading} (GeV/#it{c})"); |
2177 | fhConePtLeadCluster->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2178 | outputContainer->Add(fhConePtLeadCluster) ; | |
2179 | ||
2180 | ||
977564f5 | 2181 | if(fFillCellHistograms) |
2182 | { | |
2183 | fhConeSumPtCell = new TH2F("hConePtSumCell", | |
2184 | Form("Cell #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), | |
2185 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2186 | fhConeSumPtCell->SetYTitle("#Sigma #it{p}_{T}"); | |
2187 | fhConeSumPtCell->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2188 | outputContainer->Add(fhConeSumPtCell) ; | |
2189 | } | |
72433939 | 2190 | |
977564f5 | 2191 | if(fFillUEBandSubtractHistograms) |
2192 | { | |
2193 | fhConeSumPtEtaBandUECluster = new TH2F("hConePtSumEtaBandUECluster", | |
2194 | "#Sigma cluster #it{p}_{T} in UE Eta Band", | |
2195 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2196 | fhConeSumPtEtaBandUECluster->SetYTitle("#Sigma #it{p}_{T}"); | |
2197 | fhConeSumPtEtaBandUECluster->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2198 | outputContainer->Add(fhConeSumPtEtaBandUECluster) ; | |
2199 | ||
2200 | fhConeSumPtPhiBandUECluster = new TH2F("hConePtSumPhiBandUECluster", | |
2201 | "#Sigma cluster #it{p}_{T} UE Phi Band", | |
2202 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2203 | fhConeSumPtPhiBandUECluster->SetYTitle("#Sigma #it{p}_{T}"); | |
2204 | fhConeSumPtPhiBandUECluster->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2205 | outputContainer->Add(fhConeSumPtPhiBandUECluster) ; | |
2206 | ||
2207 | fhConeSumPtEtaBandUEClusterTrigEtaPhi = new TH2F("hConePtSumEtaBandUEClusterTrigEtaPhi", | |
2208 | "Trigger #eta vs #phi, #Sigma cluster #it{p}_{T} in UE Eta Band", | |
2209 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2210 | fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2211 | fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2212 | fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2213 | outputContainer->Add(fhConeSumPtEtaBandUEClusterTrigEtaPhi) ; | |
2214 | ||
2215 | fhConeSumPtPhiBandUEClusterTrigEtaPhi = new TH2F("hConePtSumPhiBandUEClusterTrigEtaPhi", | |
2216 | "Trigger #eta vs #phi, #Sigma cluster #it{p}_{T} UE Phi Band", | |
2217 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2218 | fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2219 | fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2220 | fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2221 | outputContainer->Add(fhConeSumPtPhiBandUEClusterTrigEtaPhi) ; | |
2222 | if(fFillCellHistograms) | |
2223 | { | |
2224 | ||
2225 | fhConeSumPtEtaBandUECell = new TH2F("hConePtSumEtaBandUECell", | |
2226 | "#Sigma cell #it{p}_{T} in UE Eta Band", | |
2227 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2228 | fhConeSumPtEtaBandUECell->SetYTitle("#Sigma #it{p}_{T}"); | |
2229 | fhConeSumPtEtaBandUECell->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2230 | outputContainer->Add(fhConeSumPtEtaBandUECell) ; | |
2231 | ||
2232 | fhConeSumPtPhiBandUECell = new TH2F("hConePtSumPhiBandUECell", | |
2233 | "#Sigma cell #it{p}_{T} UE Phi Band", | |
2234 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2235 | fhConeSumPtPhiBandUECell->SetYTitle("#Sigma #it{p}_{T}"); | |
2236 | fhConeSumPtPhiBandUECell->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2237 | outputContainer->Add(fhConeSumPtPhiBandUECell) ; | |
2238 | ||
2239 | fhConeSumPtEtaBandUECellTrigEtaPhi = new TH2F("hConePtSumEtaBandUECellTrigEtaPhi", | |
2240 | "Trigger #eta vs #phi, #Sigma cell #it{p}_{T} in UE Eta Band", | |
2241 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2242 | fhConeSumPtEtaBandUECellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2243 | fhConeSumPtEtaBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2244 | fhConeSumPtEtaBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2245 | outputContainer->Add(fhConeSumPtEtaBandUECellTrigEtaPhi) ; | |
2246 | ||
2247 | fhConeSumPtPhiBandUECellTrigEtaPhi = new TH2F("hConePtSumPhiBandUECellTrigEtaPhi", | |
2248 | "Trigger #eta vs #phi, #Sigma cell #it{p}_{T} UE Phi Band", | |
2249 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2250 | fhConeSumPtPhiBandUECellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2251 | fhConeSumPtPhiBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2252 | fhConeSumPtPhiBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2253 | outputContainer->Add(fhConeSumPtPhiBandUECellTrigEtaPhi) ; | |
2254 | } | |
124bffb3 | 2255 | |
977564f5 | 2256 | fhEtaBandCluster = new TH2F("hEtaBandCluster", |
2257 | Form("#eta vs #phi of clusters in #eta band isolation cone for #it{R} = %2.2f",r), | |
2258 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2259 | fhEtaBandCluster->SetXTitle("#eta"); | |
2260 | fhEtaBandCluster->SetYTitle("#phi"); | |
2261 | outputContainer->Add(fhEtaBandCluster) ; | |
2262 | ||
2263 | fhPhiBandCluster = new TH2F("hPhiBandCluster", | |
2264 | Form("#eta vs #phi of clusters in #phi band isolation cone for #it{R} = %2.2f",r), | |
2265 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2266 | fhPhiBandCluster->SetXTitle("#eta"); | |
2267 | fhPhiBandCluster->SetYTitle("#phi"); | |
2268 | outputContainer->Add(fhPhiBandCluster) ; | |
2269 | ||
2270 | fhEtaPhiInConeCluster= new TH2F("hEtaPhiInConeCluster", | |
2271 | Form("#eta vs #phi of clusters in cone for #it{R} = %2.2f",r), | |
2272 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2273 | fhEtaPhiInConeCluster->SetXTitle("#eta"); | |
2274 | fhEtaPhiInConeCluster->SetYTitle("#phi"); | |
2275 | outputContainer->Add(fhEtaPhiInConeCluster) ; | |
2276 | ||
2277 | fhEtaPhiCluster= new TH2F("hEtaPhiCluster", | |
2278 | Form("#eta vs #phi of all clusters"), | |
2279 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2280 | fhEtaPhiCluster->SetXTitle("#eta"); | |
2281 | fhEtaPhiCluster->SetYTitle("#phi"); | |
2282 | outputContainer->Add(fhEtaPhiCluster) ; | |
6ae3345d | 2283 | |
977564f5 | 2284 | } |
9b01dc66 | 2285 | |
72433939 | 2286 | fhPtClusterInCone = new TH2F("hPtClusterInCone", |
9a97f32f | 2287 | Form("#it{p}_{T} of clusters in isolation cone for #it{R} = %2.2f",r), |
72433939 | 2288 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 2289 | fhPtClusterInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 2290 | fhPtClusterInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
72433939 | 2291 | outputContainer->Add(fhPtClusterInCone) ; |
2292 | ||
977564f5 | 2293 | if(fFillCellHistograms) |
2294 | { | |
2295 | fhPtCellInCone = new TH2F("hPtCellInCone", | |
2296 | Form("#it{p}_{T} of cells in isolation cone for #it{R} = %2.2f",r), | |
2297 | nptbins,ptmin,ptmax,1000,0,50); | |
2298 | fhPtCellInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); | |
2299 | fhPtCellInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2300 | outputContainer->Add(fhPtCellInCone) ; | |
2301 | ||
2302 | fhEtaBandCell = new TH2F("hEtaBandCell", | |
2303 | Form("#col vs #row of cells in #eta band isolation cone for #it{R} = %2.2f",r), | |
2304 | 96,0,95,128,0,127); | |
2305 | fhEtaBandCell->SetXTitle("#col"); | |
2306 | fhEtaBandCell->SetYTitle("#row"); | |
2307 | outputContainer->Add(fhEtaBandCell) ; | |
2308 | ||
2309 | fhPhiBandCell = new TH2F("hPhiBandCell", | |
2310 | Form("#col vs #row of cells in #phi band isolation cone for #it{R} = %2.2f",r), | |
2311 | 96,0,95,128,0,127); | |
2312 | fhPhiBandCell->SetXTitle("#col"); | |
2313 | fhPhiBandCell->SetYTitle("#row"); | |
2314 | outputContainer->Add(fhPhiBandCell) ; | |
2315 | } | |
72433939 | 2316 | |
977564f5 | 2317 | if(fFillUEBandSubtractHistograms) |
2318 | { | |
2319 | fhConeSumPtEtaUESubCluster = new TH2F("hConeSumPtEtaUESubCluster", | |
2320 | Form("Clusters #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2321 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2322 | fhConeSumPtEtaUESubCluster->SetYTitle("#Sigma #it{p}_{T}"); | |
2323 | fhConeSumPtEtaUESubCluster->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2324 | outputContainer->Add(fhConeSumPtEtaUESubCluster) ; | |
2325 | ||
2326 | fhConeSumPtPhiUESubCluster = new TH2F("hConeSumPtPhiUESubCluster", | |
2327 | Form("Clusters #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2328 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2329 | fhConeSumPtPhiUESubCluster->SetYTitle("#Sigma #it{p}_{T}"); | |
2330 | fhConeSumPtPhiUESubCluster->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2331 | outputContainer->Add(fhConeSumPtPhiUESubCluster) ; | |
2332 | ||
2333 | fhConeSumPtEtaUESubClusterTrigEtaPhi = new TH2F("hConeSumPtEtaUESubClusterTrigEtaPhi", | |
2334 | Form("Trigger #eta vs #phi, Clusters #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2335 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2336 | fhConeSumPtEtaUESubClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2337 | fhConeSumPtEtaUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2338 | fhConeSumPtEtaUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2339 | outputContainer->Add(fhConeSumPtEtaUESubClusterTrigEtaPhi) ; | |
2340 | ||
2341 | fhConeSumPtPhiUESubClusterTrigEtaPhi = new TH2F("hConeSumPtPhiUESubClusterTrigEtaPhi", | |
2342 | Form("Trigger #eta vs #phi, Clusters #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2343 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2344 | fhConeSumPtPhiUESubClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2345 | fhConeSumPtPhiUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2346 | fhConeSumPtPhiUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2347 | outputContainer->Add(fhConeSumPtPhiUESubClusterTrigEtaPhi) ; | |
2348 | ||
2349 | if(fFillCellHistograms) | |
2350 | { | |
2351 | fhConeSumPtEtaUESubCell = new TH2F("hConeSumPtEtaUESubCell", | |
2352 | Form("Cells #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2353 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2354 | fhConeSumPtEtaUESubCell->SetYTitle("#Sigma #it{p}_{T}"); | |
2355 | fhConeSumPtEtaUESubCell->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2356 | outputContainer->Add(fhConeSumPtEtaUESubCell) ; | |
2357 | ||
2358 | fhConeSumPtPhiUESubCell = new TH2F("hConeSumPtPhiUESubCell", | |
2359 | Form("Cells #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2360 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2361 | fhConeSumPtPhiUESubCell->SetYTitle("#Sigma #it{p}_{T}"); | |
2362 | fhConeSumPtPhiUESubCell->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2363 | outputContainer->Add(fhConeSumPtPhiUESubCell) ; | |
2364 | ||
2365 | fhConeSumPtEtaUESubCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubCellTrigEtaPhi", | |
2366 | Form("Trigger #eta vs #phi, Cells #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
72433939 | 2367 | netabins,etamin,etamax,nphibins,phimin,phimax); |
977564f5 | 2368 | fhConeSumPtEtaUESubCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); |
2369 | fhConeSumPtEtaUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2370 | fhConeSumPtEtaUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2371 | outputContainer->Add(fhConeSumPtEtaUESubCellTrigEtaPhi) ; | |
2372 | ||
2373 | fhConeSumPtPhiUESubCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubCellTrigEtaPhi", | |
2374 | Form("Trigger #eta vs #phi, Cells #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
72433939 | 2375 | netabins,etamin,etamax,nphibins,phimin,phimax); |
977564f5 | 2376 | fhConeSumPtPhiUESubCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); |
2377 | fhConeSumPtPhiUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2378 | fhConeSumPtPhiUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2379 | outputContainer->Add(fhConeSumPtPhiUESubCellTrigEtaPhi) ; | |
2380 | } | |
2381 | ||
2382 | fhFractionClusterOutConeEta = new TH2F("hFractionClusterOutConeEta", | |
2383 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #eta acceptance",r), | |
2384 | nptbins,ptmin,ptmax,100,0,1); | |
2385 | fhFractionClusterOutConeEta->SetYTitle("#it{fraction}"); | |
2386 | fhFractionClusterOutConeEta->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})"); | |
2387 | outputContainer->Add(fhFractionClusterOutConeEta) ; | |
2388 | ||
2389 | fhFractionClusterOutConeEtaTrigEtaPhi = new TH2F("hFractionClusterOutConeEtaTrigEtaPhi", | |
2390 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #eta acceptance, in trigger #eta-#phi ",r), | |
2391 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2392 | fhFractionClusterOutConeEtaTrigEtaPhi->SetZTitle("#it{fraction}"); | |
2393 | fhFractionClusterOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2394 | fhFractionClusterOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2395 | outputContainer->Add(fhFractionClusterOutConeEtaTrigEtaPhi) ; | |
2396 | ||
2397 | fhFractionClusterOutConePhi = new TH2F("hFractionClusterOutConePhi", | |
2398 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #phi acceptance",r), | |
2399 | nptbins,ptmin,ptmax,100,0,1); | |
2400 | fhFractionClusterOutConePhi->SetYTitle("#it{fraction}"); | |
2401 | fhFractionClusterOutConePhi->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})"); | |
2402 | outputContainer->Add(fhFractionClusterOutConePhi) ; | |
2403 | ||
2404 | fhFractionClusterOutConePhiTrigEtaPhi = new TH2F("hFractionClusterOutConePhiTrigEtaPhi", | |
2405 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #phi acceptance, in trigger #eta-#phi ",r), | |
2406 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2407 | fhFractionClusterOutConePhiTrigEtaPhi->SetZTitle("#it{fraction}"); | |
2408 | fhFractionClusterOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2409 | fhFractionClusterOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2410 | outputContainer->Add(fhFractionClusterOutConePhiTrigEtaPhi) ; | |
2411 | ||
2412 | fhConeSumPtSubvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCluster", | |
2413 | Form("#Sigma #it{p}_{T} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2414 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2415 | fhConeSumPtSubvsConeSumPtTotPhiCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2416 | fhConeSumPtSubvsConeSumPtTotPhiCluster->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})"); | |
2417 | outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCluster); | |
2418 | ||
2419 | fhConeSumPtSubNormvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCluster", | |
2420 | Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2421 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2422 | fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2423 | fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})"); | |
2424 | outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCluster); | |
2425 | ||
2426 | fhConeSumPtSubvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCluster", | |
2427 | Form("#Sigma #it{p}_{T} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2428 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2429 | fhConeSumPtSubvsConeSumPtTotEtaCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2430 | fhConeSumPtSubvsConeSumPtTotEtaCluster->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})"); | |
2431 | outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCluster); | |
2432 | ||
2433 | fhConeSumPtSubNormvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCluster", | |
2434 | Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2435 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2436 | fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2437 | fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})"); | |
2438 | outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCluster); | |
2439 | ||
2440 | fhConeSumPtVSUEClusterEtaBand = new TH2F("hConeSumPtVSUEClusterEtaBand", | |
2441 | Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in eta band for cluster (before normalization), R=%2.2f",r), | |
2442 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,ptsummin,2*ptsummax); | |
2443 | fhConeSumPtVSUEClusterEtaBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})"); | |
2444 | fhConeSumPtVSUEClusterEtaBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})"); | |
2445 | outputContainer->Add(fhConeSumPtVSUEClusterEtaBand); | |
2446 | ||
2447 | fhConeSumPtVSUEClusterPhiBand = new TH2F("hConeSumPtVSUEClusterPhiBand", | |
2448 | Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in phi band for cluster (before normalization), R=%2.2f",r), | |
2449 | nptsumbins,ptsummin,ptsummax,8*nptsumbins,ptsummin,8*ptsummax); | |
2450 | fhConeSumPtVSUEClusterPhiBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})"); | |
2451 | fhConeSumPtVSUEClusterPhiBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})"); | |
2452 | outputContainer->Add(fhConeSumPtVSUEClusterPhiBand); | |
6ae3345d | 2453 | |
977564f5 | 2454 | if(fFillCellHistograms) |
2455 | { | |
2456 | fhFractionCellOutConeEta = new TH2F("hFractionCellOutConeEta", | |
2457 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #eta acceptance",r), | |
2458 | nptbins,ptmin,ptmax,100,0,1); | |
2459 | fhFractionCellOutConeEta->SetYTitle("#it{fraction}"); | |
2460 | fhFractionCellOutConeEta->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})"); | |
2461 | outputContainer->Add(fhFractionCellOutConeEta) ; | |
2462 | ||
2463 | fhFractionCellOutConeEtaTrigEtaPhi = new TH2F("hFractionCellOutConeEtaTrigEtaPhi", | |
2464 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #eta acceptance, in trigger #eta-#phi ",r), | |
2465 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2466 | fhFractionCellOutConeEtaTrigEtaPhi->SetZTitle("#it{fraction}"); | |
2467 | fhFractionCellOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2468 | fhFractionCellOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2469 | outputContainer->Add(fhFractionCellOutConeEtaTrigEtaPhi) ; | |
2470 | ||
2471 | fhFractionCellOutConePhi = new TH2F("hFractionCellOutConePhi", | |
2472 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #phi acceptance",r), | |
2473 | nptbins,ptmin,ptmax,100,0,1); | |
2474 | fhFractionCellOutConePhi->SetYTitle("#it{fraction}"); | |
2475 | fhFractionCellOutConePhi->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})"); | |
2476 | outputContainer->Add(fhFractionCellOutConePhi) ; | |
2477 | ||
2478 | fhFractionCellOutConePhiTrigEtaPhi = new TH2F("hFractionCellOutConePhiTrigEtaPhi", | |
2479 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #phi acceptance, in trigger #eta-#phi ",r), | |
2480 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2481 | fhFractionCellOutConePhiTrigEtaPhi->SetZTitle("#it{fraction}"); | |
2482 | fhFractionCellOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2483 | fhFractionCellOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2484 | outputContainer->Add(fhFractionCellOutConePhiTrigEtaPhi) ; | |
2485 | ||
2486 | ||
2487 | fhConeSumPtSubvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCell", | |
2488 | Form("#Sigma #it{p}_{T} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
b5d10017 | 2489 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); |
977564f5 | 2490 | fhConeSumPtSubvsConeSumPtTotPhiCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); |
2491 | fhConeSumPtSubvsConeSumPtTotPhiCell->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})"); | |
2492 | outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCell); | |
2493 | ||
2494 | fhConeSumPtSubNormvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCell", | |
2495 | Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2496 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2497 | fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2498 | fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})"); | |
2499 | outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCell); | |
2500 | ||
2501 | fhConeSumPtSubvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCell", | |
2502 | Form("#Sigma #it{p}_{T} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
b5d10017 | 2503 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); |
977564f5 | 2504 | fhConeSumPtSubvsConeSumPtTotEtaCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); |
2505 | fhConeSumPtSubvsConeSumPtTotEtaCell->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})"); | |
2506 | outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCell); | |
2507 | ||
2508 | fhConeSumPtSubNormvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCell", | |
2509 | Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2510 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2511 | fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2512 | fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})"); | |
2513 | outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCell); | |
2514 | } | |
2515 | } | |
72433939 | 2516 | } |
2517 | ||
2518 | // Track only histograms | |
2519 | if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral) | |
2520 | { | |
2521 | fhConeSumPtTrack = new TH2F("hConePtSumTrack", | |
9a97f32f | 2522 | Form("Track #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), |
72433939 | 2523 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); |
dc9c6e78 | 2524 | fhConeSumPtTrack->SetYTitle("#Sigma #it{p}_{T}"); |
9a97f32f | 2525 | fhConeSumPtTrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); |
72433939 | 2526 | outputContainer->Add(fhConeSumPtTrack) ; |
1b1a1b2e | 2527 | |
2528 | fhConePtLeadTrack = new TH2F("hConeLeadPtTrack", | |
2529 | Form("Track leading in isolation cone for #it{R} = %2.2f",r), | |
88ab1a2c | 2530 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); |
1b1a1b2e | 2531 | fhConePtLeadTrack->SetYTitle("#it{p}_{T, leading} (GeV/#it{c})"); |
2532 | fhConePtLeadTrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2533 | outputContainer->Add(fhConePtLeadTrack) ; | |
72433939 | 2534 | |
72433939 | 2535 | fhPtTrackInCone = new TH2F("hPtTrackInCone", |
9a97f32f | 2536 | Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f",r), |
72433939 | 2537 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 2538 | fhPtTrackInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 2539 | fhPtTrackInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
72433939 | 2540 | outputContainer->Add(fhPtTrackInCone) ; |
6ae3345d | 2541 | |
72433939 | 2542 | |
977564f5 | 2543 | if(fFillUEBandSubtractHistograms) |
2544 | { | |
2545 | fhConeSumPtEtaBandUETrack = new TH2F("hConePtSumEtaBandUETrack", | |
2546 | "#Sigma track #it{p}_{T} in UE Eta Band", | |
2547 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2548 | fhConeSumPtEtaBandUETrack->SetYTitle("#Sigma #it{p}_{T}"); | |
2549 | fhConeSumPtEtaBandUETrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2550 | outputContainer->Add(fhConeSumPtEtaBandUETrack) ; | |
2551 | ||
2552 | fhConeSumPtPhiBandUETrack = new TH2F("hConePtSumPhiBandUETrack", | |
2553 | "#Sigma track #it{p}_{T} in UE Phi Band", | |
2554 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax*8); | |
2555 | fhConeSumPtPhiBandUETrack->SetYTitle("#Sigma #it{p}_{T}"); | |
2556 | fhConeSumPtPhiBandUETrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2557 | outputContainer->Add(fhConeSumPtPhiBandUETrack) ; | |
2558 | ||
2559 | ||
2560 | fhConeSumPtEtaBandUETrackTrigEtaPhi = new TH2F("hConePtSumEtaBandUETrackTrigEtaPhi", | |
2561 | "Trigger #eta vs #phi, #Sigma track #it{p}_{T} in UE Eta Band", | |
2562 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2563 | fhConeSumPtEtaBandUETrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2564 | fhConeSumPtEtaBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2565 | fhConeSumPtEtaBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2566 | outputContainer->Add(fhConeSumPtEtaBandUETrackTrigEtaPhi) ; | |
2567 | ||
2568 | fhConeSumPtPhiBandUETrackTrigEtaPhi = new TH2F("hConePtSumPhiBandUETrackTrigEtaPhi", | |
2569 | "Trigger #eta vs #phi, #Sigma track #it{p}_{T} in UE Phi Band", | |
2570 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2571 | fhConeSumPtPhiBandUETrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2572 | fhConeSumPtPhiBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2573 | fhConeSumPtPhiBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2574 | outputContainer->Add(fhConeSumPtPhiBandUETrackTrigEtaPhi) ; | |
2575 | ||
2576 | fhEtaBandTrack = new TH2F("hEtaBandTrack", | |
2577 | Form("#eta vs #phi of tracks in #eta band isolation cone for #it{R} = %2.2f",r), | |
2578 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2579 | fhEtaBandTrack->SetXTitle("#eta"); | |
2580 | fhEtaBandTrack->SetYTitle("#phi"); | |
2581 | outputContainer->Add(fhEtaBandTrack) ; | |
2582 | ||
2583 | fhPhiBandTrack = new TH2F("hPhiBandTrack", | |
2584 | Form("#eta vs #phi of tracks in #phi band isolation cone for #it{R} = %2.2f",r), | |
2585 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2586 | fhPhiBandTrack->SetXTitle("#eta"); | |
2587 | fhPhiBandTrack->SetYTitle("#phi"); | |
2588 | outputContainer->Add(fhPhiBandTrack) ; | |
2589 | ||
2590 | fhConeSumPtEtaUESubTrack = new TH2F("hConeSumPtEtaUESubTrack", | |
2591 | Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2592 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2593 | fhConeSumPtEtaUESubTrack->SetYTitle("#Sigma #it{p}_{T}"); | |
2594 | fhConeSumPtEtaUESubTrack->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2595 | outputContainer->Add(fhConeSumPtEtaUESubTrack) ; | |
2596 | ||
2597 | fhConeSumPtPhiUESubTrack = new TH2F("hConeSumPtPhiUESubTrack", | |
2598 | Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2599 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2600 | fhConeSumPtPhiUESubTrack->SetYTitle("#Sigma #it{p}_{T}"); | |
2601 | fhConeSumPtPhiUESubTrack->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2602 | outputContainer->Add(fhConeSumPtPhiUESubTrack) ; | |
2603 | ||
2604 | fhConeSumPtEtaUESubTrackTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackTrigEtaPhi", | |
2605 | Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2606 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2607 | fhConeSumPtEtaUESubTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2608 | fhConeSumPtEtaUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2609 | fhConeSumPtEtaUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2610 | outputContainer->Add(fhConeSumPtEtaUESubTrackTrigEtaPhi) ; | |
2611 | ||
2612 | fhConeSumPtPhiUESubTrackTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackTrigEtaPhi", | |
2613 | Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2614 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2615 | fhConeSumPtPhiUESubTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2616 | fhConeSumPtPhiUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2617 | fhConeSumPtPhiUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2618 | outputContainer->Add(fhConeSumPtPhiUESubTrackTrigEtaPhi) ; | |
2619 | ||
2620 | fhFractionTrackOutConeEta = new TH2F("hFractionTrackOutConeEta", | |
2621 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of tracks #eta acceptance",r), | |
2622 | nptbins,ptmin,ptmax,100,0,1); | |
2623 | fhFractionTrackOutConeEta->SetYTitle("#it{fraction}"); | |
2624 | fhFractionTrackOutConeEta->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})"); | |
2625 | outputContainer->Add(fhFractionTrackOutConeEta) ; | |
2626 | ||
2627 | fhFractionTrackOutConeEtaTrigEtaPhi = new TH2F("hFractionTrackOutConeEtaTrigEtaPhi", | |
2628 | Form("Fraction of the isolation cone #it{R} = %2.2f, out of tracks #eta acceptance, in trigger #eta-#phi ",r), | |
2629 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2630 | fhFractionTrackOutConeEtaTrigEtaPhi->SetZTitle("#it{fraction}"); | |
2631 | fhFractionTrackOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2632 | fhFractionTrackOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2633 | outputContainer->Add(fhFractionTrackOutConeEtaTrigEtaPhi) ; | |
2634 | ||
2635 | fhConeSumPtSubvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubvsConeSumPtTotPhiTrack", | |
2636 | Form("#Sigma #it{p}_{T} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2637 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2638 | fhConeSumPtSubvsConeSumPtTotPhiTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2639 | fhConeSumPtSubvsConeSumPtTotPhiTrack->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})"); | |
2640 | outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiTrack); | |
2641 | ||
2642 | fhConeSumPtSubNormvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiTrack", | |
2643 | Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2644 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2645 | fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2646 | fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})"); | |
2647 | outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiTrack); | |
2648 | ||
2649 | fhConeSumPtSubvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubvsConeSumPtTotEtaTrack", | |
2650 | Form("#Sigma #it{p}_{T} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2651 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2652 | fhConeSumPtSubvsConeSumPtTotEtaTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2653 | fhConeSumPtSubvsConeSumPtTotEtaTrack->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})"); | |
2654 | outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaTrack); | |
2655 | ||
2656 | fhConeSumPtSubNormvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaTrack", | |
2657 | Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r), | |
2658 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2659 | fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})"); | |
2660 | fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})"); | |
2661 | outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaTrack); | |
2662 | ||
2663 | ||
2664 | // UE in perpendicular cone | |
2665 | fhPerpConeSumPt = new TH2F("hPerpConePtSum", | |
2666 | Form("#Sigma #it{p}_{T} in isolation cone at #pm 45 degree phi from trigger particle, #it{R} = %2.2f",r), | |
2667 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2668 | fhPerpConeSumPt->SetYTitle("#Sigma #it{p}_{T}"); | |
2669 | fhPerpConeSumPt->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2670 | outputContainer->Add(fhPerpConeSumPt) ; | |
2671 | ||
2672 | fhPtInPerpCone = new TH2F("hPtInPerpCone", | |
2673 | Form("#it{p}_{T} in isolation cone at #pm 45 degree phi from trigger particle, #it{R} = %2.2f",r), | |
2674 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); | |
2675 | fhPtInPerpCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); | |
2676 | fhPtInPerpCone->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2677 | outputContainer->Add(fhPtInPerpCone) ; | |
2678 | ||
2679 | fhEtaPhiTrack= new TH2F("hEtaPhiTrack", | |
2680 | Form("#eta vs #phi of all Tracks"), | |
2681 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2682 | fhEtaPhiTrack->SetXTitle("#eta"); | |
2683 | fhEtaPhiTrack->SetYTitle("#phi"); | |
2684 | outputContainer->Add(fhEtaPhiTrack) ; | |
2685 | ||
2686 | fhEtaPhiInConeTrack= new TH2F("hEtaPhiInConeTrack", | |
2687 | Form("#eta vs #phi of Tracks in cone for #it{R} = %2.2f",r), | |
2688 | netabins,-1,1,nphibins,0,TMath::TwoPi()); | |
2689 | fhEtaPhiInConeTrack->SetXTitle("#eta"); | |
2690 | fhEtaPhiInConeTrack->SetYTitle("#phi"); | |
2691 | outputContainer->Add(fhEtaPhiInConeTrack) ; | |
2692 | ||
2693 | fhConeSumPtVSUETracksEtaBand = new TH2F("hConeSumPtVSUETracksEtaBand", | |
2694 | Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in eta band for tracks (before normalization), R=%2.2f",r), | |
2695 | nptsumbins,ptsummin,ptsummax,2*nptsumbins,ptsummin,2*ptsummax); | |
2696 | fhConeSumPtVSUETracksEtaBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})"); | |
2697 | fhConeSumPtVSUETracksEtaBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})"); | |
2698 | outputContainer->Add(fhConeSumPtVSUETracksEtaBand); | |
2699 | ||
2700 | fhConeSumPtVSUETracksPhiBand = new TH2F("hConeSumPtVSUETracksPhiBand", | |
2701 | Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in phi band for tracks (before normalization), R=%2.2f",r), | |
2702 | nptsumbins,ptsummin,ptsummax,8*nptsumbins,ptsummin,8*ptsummax); | |
2703 | fhConeSumPtVSUETracksPhiBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})"); | |
2704 | fhConeSumPtVSUETracksPhiBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})"); | |
2705 | outputContainer->Add(fhConeSumPtVSUETracksPhiBand); | |
2706 | } | |
72433939 | 2707 | } |
2708 | ||
977564f5 | 2709 | if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged ) |
72433939 | 2710 | { |
72433939 | 2711 | fhConeSumPtClustervsTrack = new TH2F("hConePtSumClustervsTrack", |
9a97f32f | 2712 | Form("Track vs Cluster #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), |
72433939 | 2713 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); |
dc1966bb | 2714 | fhConeSumPtClustervsTrack->SetXTitle("#Sigma #it{p}_{T}^{cluster} (GeV/#it{c})"); |
2715 | fhConeSumPtClustervsTrack->SetYTitle("#Sigma #it{p}_{T}^{track} (GeV/#it{c})"); | |
72433939 | 2716 | outputContainer->Add(fhConeSumPtClustervsTrack) ; |
dc1966bb | 2717 | |
2718 | fhConeSumPtClusterTrackFrac = new TH2F("hConePtSumClusterTrackFraction", | |
2719 | Form("#Sigma #it{p}_{T}^{cluster}/#Sigma #it{p}_{T}^{track} in isolation cone for #it{R} = %2.2f",r), | |
88ab1a2c | 2720 | nptbins,ptmin,ptmax,200,0,5); |
dc1966bb | 2721 | fhConeSumPtClusterTrackFrac->SetYTitle("#Sigma #it{p}^{cluster}_{T} /#Sigma #it{p}_{T}^{track}"); |
2722 | fhConeSumPtClusterTrackFrac->SetXTitle("#it{p}^{trigger}_{T} (GeV/#it{c})"); | |
2723 | outputContainer->Add(fhConeSumPtClusterTrackFrac) ; | |
2724 | ||
2725 | ||
2726 | fhConePtLeadClustervsTrack = new TH2F("hConePtLeadClustervsTrack", | |
2727 | Form("Track vs Cluster lead #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), | |
2728 | nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
2729 | fhConePtLeadClustervsTrack->SetXTitle("#it{p}^{leading cluster}_{T} (GeV/#it{c})"); | |
2730 | fhConePtLeadClustervsTrack->SetYTitle("#it{p}^{leading track}_{T} (GeV/#it{c})"); | |
2731 | outputContainer->Add(fhConePtLeadClustervsTrack) ; | |
2732 | ||
2733 | fhConePtLeadClusterTrackFrac = new TH2F("hConePtLeadClusterTrackFraction", | |
2734 | Form(" #it{p}^{leading cluster}_{T}/#it{p}^{leading track}_{T} in isolation cone for #it{R} = %2.2f",r), | |
88ab1a2c | 2735 | nptbins,ptmin,ptmax,200,0,5); |
dc1966bb | 2736 | fhConePtLeadClusterTrackFrac->SetYTitle("#it{p}^{leading cluster}_{T}/ #it{p}^{leading track}_{T}"); |
2737 | fhConePtLeadClusterTrackFrac->SetXTitle("#it{p}^{trigger}_{T} (GeV/#it{c})"); | |
2738 | outputContainer->Add(fhConePtLeadClusterTrackFrac) ; | |
2739 | ||
72433939 | 2740 | |
977564f5 | 2741 | if(fFillCellHistograms) |
2742 | { | |
2743 | fhConeSumPtCellvsTrack = new TH2F("hConePtSumCellvsTrack", | |
2744 | Form("Track vs cell #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), | |
2745 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); | |
2746 | fhConeSumPtCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell"); | |
2747 | fhConeSumPtCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2748 | outputContainer->Add(fhConeSumPtCellvsTrack) ; | |
2749 | ||
2750 | fhConeSumPtCellTrack = new TH2F("hConePtSumCellTrack", | |
2751 | Form("Track and Cell #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), | |
2752 | nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); | |
2753 | fhConeSumPtCellTrack->SetYTitle("#Sigma #it{p}_{T}"); | |
2754 | fhConeSumPtCellTrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})"); | |
2755 | outputContainer->Add(fhConeSumPtCellTrack) ; | |
2756 | ||
2757 | fhConeSumPtCellTrackTrigEtaPhi = new TH2F("hConePtSumCellTrackTrigEtaPhi", | |
2758 | Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r), | |
2759 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2760 | fhConeSumPtCellTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2761 | fhConeSumPtCellTrackTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2762 | fhConeSumPtCellTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2763 | outputContainer->Add(fhConeSumPtCellTrackTrigEtaPhi) ; | |
2764 | ||
2765 | } | |
9b01dc66 | 2766 | |
977564f5 | 2767 | if(fFillUEBandSubtractHistograms) |
2768 | { | |
2769 | fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub", | |
2770 | Form("#Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2771 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2772 | fhConeSumPtEtaUESub->SetYTitle("#Sigma #it{p}_{T}"); | |
2773 | fhConeSumPtEtaUESub->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2774 | outputContainer->Add(fhConeSumPtEtaUESub) ; | |
2775 | ||
2776 | fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub", | |
2777 | Form("#Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2778 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2779 | fhConeSumPtPhiUESub->SetYTitle("#Sigma #it{p}_{T}"); | |
2780 | fhConeSumPtPhiUESub->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2781 | outputContainer->Add(fhConeSumPtPhiUESub) ; | |
2782 | ||
2783 | fhConeSumPtEtaUESubTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrigEtaPhi", | |
2784 | Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2785 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2786 | fhConeSumPtEtaUESubTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2787 | fhConeSumPtEtaUESubTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2788 | fhConeSumPtEtaUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2789 | outputContainer->Add(fhConeSumPtEtaUESubTrigEtaPhi) ; | |
2790 | ||
2791 | fhConeSumPtPhiUESubTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrigEtaPhi", | |
2792 | Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2793 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2794 | fhConeSumPtPhiUESubTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2795 | fhConeSumPtPhiUESubTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2796 | fhConeSumPtPhiUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2797 | outputContainer->Add(fhConeSumPtPhiUESubTrigEtaPhi) ; | |
2798 | ||
2799 | fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack", | |
2800 | Form("Track vs Cluster #Sigma #it{p}_{T} UE sub eta band in isolation cone for #it{R} = %2.2f",r), | |
2801 | 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2802 | fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); | |
2803 | fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2804 | outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ; | |
2805 | ||
2806 | fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack", | |
2807 | Form("Track vs Cluster #Sigma #it{p}_{T} UE sub phi band in isolation cone for #it{R} = %2.2f",r), | |
2808 | 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2809 | fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); | |
2810 | fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2811 | outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ; | |
2812 | ||
2813 | fhEtaBandClustervsTrack = new TH2F("hEtaBandClustervsTrack", | |
2814 | Form("Track vs Cluster #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r), | |
9b01dc66 | 2815 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); |
977564f5 | 2816 | fhEtaBandClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); |
2817 | fhEtaBandClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2818 | outputContainer->Add(fhEtaBandClustervsTrack) ; | |
2819 | ||
2820 | fhPhiBandClustervsTrack = new TH2F("hPhiBandClustervsTrack", | |
2821 | Form("Track vs Cluster #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r), | |
2822 | nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8); | |
2823 | fhPhiBandClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); | |
2824 | fhPhiBandClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2825 | outputContainer->Add(fhPhiBandClustervsTrack) ; | |
2826 | ||
2827 | fhEtaBandNormClustervsTrack = new TH2F("hEtaBandNormClustervsTrack", | |
2828 | Form("Track vs Cluster #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r), | |
2829 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); | |
2830 | fhEtaBandNormClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); | |
2831 | fhEtaBandNormClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2832 | outputContainer->Add(fhEtaBandNormClustervsTrack) ; | |
2833 | ||
2834 | fhPhiBandNormClustervsTrack = new TH2F("hPhiBandNormClustervsTrack", | |
2835 | Form("Track vs Cluster #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r), | |
2836 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); | |
2837 | fhPhiBandNormClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); | |
2838 | fhPhiBandNormClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2839 | outputContainer->Add(fhPhiBandNormClustervsTrack) ; | |
2840 | ||
2841 | fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack", | |
2842 | Form("Track vs Cluster #Sigma #it{p}_{T} UE sub eta band in isolation cone for #it{R} = %2.2f",r), | |
2843 | 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2844 | fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); | |
2845 | fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2846 | outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ; | |
2847 | ||
2848 | fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack", | |
2849 | Form("Track vs Cluster #Sigma #it{p}_{T} UE sub phi band in isolation cone for #it{R} = %2.2f",r), | |
2850 | 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2851 | fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster"); | |
2852 | fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2853 | outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ; | |
2854 | ||
2855 | if(fFillCellHistograms) | |
2856 | { | |
2857 | ||
2858 | fhConeSumPtEtaUESubCellvsTrack = new TH2F("hConePtSumEtaUESubCellvsTrack", | |
2859 | Form("Track vs Cell #Sigma #it{p}_{T} UE sub eta band in isolation cone for #it{R} = %2.2f",r), | |
2860 | 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2861 | fhConeSumPtEtaUESubCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell"); | |
2862 | fhConeSumPtEtaUESubCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2863 | outputContainer->Add(fhConeSumPtEtaUESubCellvsTrack) ; | |
2864 | ||
2865 | fhConeSumPtPhiUESubCellvsTrack = new TH2F("hConePhiUESubPtSumCellvsTrack", | |
2866 | Form("Track vs Cell #Sigma #it{p}_{T} UE sub phi band in isolation cone for #it{R} = %2.2f",r), | |
2867 | 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax); | |
2868 | fhConeSumPtPhiUESubCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell"); | |
2869 | fhConeSumPtPhiUESubCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2870 | outputContainer->Add(fhConeSumPtPhiUESubCellvsTrack) ; | |
2871 | ||
2872 | fhEtaBandCellvsTrack = new TH2F("hEtaBandCellvsTrack", | |
7726e3a3 | 2873 | Form("Track vs Cell #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r), |
9b01dc66 | 2874 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); |
977564f5 | 2875 | fhEtaBandCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell"); |
2876 | fhEtaBandCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2877 | outputContainer->Add(fhEtaBandCellvsTrack) ; | |
2878 | ||
2879 | fhPhiBandCellvsTrack = new TH2F("hPhiBandCellvsTrack", | |
7726e3a3 | 2880 | Form("Track vs Cell #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r), |
977564f5 | 2881 | nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8); |
2882 | fhPhiBandCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell"); | |
2883 | fhPhiBandCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2884 | outputContainer->Add(fhPhiBandCellvsTrack) ; | |
2885 | ||
2886 | fhEtaBandNormCellvsTrack = new TH2F("hEtaBandNormCellvsTrack", | |
2887 | Form("Track vs Cell #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r), | |
2888 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); | |
2889 | fhEtaBandNormCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell"); | |
2890 | fhEtaBandNormCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2891 | outputContainer->Add(fhEtaBandNormCellvsTrack) ; | |
2892 | ||
2893 | fhPhiBandNormCellvsTrack = new TH2F("hPhiBandNormCellvsTrack", | |
2894 | Form("Track vs Cell #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r), | |
2895 | nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax); | |
2896 | fhPhiBandNormCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell"); | |
2897 | fhPhiBandNormCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track"); | |
2898 | outputContainer->Add(fhPhiBandNormCellvsTrack) ; | |
2899 | ||
2900 | fhConeSumPtEtaUESubTrackCell = new TH2F("hConeSumPtEtaUESubTrackCell", | |
2901 | Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2902 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2903 | fhConeSumPtEtaUESubTrackCell->SetYTitle("#Sigma #it{p}_{T}"); | |
2904 | fhConeSumPtEtaUESubTrackCell->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2905 | outputContainer->Add(fhConeSumPtEtaUESubTrackCell) ; | |
2906 | ||
2907 | fhConeSumPtPhiUESubTrackCell = new TH2F("hConeSumPtPhiUESubTrackCell", | |
2908 | Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2909 | nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax); | |
2910 | fhConeSumPtPhiUESubTrackCell->SetYTitle("#Sigma #it{p}_{T}"); | |
2911 | fhConeSumPtPhiUESubTrackCell->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
2912 | outputContainer->Add(fhConeSumPtPhiUESubTrackCell) ; | |
2913 | ||
2914 | fhConeSumPtEtaUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackCellTrigEtaPhi", | |
2915 | Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r), | |
2916 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2917 | fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2918 | fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2919 | fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2920 | outputContainer->Add(fhConeSumPtEtaUESubTrackCellTrigEtaPhi) ; | |
2921 | ||
2922 | fhConeSumPtPhiUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackCellTrigEtaPhi", | |
2923 | Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r), | |
2924 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
2925 | fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}"); | |
2926 | fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}"); | |
2927 | fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)"); | |
2928 | outputContainer->Add(fhConeSumPtPhiUESubTrackCellTrigEtaPhi) ; | |
2929 | } | |
2930 | } | |
72433939 | 2931 | } |
977564f5 | 2932 | |
ca134929 | 2933 | for(Int_t iso = 0; iso < 2; iso++) |
b5dbb99b | 2934 | { |
ca134929 | 2935 | if(fFillTMHisto) |
31ae6d59 | 2936 | { |
ca134929 | 2937 | fhTrackMatchedDEta[iso] = new TH2F |
7726e3a3 | 2938 | (Form("hTrackMatchedDEta%s",isoName[iso].Data()), |
2939 | Form("%s - d#eta of cluster-track vs cluster energy, %s",isoTitle[iso].Data(),parTitle.Data()), | |
72433939 | 2940 | nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax); |
ca134929 | 2941 | fhTrackMatchedDEta[iso]->SetYTitle("d#eta"); |
2942 | fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)"); | |
2943 | ||
2944 | fhTrackMatchedDPhi[iso] = new TH2F | |
7726e3a3 | 2945 | (Form("hTrackMatchedDPhi%s",isoName[iso].Data()), |
2946 | Form("%s - d#phi of cluster-track vs cluster energy, %s",isoTitle[iso].Data(),parTitle.Data()), | |
72433939 | 2947 | nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax); |
ca134929 | 2948 | fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)"); |
2949 | fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)"); | |
2950 | ||
2951 | fhTrackMatchedDEtaDPhi[iso] = new TH2F | |
7726e3a3 | 2952 | (Form("hTrackMatchedDEtaDPhi%s",isoName[iso].Data()), |
2953 | Form("%s - d#eta vs d#phi of cluster-track, %s",isoTitle[iso].Data(),parTitle.Data()), | |
72433939 | 2954 | nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax); |
ca134929 | 2955 | fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)"); |
72433939 | 2956 | fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta"); |
ca134929 | 2957 | |
72433939 | 2958 | outputContainer->Add(fhTrackMatchedDEta[iso]) ; |
ca134929 | 2959 | outputContainer->Add(fhTrackMatchedDPhi[iso]) ; |
2960 | outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ; | |
31ae6d59 | 2961 | |
ca134929 | 2962 | fhdEdx[iso] = new TH2F |
7726e3a3 | 2963 | (Form("hdEdx%s",isoName[iso].Data()), |
2964 | Form("%s - Matched track <d#it{E}/d#it{x}> vs cluster #it{E}, %s",isoTitle[iso].Data(),parTitle.Data()), | |
72433939 | 2965 | nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax); |
dc9c6e78 | 2966 | fhdEdx[iso]->SetXTitle("#it{E} (GeV)"); |
9a97f32f | 2967 | fhdEdx[iso]->SetYTitle("<d#it{E}/d#it{x}>"); |
72433939 | 2968 | outputContainer->Add(fhdEdx[iso]); |
31ae6d59 | 2969 | |
ca134929 | 2970 | fhEOverP[iso] = new TH2F |
7726e3a3 | 2971 | (Form("hEOverP%s",isoName[iso].Data()), |
2972 | Form("%s - Matched track #it{E}/#it{p} vs cluster, %s",isoTitle[iso].Data(),parTitle.Data()), | |
72433939 | 2973 | nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax); |
dc9c6e78 | 2974 | fhEOverP[iso]->SetXTitle("#it{E} (GeV)"); |
9a97f32f | 2975 | fhEOverP[iso]->SetYTitle("#it{E}/#it{p}"); |
72433939 | 2976 | outputContainer->Add(fhEOverP[iso]); |
ca134929 | 2977 | |
2978 | if(IsDataMC()) | |
2979 | { | |
2980 | fhTrackMatchedMCParticle[iso] = new TH2F | |
7726e3a3 | 2981 | (Form("hTrackMatchedMCParticle%s",isoName[iso].Data()), |
2982 | Form("%s - Origin of particle vs cluster #it{E}, %s",isoTitle[iso].Data(),parTitle.Data()), | |
72433939 | 2983 | nptbins,ptmin,ptmax,8,0,8); |
dc9c6e78 | 2984 | fhTrackMatchedMCParticle[iso]->SetXTitle("#it{E} (GeV)"); |
ca134929 | 2985 | //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type"); |
2986 | ||
2987 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon"); | |
2988 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron"); | |
2989 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged"); | |
2990 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest"); | |
2991 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon"); | |
2992 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron"); | |
2993 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged"); | |
2994 | fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest"); | |
2995 | ||
72433939 | 2996 | outputContainer->Add(fhTrackMatchedMCParticle[iso]); |
ca134929 | 2997 | } |
31ae6d59 | 2998 | } |
b5dbb99b | 2999 | |
ca134929 | 3000 | if(fFillSSHisto) |
b5dbb99b | 3001 | { |
ca134929 | 3002 | fhELambda0[iso] = new TH2F |
7726e3a3 | 3003 | (Form("hELambda0%s",isoName[iso].Data()), |
3004 | Form("%s cluster : #it{E} vs #lambda_{0}, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
ca134929 | 3005 | fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}"); |
dc9c6e78 | 3006 | fhELambda0[iso]->SetXTitle("#it{E} (GeV)"); |
72433939 | 3007 | outputContainer->Add(fhELambda0[iso]) ; |
6ae3345d | 3008 | |
c12a38d9 | 3009 | // fhELambda1[iso] = new TH2F |
3010 | // (Form("hELambda1%s",isoName[iso].Data()), | |
3011 | // Form("%s cluster: #it{E} vs #lambda_{1}, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3012 | // fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}"); | |
3013 | // fhELambda1[iso]->SetXTitle("#it{E} (GeV)"); | |
3014 | // outputContainer->Add(fhELambda1[iso]) ; | |
6ae3345d | 3015 | |
32d244b0 | 3016 | fhPtLambda0[iso] = new TH2F |
7726e3a3 | 3017 | (Form("hPtLambda0%s",isoName[iso].Data()), |
3018 | Form("%s cluster : #it{p}_{T} vs #lambda_{0}, %s",isoTitle[iso].Data(), parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
32d244b0 | 3019 | fhPtLambda0[iso]->SetYTitle("#lambda_{0}^{2}"); |
dc9c6e78 | 3020 | fhPtLambda0[iso]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
32d244b0 | 3021 | outputContainer->Add(fhPtLambda0[iso]) ; |
93518258 | 3022 | |
764ab1f4 | 3023 | if(IsDataMC()) |
3024 | { | |
d24561b6 | 3025 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
124bffb3 | 3026 | { |
3027 | fhPtLambda0MC[imc][iso] = new TH2F(Form("hPtLambda0%s_MC%s",isoName[iso].Data(),mcPartName[imc].Data()), | |
6ae3345d | 3028 | Form("%s cluster : #it{p}_{T} vs #lambda_{0}: %s %s",isoTitle[iso].Data(),mcPartType[imc].Data(),parTitle.Data()), |
3029 | nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
124bffb3 | 3030 | fhPtLambda0MC[imc][iso]->SetYTitle("#lambda_{0}^{2}"); |
3031 | fhPtLambda0MC[imc][iso]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
3032 | outputContainer->Add( fhPtLambda0MC[imc][iso]) ; | |
3033 | } | |
6ae3345d | 3034 | } |
ca134929 | 3035 | |
32bff2da | 3036 | if(fIsoDetector==kEMCAL && GetFirstSMCoveredByTRD() >= 0) |
7726e3a3 | 3037 | { |
32d244b0 | 3038 | fhPtLambda0TRD[iso] = new TH2F |
7726e3a3 | 3039 | (Form("hPtLambda0TRD%s",isoName[iso].Data()), |
3040 | Form("%s cluster: #it{p}_{T} vs #lambda_{0}, SM behind TRD, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
32d244b0 | 3041 | fhPtLambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}"); |
dc9c6e78 | 3042 | fhPtLambda0TRD[iso]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
32d244b0 | 3043 | outputContainer->Add(fhPtLambda0TRD[iso]) ; |
6ae3345d | 3044 | |
ca134929 | 3045 | fhELambda0TRD[iso] = new TH2F |
7726e3a3 | 3046 | (Form("hELambda0TRD%s",isoName[iso].Data()), |
3047 | Form("%s cluster: #it{E} vs #lambda_{0}, SM behind TRD, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
ca134929 | 3048 | fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}"); |
dc9c6e78 | 3049 | fhELambda0TRD[iso]->SetXTitle("#it{E} (GeV)"); |
72433939 | 3050 | outputContainer->Add(fhELambda0TRD[iso]) ; |
ca134929 | 3051 | |
c12a38d9 | 3052 | // fhELambda1TRD[iso] = new TH2F |
3053 | // (Form("hELambda1TRD%s",isoName[iso].Data()), | |
3054 | // Form("%s cluster: #it{E} vs #lambda_{1}, SM behind TRD, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3055 | // fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}"); | |
3056 | // fhELambda1TRD[iso]->SetXTitle("#it{E} (GeV)"); | |
3057 | // outputContainer->Add(fhELambda1TRD[iso]) ; | |
ca134929 | 3058 | } |
3059 | ||
977564f5 | 3060 | if(fFillNLMHistograms) |
3061 | { | |
3062 | fhNLocMax[iso] = new TH2F | |
3063 | (Form("hNLocMax%s",isoName[iso].Data()), | |
3064 | Form("%s - Number of local maxima in cluster, %s",isoTitle[iso].Data(),parTitle.Data()), | |
3065 | nptbins,ptmin,ptmax,10,0,10); | |
3066 | fhNLocMax[iso]->SetYTitle("#it{NLM}"); | |
3067 | fhNLocMax[iso]->SetXTitle("#it{E} (GeV)"); | |
3068 | outputContainer->Add(fhNLocMax[iso]) ; | |
3069 | ||
3070 | fhELambda0LocMax1[iso] = new TH2F | |
3071 | (Form("hELambda0LocMax1%s",isoName[iso].Data()), | |
3072 | Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{0}, #it{NLM}=1, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3073 | fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}"); | |
3074 | fhELambda0LocMax1[iso]->SetXTitle("#it{E} (GeV)"); | |
3075 | outputContainer->Add(fhELambda0LocMax1[iso]) ; | |
3076 | ||
3077 | fhELambda1LocMax1[iso] = new TH2F | |
3078 | (Form("hELambda1LocMax1%s",isoName[iso].Data()), | |
3079 | Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{1}, #it{NLM}=1, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3080 | fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}"); | |
3081 | fhELambda1LocMax1[iso]->SetXTitle("#it{E} (GeV)"); | |
3082 | outputContainer->Add(fhELambda1LocMax1[iso]) ; | |
3083 | ||
3084 | fhELambda0LocMax2[iso] = new TH2F | |
3085 | (Form("hELambda0LocMax2%s",isoName[iso].Data()), | |
3086 | Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{0}, #it{NLM}=2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3087 | fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}"); | |
3088 | fhELambda0LocMax2[iso]->SetXTitle("#it{E} (GeV)"); | |
3089 | outputContainer->Add(fhELambda0LocMax2[iso]) ; | |
3090 | ||
3091 | fhELambda1LocMax2[iso] = new TH2F | |
3092 | (Form("hELambda1LocMax2%s",isoName[iso].Data()), | |
3093 | Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{1}, #it{NLM}=2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3094 | fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}"); | |
3095 | fhELambda1LocMax2[iso]->SetXTitle("#it{E} (GeV)"); | |
3096 | outputContainer->Add(fhELambda1LocMax2[iso]) ; | |
3097 | ||
3098 | fhELambda0LocMaxN[iso] = new TH2F | |
3099 | ( Form("hELambda0LocMaxN%s",isoName[iso].Data()), | |
3100 | Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{0}, #it{NLM}>2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3101 | fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}"); | |
3102 | fhELambda0LocMaxN[iso]->SetXTitle("#it{E} (GeV)"); | |
3103 | outputContainer->Add(fhELambda0LocMaxN[iso]) ; | |
3104 | ||
3105 | fhELambda1LocMaxN[iso] = new TH2F | |
3106 | (Form("hELambda1LocMaxN%s",isoName[iso].Data()), | |
3107 | Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{1}, #it{NLM}>2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax); | |
3108 | fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}"); | |
3109 | fhELambda1LocMaxN[iso]->SetXTitle("#it{E} (GeV)"); | |
3110 | outputContainer->Add(fhELambda1LocMaxN[iso]) ; | |
3111 | } // NLM | |
3112 | } // SS histo | |
ca134929 | 3113 | } // control histograms for isolated and non isolated objects |
764ab1f4 | 3114 | |
fedea415 | 3115 | |
0cea6003 | 3116 | if(IsPileUpAnalysisOn()) |
6c80c1bf | 3117 | { |
fedea415 | 3118 | fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC", |
9a97f32f | 3119 | Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC!=0",r), |
fedea415 | 3120 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 3121 | fhPtTrackInConeOtherBC->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 3122 | fhPtTrackInConeOtherBC->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
fedea415 | 3123 | outputContainer->Add(fhPtTrackInConeOtherBC) ; |
3124 | ||
3125 | fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD", | |
9a97f32f | 3126 | Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC!=0, pile-up from SPD",r), |
72433939 | 3127 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 3128 | fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 3129 | fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
fedea415 | 3130 | outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ; |
72433939 | 3131 | |
2a9171b5 | 3132 | fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0", |
9a97f32f | 3133 | Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC==0",r), |
72433939 | 3134 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 3135 | fhPtTrackInConeBC0->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 3136 | fhPtTrackInConeBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
2a9171b5 | 3137 | outputContainer->Add(fhPtTrackInConeBC0) ; |
3138 | ||
cc944149 | 3139 | fhPtTrackInConeVtxBC0 = new TH2F("hPtTrackInConeVtxBC0", |
9a97f32f | 3140 | Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC==0",r), |
72433939 | 3141 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 3142 | fhPtTrackInConeVtxBC0->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 3143 | fhPtTrackInConeVtxBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
cc944149 | 3144 | outputContainer->Add(fhPtTrackInConeVtxBC0) ; |
72433939 | 3145 | |
cc944149 | 3146 | |
2a9171b5 | 3147 | fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD", |
9a97f32f | 3148 | Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC==0, pile-up from SPD",r), |
72433939 | 3149 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 3150 | fhPtTrackInConeBC0PileUpSPD->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 3151 | fhPtTrackInConeBC0PileUpSPD->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
2a9171b5 | 3152 | outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ; |
72433939 | 3153 | |
fedea415 | 3154 | |
17af6e24 | 3155 | for (Int_t i = 0; i < 7 ; i++) |
3156 | { | |
3157 | fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()), | |
9a97f32f | 3158 | Form("#it{p}_{T} in isolation cone for #it{R} = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()), |
17af6e24 | 3159 | nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
9a97f32f | 3160 | fhPtInConePileUp[i]->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})"); |
dc9c6e78 | 3161 | fhPtInConePileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
17af6e24 | 3162 | outputContainer->Add(fhPtInConePileUp[i]) ; |
3163 | } | |
6c80c1bf | 3164 | } |
3165 | ||
b5dbb99b | 3166 | if(IsDataMC()) |
3167 | { | |
124bffb3 | 3168 | // For histograms in arrays, index in the array, corresponding to any particle origin |
6ae3345d | 3169 | |
d24561b6 | 3170 | for(Int_t i = 0; i < fgkNmcPrimTypes; i++) |
dc9c6e78 | 3171 | { |
3172 | fhEPrimMC[i] = new TH1F(Form("hEPrim_MC%s",ppname[i].Data()), | |
7726e3a3 | 3173 | Form("primary photon %s : #it{E}, %s",pptype[i].Data(),parTitle.Data()), |
dc9c6e78 | 3174 | nptbins,ptmin,ptmax); |
3175 | fhEPrimMC[i]->SetXTitle("#it{E} (GeV)"); | |
3176 | outputContainer->Add(fhEPrimMC[i]) ; | |
d24561b6 | 3177 | |
3178 | fhPtPrimMC[i] = new TH1F(Form("hPtPrim_MC%s",ppname[i].Data()), | |
3179 | Form("primary photon %s : #it{p}_{T}, %s",pptype[i].Data(),parTitle.Data()), | |
3180 | nptbins,ptmin,ptmax); | |
3181 | fhPtPrimMC[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3182 | outputContainer->Add(fhPtPrimMC[i]) ; | |
3183 | ||
dc9c6e78 | 3184 | fhPtPrimMCiso[i] = new TH1F(Form("hPtPrim_MCiso%s",ppname[i].Data()), |
7726e3a3 | 3185 | Form("primary isolated photon %s : #it{p}_{T}, %s",pptype[i].Data(),parTitle.Data()), |
dc9c6e78 | 3186 | nptbins,ptmin,ptmax); |
3187 | fhPtPrimMCiso[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3188 | outputContainer->Add(fhPtPrimMCiso[i]) ; | |
3189 | ||
3190 | fhEtaPrimMC[i] = new TH2F(Form("hEtaPrim_MC%s",ppname[i].Data()), | |
7726e3a3 | 3191 | Form("primary photon %s : #eta vs #it{p}_{T}, %s",pptype[i].Data(),parTitle.Data()), |
dc9c6e78 | 3192 | nptbins,ptmin,ptmax,200,-2,2); |
3193 | fhEtaPrimMC[i]->SetYTitle("#eta"); | |
3194 | fhEtaPrimMC[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3195 | outputContainer->Add(fhEtaPrimMC[i]) ; | |
db4ffddf | 3196 | |
3197 | fhPhiPrimMC[i] = new TH2F(Form("hPhiPrim_MC%s",ppname[i].Data()), | |
7726e3a3 | 3198 | Form("primary photon %s : #phi vs #it{p}_{T}, %s",pptype[i].Data(),parTitle.Data()), |
db4ffddf | 3199 | nptbins,ptmin,ptmax,200,0.,TMath::TwoPi()); |
3200 | fhPhiPrimMC[i]->SetYTitle("#phi"); | |
3201 | fhPhiPrimMC[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3202 | outputContainer->Add(fhPhiPrimMC[i]) ; | |
dc9c6e78 | 3203 | } |
1a31a9ab | 3204 | |
d24561b6 | 3205 | if(fMakePrimaryPi0DecayStudy) |
3206 | { | |
7eedb724 | 3207 | fhPtPrimMCPi0DecayPairAcceptInConeLowPt = new TH1F("hPtPrim_MCPhotonPi0DecayPairAcceptInConeLowPt", |
d24561b6 | 3208 | Form("primary photon %s : #it{p}_{T}, pair in cone, %s",pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), |
3209 | nptbins,ptmin,ptmax); | |
3210 | fhPtPrimMCPi0DecayPairAcceptInConeLowPt->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3211 | outputContainer->Add(fhPtPrimMCPi0DecayPairAcceptInConeLowPt) ; | |
3212 | ||
7eedb724 | 3213 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPt = new TH1F("hPtPrim_MCisoPhotonPi0DecayPairAcceptInConeLowPt", |
d24561b6 | 3214 | Form("isolated primary photon %s, pair in cone : #it{p}_{T}, %s", |
3215 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3216 | nptbins,ptmin,ptmax); | |
3217 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPt->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3218 | outputContainer->Add(fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPt) ; | |
3219 | ||
7eedb724 | 3220 | fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlap = new TH1F("hPtPrim_MCPhotonPi0DecayPairAcceptInConeLowPtNoOverlap", |
d24561b6 | 3221 | Form("primary photon %s, no overlap, pair in cone : #it{p}_{T}, %s", |
3222 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3223 | nptbins,ptmin,ptmax); | |
3224 | fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3225 | outputContainer->Add(fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlap) ; | |
3226 | ||
7eedb724 | 3227 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlap = new TH1F("hPtPrim_MCisoPhotonPi0DecayPairAcceptInConeLowPtNoOverlap", |
d24561b6 | 3228 | Form("isolated primary photon %s, pair in cone,no overlap : #it{p}_{T}, %s", |
3229 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3230 | nptbins,ptmin,ptmax); | |
3231 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3232 | outputContainer->Add(fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlap) ; | |
e79b1086 | 3233 | |
3234 | fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlapCaloE = new TH1F("hPtPrim_MCPhotonPi0DecayPairAcceptInConeLowPtNoOverlapCaloE", | |
3235 | Form("primary photon %s, no overlap, pair in cone, E > calo min: #it{p}_{T}, %s", | |
3236 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3237 | nptbins,ptmin,ptmax); | |
3238 | fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlapCaloE->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3239 | outputContainer->Add(fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlapCaloE) ; | |
3240 | ||
3241 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlapCaloE = new TH1F("hPtPrim_MCisoPhotonPi0DecayPairAcceptInConeLowPtNoOverlapCaloE", | |
3242 | Form("isolated primary photon %s, pair in cone,no overlap, E > calo min: #it{p}_{T}, %s", | |
3243 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3244 | nptbins,ptmin,ptmax); | |
3245 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlapCaloE->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3246 | outputContainer->Add(fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlapCaloE) ; | |
3247 | ||
d24561b6 | 3248 | |
7eedb724 | 3249 | fhPtPrimMCPi0DecayPairNoOverlap = new TH1F("hPtPrim_MCPhotonPi0DecayPairNoOverlap", |
d24561b6 | 3250 | Form("primary photon %s, no overlap: #it{p}_{T}, %s", |
3251 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3252 | nptbins,ptmin,ptmax); | |
3253 | fhPtPrimMCPi0DecayPairNoOverlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3254 | outputContainer->Add(fhPtPrimMCPi0DecayPairNoOverlap) ; | |
3255 | ||
7eedb724 | 3256 | fhPtPrimMCPi0DecayIsoPairNoOverlap = new TH1F("hPtPrim_MCisoPhotonPi0DecayPairNoOverlap", |
3257 | Form("isolated primary photon %s, no overlap: #it{p}_{T}, %s", | |
3258 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3259 | nptbins,ptmin,ptmax); | |
3260 | fhPtPrimMCPi0DecayIsoPairNoOverlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3261 | outputContainer->Add(fhPtPrimMCPi0DecayIsoPairNoOverlap) ; | |
d24561b6 | 3262 | |
7eedb724 | 3263 | fhPtPrimMCPi0DecayPairOutOfCone = new TH1F("hPtPrim_MCPhotonPi0DecayPairOutOfCone", |
d24561b6 | 3264 | Form("primary photon %s : #it{p}_{T}, pair out of cone, %s",pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), |
3265 | nptbins,ptmin,ptmax); | |
3266 | fhPtPrimMCPi0DecayPairOutOfCone->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3267 | outputContainer->Add(fhPtPrimMCPi0DecayPairOutOfCone) ; | |
3268 | ||
7eedb724 | 3269 | fhPtPrimMCPi0DecayIsoPairOutOfCone = new TH1F("hPtPrim_MCisoPhotonPi0DecayPairOutOfCone", |
d24561b6 | 3270 | Form("isolated primary photon %s, pair out of cone : #it{p}_{T}, %s", |
3271 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3272 | nptbins,ptmin,ptmax); | |
3273 | fhPtPrimMCPi0DecayIsoPairOutOfCone->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3274 | outputContainer->Add(fhPtPrimMCPi0DecayIsoPairOutOfCone) ; | |
3275 | ||
7eedb724 | 3276 | fhPtPrimMCPi0DecayPairOutOfAcceptance = new TH1F("hPtPrim_MCPhotonPi0DecayPairOutOfAcceptance", |
d24561b6 | 3277 | Form("primary photon %s : #it{p}_{T}, pair out of acceptance, %s",pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), |
3278 | nptbins,ptmin,ptmax); | |
3279 | fhPtPrimMCPi0DecayPairOutOfAcceptance->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3280 | outputContainer->Add(fhPtPrimMCPi0DecayPairOutOfAcceptance) ; | |
3281 | ||
9ecbb69a | 3282 | fhPtPrimMCPi0DecayPairOutOfAcceptanceNoOverlap = new TH1F("hPtPrim_MCPhotonPi0DecayPairOutOfAcceptanceNoOverlap", |
3283 | Form("primary photon %s : #it{p}_{T}, pair out of acceptance, no overlap, %s",pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3284 | nptbins,ptmin,ptmax); | |
3285 | fhPtPrimMCPi0DecayPairOutOfAcceptanceNoOverlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3286 | outputContainer->Add(fhPtPrimMCPi0DecayPairOutOfAcceptanceNoOverlap) ; | |
3287 | ||
7eedb724 | 3288 | fhPtPrimMCPi0DecayIsoPairOutOfAcceptance = new TH1F("hPtPrim_MCisoPhotonPi0DecayPairOutOfAcceptance", |
d24561b6 | 3289 | Form("isolated primary photon %s, pair out of acceptance : #it{p}_{T}, %s", |
3290 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3291 | nptbins,ptmin,ptmax); | |
3292 | fhPtPrimMCPi0DecayIsoPairOutOfAcceptance->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3293 | outputContainer->Add(fhPtPrimMCPi0DecayIsoPairOutOfAcceptance) ; | |
9ecbb69a | 3294 | |
3295 | fhPtPrimMCPi0DecayIsoPairOutOfAcceptanceNoOverlap = new TH1F("hPtPrim_MCisoPhotonPi0DecayPairOutOfAcceptanceNoOverlap", | |
3296 | Form("isolated primary photon %s, pair out of acceptance, no overlap : #it{p}_{T}, %s", | |
3297 | pptype[kmcPrimPi0Decay].Data(),parTitle.Data()), | |
3298 | nptbins,ptmin,ptmax); | |
3299 | fhPtPrimMCPi0DecayIsoPairOutOfAcceptanceNoOverlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3300 | outputContainer->Add(fhPtPrimMCPi0DecayIsoPairOutOfAcceptanceNoOverlap) ; | |
9cfeb6de | 3301 | |
7eedb724 | 3302 | fhPtPrimMCPi0Overlap = new TH1F("hPtPrim_MCPi0Overlap", |
3303 | Form("primary %s, overlap: #it{p}_{T}, %s", | |
9cfeb6de | 3304 | pptype[kmcPrimPi0].Data(),parTitle.Data()), |
3305 | nptbins,ptmin,ptmax); | |
3306 | fhPtPrimMCPi0Overlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3307 | outputContainer->Add(fhPtPrimMCPi0Overlap) ; | |
3308 | ||
7eedb724 | 3309 | fhPtPrimMCPi0IsoOverlap = new TH1F("hPtPrim_MCisoPi0Overlap", |
3310 | Form("primary %s, overlap: #it{p}_{T}, %s", | |
9cfeb6de | 3311 | pptype[kmcPrimPi0].Data(),parTitle.Data()), |
3312 | nptbins,ptmin,ptmax); | |
3313 | fhPtPrimMCPi0IsoOverlap->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3314 | outputContainer->Add(fhPtPrimMCPi0IsoOverlap) ; | |
3315 | ||
d24561b6 | 3316 | } |
3317 | ||
1a31a9ab | 3318 | }//Histos with MC |
3319 | ||
3320 | } | |
3321 | ||
b5dbb99b | 3322 | if(fMakeSeveralIC) |
3323 | { | |
1a31a9ab | 3324 | const Int_t buffersize = 255; |
e4ef72be | 3325 | char name[buffersize]; |
3326 | char title[buffersize]; | |
3327 | for(Int_t icone = 0; icone<fNCones; icone++) | |
6ae3345d | 3328 | { |
44e48e82 | 3329 | // sum pt in cone vs. pt leading |
3330 | snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone); | |
9a97f32f | 3331 | snprintf(title, buffersize,"#Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]); |
44e48e82 | 3332 | fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); |
dc9c6e78 | 3333 | fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}#it{p}_{T} (GeV/#it{c})");//#Sigma #it{p}_{T} |
3334 | fhSumPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})"); | |
44e48e82 | 3335 | outputContainer->Add(fhSumPtLeadingPt[icone]) ; |
6ae3345d | 3336 | |
3337 | // pt in cone vs. pt leading | |
44e48e82 | 3338 | snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone); |
9a97f32f | 3339 | snprintf(title, buffersize,"#it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]); |
6ae3345d | 3340 | fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
dc9c6e78 | 3341 | fhPtLeadingPt[icone] ->SetYTitle("#it{p}_{T}^{cone} (GeV/#it{c})"); |
3342 | fhPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})"); | |
6ae3345d | 3343 | outputContainer->Add(fhPtLeadingPt[icone]) ; |
3344 | ||
3345 | // sum pt in cone vs. pt leading in the forward region (for background subtraction studies) | |
3346 | snprintf(name, buffersize,"hPerpSumPtLeadingPt_Cone_%d",icone); | |
9a97f32f | 3347 | snprintf(title, buffersize,"#Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]); |
23130491 | 3348 | fhPerpSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); |
dc9c6e78 | 3349 | fhPerpSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}#it{p}_{T} (GeV/#it{c})");//#Sigma #it{p}_{T} |
3350 | fhPerpSumPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})"); | |
23130491 | 3351 | outputContainer->Add(fhPerpSumPtLeadingPt[icone]) ; |
44e48e82 | 3352 | |
6ae3345d | 3353 | // pt in cone vs. pt leading in the forward region (for background subtraction studies) |
3354 | snprintf(name, buffersize,"hPerpPtLeadingPt_Cone_%d",icone); | |
9a97f32f | 3355 | snprintf(title, buffersize,"#it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]); |
6ae3345d | 3356 | fhPerpPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax); |
dc9c6e78 | 3357 | fhPerpPtLeadingPt[icone] ->SetYTitle("#it{p}_{T}^{cone} (GeV/#it{c})"); |
3358 | fhPerpPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})"); | |
6ae3345d | 3359 | outputContainer->Add(fhPerpPtLeadingPt[icone]) ; |
3360 | ||
e4ef72be | 3361 | if(IsDataMC()) |
db6fb352 | 3362 | { |
d24561b6 | 3363 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
124bffb3 | 3364 | { |
f5b702a0 | 3365 | snprintf(name , buffersize,"hSumPtLeadingPt_MC%s_Cone_%d",mcPartName[imc].Data(),icone); |
124bffb3 | 3366 | snprintf(title, buffersize,"Candidate %s #it{p}_{T} vs cone #Sigma #it{p}_{T} for #it{R}=%2.2f",mcPartType[imc].Data(),fConeSizes[icone]); |
f5b702a0 | 3367 | fhSumPtLeadingPtMC[imc][icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax); |
3368 | fhSumPtLeadingPtMC[imc][icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})"); | |
3369 | fhSumPtLeadingPtMC[imc][icone]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
3370 | outputContainer->Add(fhSumPtLeadingPtMC[imc][icone]) ; | |
124bffb3 | 3371 | } |
e4ef72be | 3372 | }//Histos with MC |
3373 | ||
3374 | for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++) | |
124bffb3 | 3375 | { |
b0a31c92 | 3376 | snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt); |
9a97f32f | 3377 | snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]); |
b0a31c92 | 3378 | fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); |
dc9c6e78 | 3379 | fhPtThresIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
6ae3345d | 3380 | outputContainer->Add(fhPtThresIsolated[icone][ipt]) ; |
b0a31c92 | 3381 | |
3382 | snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3383 | snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); |
b0a31c92 | 3384 | fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); |
dc9c6e78 | 3385 | fhPtFracIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
6ae3345d | 3386 | outputContainer->Add(fhPtFracIsolated[icone][ipt]) ; |
b0a31c92 | 3387 | |
f5b702a0 | 3388 | snprintf(name, buffersize,"hSumPt_Cone_%d_Pt%d",icone,ipt); |
9a97f32f | 3389 | snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); |
f5b702a0 | 3390 | fhSumPtIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); |
3391 | // fhSumPtIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})"); | |
3392 | fhSumPtIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3393 | outputContainer->Add(fhSumPtIsolated[icone][ipt]) ; | |
b0a31c92 | 3394 | |
3395 | snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3396 | snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for density in #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); |
b0a31c92 | 3397 | fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax); |
dc9c6e78 | 3398 | //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})"); |
3399 | fhPtSumDensityIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
b0a31c92 | 3400 | outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ; |
3401 | ||
3402 | snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3403 | snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for PtFracPtSum in #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); |
b0a31c92 | 3404 | fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax); |
dc9c6e78 | 3405 | //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})"); |
3406 | fhPtFracPtSumIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
b0a31c92 | 3407 | outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ; |
3408 | ||
b0a31c92 | 3409 | // eta:phi |
3410 | snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3411 | snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]); |
b0a31c92 | 3412 | fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); |
3413 | fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta"); | |
3414 | fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi"); | |
3415 | outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ; | |
3416 | ||
3417 | snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3418 | snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); |
b0a31c92 | 3419 | fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); |
3420 | fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta"); | |
3421 | fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi"); | |
3422 | outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ; | |
3423 | ||
3424 | snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3425 | snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); |
b0a31c92 | 3426 | fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); |
3427 | fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta"); | |
3428 | fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi"); | |
3429 | outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ; | |
3430 | ||
3431 | snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3432 | snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for density #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); |
b0a31c92 | 3433 | fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); |
3434 | fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta"); | |
3435 | fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi"); | |
3436 | outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ; | |
3437 | ||
3438 | snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt); | |
9a97f32f | 3439 | snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for FracPtSum #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); |
b0a31c92 | 3440 | fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); |
3441 | fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta"); | |
3442 | fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi"); | |
3443 | outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ; | |
3444 | ||
be703b18 | 3445 | if(fFillTaggedDecayHistograms) |
3446 | { | |
3447 | // pt decays isolated | |
3448 | snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt); | |
3449 | snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]); | |
3450 | fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); | |
3451 | fhPtPtThresDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3452 | outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ; | |
3453 | ||
3454 | snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt); | |
3455 | snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); | |
3456 | fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); | |
3457 | fhPtPtFracDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3458 | outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ; | |
3459 | ||
3460 | snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt); | |
3461 | snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); | |
3462 | fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax); | |
3463 | // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})"); | |
3464 | fhPtPtSumDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3465 | outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ; | |
3466 | ||
3467 | snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt); | |
3468 | snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for density in #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); | |
3469 | fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax); | |
3470 | // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})"); | |
3471 | fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3472 | outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ; | |
3473 | ||
3474 | snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt); | |
3475 | snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for PtFracPtSum in #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); | |
3476 | fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax); | |
3477 | // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})"); | |
3478 | fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); | |
3479 | outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ; | |
3480 | ||
3481 | // eta:phi decays | |
3482 | snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt); | |
3483 | snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]); | |
3484 | fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); | |
3485 | fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta"); | |
3486 | fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi"); | |
3487 | outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ; | |
3488 | ||
3489 | snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt); | |
3490 | snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); | |
3491 | fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); | |
3492 | fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta"); | |
3493 | fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi"); | |
3494 | outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ; | |
3495 | ||
3496 | ||
3497 | snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt); | |
3498 | snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); | |
3499 | fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); | |
3500 | fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta"); | |
3501 | fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi"); | |
3502 | outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ; | |
3503 | ||
3504 | snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt); | |
3505 | snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for density #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]); | |
3506 | fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); | |
3507 | fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta"); | |
3508 | fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi"); | |
3509 | outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ; | |
3510 | ||
3511 | snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt); | |
3512 | snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for FracPtSum #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]); | |
3513 | fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax); | |
3514 | fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta"); | |
3515 | fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi"); | |
3516 | outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ; | |
6ae3345d | 3517 | |
be703b18 | 3518 | } |
b0a31c92 | 3519 | |
3520 | if(IsDataMC()) | |
3521 | { | |
d24561b6 | 3522 | for(Int_t imc = 0; imc < fgkNmcTypes; imc++) |
124bffb3 | 3523 | { |
3524 | snprintf(name , buffersize,"hPtThreshMC%s_Cone_%d_Pt%d",mcPartName[imc].Data(),icone,ipt); | |
3525 | snprintf(title, buffersize,"Isolated %s #it{p}_{T} for #it{R}=%2.2f and #it{p}_{T}^{th}=%2.2f", | |
3526 | mcPartType[imc].Data(),fConeSizes[icone], fPtThresholds[ipt]); | |
3527 | fhPtThresIsolatedMC[imc][icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); | |
3528 | fhPtThresIsolatedMC[imc][icone][ipt]->SetYTitle("#it{counts}"); | |
3529 | fhPtThresIsolatedMC[imc][icone][ipt]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
3530 | outputContainer->Add(fhPtThresIsolatedMC[imc][icone][ipt]) ; | |
3531 | ||
3532 | ||
3533 | snprintf(name , buffersize,"hPtFracMC%s_Cone_%d_Pt%d",mcPartName[imc].Data(),icone,ipt); | |
3534 | snprintf(title, buffersize,"Isolated %s #it{p}_{T} for #it{R}=%2.2f and #Sigma #it{p}_{T}^{in cone}/#it{p}_{T}^{trig}=%2.2f", | |
3535 | mcPartType[imc].Data(),fConeSizes[icone], fPtFractions[ipt]); | |
3536 | fhPtFracIsolatedMC[imc][icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); | |
3537 | fhPtFracIsolatedMC[imc][icone][ipt]->SetYTitle("#it{counts}"); | |
3538 | fhPtFracIsolatedMC[imc][icone][ipt]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
3539 | outputContainer->Add(fhPtFracIsolatedMC[imc][icone][ipt]) ; | |
f5b702a0 | 3540 | |
3541 | snprintf(name , buffersize,"hSumPtMC%s_Cone_%d_Pt%d",mcPartName[imc].Data(),icone,ipt); | |
3542 | snprintf(title, buffersize,"Isolated %s #it{p}_{T} for #it{R}=%2.2f and #Sigma #it{p}_{T}^{in cone}=%2.2f", | |
3543 | mcPartType[imc].Data(),fConeSizes[icone], fSumPtThresholds[ipt]); | |
3544 | fhSumPtIsolatedMC[imc][icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax); | |
3545 | fhSumPtIsolatedMC[imc][icone][ipt]->SetYTitle("#it{counts}"); | |
3546 | fhSumPtIsolatedMC[imc][icone][ipt]->SetXTitle("#it{p}_{T}(GeV/#it{c})"); | |
3547 | outputContainer->Add(fhSumPtIsolatedMC[imc][icone][ipt]) ; | |
124bffb3 | 3548 | } |
e4ef72be | 3549 | }//Histos with MC |
3550 | }//icone loop | |
3551 | }//ipt loop | |
1a31a9ab | 3552 | } |
3553 | ||
0cea6003 | 3554 | if(IsPileUpAnalysisOn()) |
2ad19c3d | 3555 | { |
17af6e24 | 3556 | for (Int_t i = 0; i < 7 ; i++) |
3557 | { | |
3558 | fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()), | |
6ae3345d | 3559 | Form("Number of isolated particles vs E, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()), |
3560 | nptbins,ptmin,ptmax); | |
03b86424 | 3561 | fhEIsoPileUp[i]->SetYTitle("d#it{N} / d#it{E}"); |
dc9c6e78 | 3562 | fhEIsoPileUp[i]->SetXTitle("#it{E} (GeV)"); |
6ae3345d | 3563 | outputContainer->Add(fhEIsoPileUp[i]) ; |
17af6e24 | 3564 | |
3565 | fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()), | |
6ae3345d | 3566 | Form("Number of isolated particles vs #it{p}_{T}, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()), |
3567 | nptbins,ptmin,ptmax); | |
03b86424 | 3568 | fhPtIsoPileUp[i]->SetYTitle("d#it{N} / #it{p}_{T}"); |
dc9c6e78 | 3569 | fhPtIsoPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
6ae3345d | 3570 | outputContainer->Add(fhPtIsoPileUp[i]) ; |
17af6e24 | 3571 | |
3572 | fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()), | |
6ae3345d | 3573 | Form("Number of not isolated particles vs E, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()), |
3574 | nptbins,ptmin,ptmax); | |
03b86424 | 3575 | fhENoIsoPileUp[i]->SetYTitle("d#it{N} / dE"); |
dc9c6e78 | 3576 | fhENoIsoPileUp[i]->SetXTitle("#it{E} (GeV)"); |
6ae3345d | 3577 | outputContainer->Add(fhENoIsoPileUp[i]) ; |
17af6e24 | 3578 | |
3579 | fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()), | |
6ae3345d | 3580 | Form("Number of not isolated particles vs #it{p}_{T}, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()), |
3581 | nptbins,ptmin,ptmax); | |
03b86424 | 3582 | fhPtNoIsoPileUp[i]->SetYTitle("d#it{N} / #it{p}_{T}"); |
dc9c6e78 | 3583 | fhPtNoIsoPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})"); |
6ae3345d | 3584 | outputContainer->Add(fhPtNoIsoPileUp[i]) ; |
17af6e24 | 3585 | } |
b1f720a7 | 3586 | |
6ae3345d | 3587 | fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax); |
dc9c6e78 | 3588 | fhTimeENoCut->SetXTitle("#it{E} (GeV)"); |
03b86424 | 3589 | fhTimeENoCut->SetYTitle("#it{time} (ns)"); |
6ae3345d | 3590 | outputContainer->Add(fhTimeENoCut); |
2ad19c3d | 3591 | |
6ae3345d | 3592 | fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax); |
dc9c6e78 | 3593 | fhTimeESPD->SetXTitle("#it{E} (GeV)"); |
03b86424 | 3594 | fhTimeESPD->SetYTitle("#it{time} (ns)"); |
6ae3345d | 3595 | outputContainer->Add(fhTimeESPD); |
2ad19c3d | 3596 | |
6ae3345d | 3597 | fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax); |
dc9c6e78 | 3598 | fhTimeESPDMulti->SetXTitle("#it{E} (GeV)"); |
03b86424 | 3599 | fhTimeESPDMulti->SetYTitle("#it{time} (ns)"); |
6ae3345d | 3600 | outputContainer->Add(fhTimeESPDMulti); |
2ad19c3d | 3601 | |
6ae3345d | 3602 | fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50); |
2ad19c3d | 3603 | fhTimeNPileUpVertSPD->SetYTitle("# vertex "); |
03b86424 | 3604 | fhTimeNPileUpVertSPD->SetXTitle("#it{time} (ns)"); |
6ae3345d | 3605 | outputContainer->Add(fhTimeNPileUpVertSPD); |
2ad19c3d | 3606 | |
6ae3345d | 3607 | fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 ); |
2ad19c3d | 3608 | fhTimeNPileUpVertTrack->SetYTitle("# vertex "); |
03b86424 | 3609 | fhTimeNPileUpVertTrack->SetXTitle("#it{time} (ns)"); |
6ae3345d | 3610 | outputContainer->Add(fhTimeNPileUpVertTrack); |
2ad19c3d | 3611 | |
6ae3345d | 3612 | fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50); |
2ad19c3d | 3613 | fhTimeNPileUpVertContributors->SetYTitle("# vertex "); |
03b86424 | 3614 | fhTimeNPileUpVertContributors->SetXTitle("#it{time} (ns)"); |
6ae3345d | 3615 | outputContainer->Add(fhTimeNPileUpVertContributors); |
2ad19c3d | 3616 | |
6ae3345d | 3617 | fhTimePileUpMainVertexZDistance = new TH2F ("hTime_PileUpMainVertexZDistance","time of cluster vs distance in Z pile-up SPD vertex - main SPD vertex",ntimebins,timemin,timemax,100,0,50); |
03b86424 | 3618 | fhTimePileUpMainVertexZDistance->SetYTitle("distance #it{z} (cm) "); |
3619 | fhTimePileUpMainVertexZDistance->SetXTitle("#it{time} (ns)"); | |
6ae3345d | 3620 | outputContainer->Add(fhTimePileUpMainVertexZDistance); |
2ad19c3d | 3621 | |
6ae3345d | 3622 | fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50); |
03b86424 | 3623 | fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance #it{z} (cm) "); |
3624 | fhTimePileUpMainVertexZDiamond->SetXTitle("#it{time} (ns)"); | |
6ae3345d | 3625 | outputContainer->Add(fhTimePileUpMainVertexZDiamond); |
2ad19c3d | 3626 | } |
3627 | ||
1a31a9ab | 3628 | return outputContainer ; |
3629 | ||
3630 | } | |
3631 | ||
124bffb3 | 3632 | //____________________________________________________ |
3633 | Int_t AliAnaParticleIsolation::GetMCIndex(Int_t mcTag) | |
3634 | { | |
6ae3345d | 3635 | // Histogram index depending on origin of candidate |
124bffb3 | 3636 | |
3637 | if(!IsDataMC()) return -1; | |
3638 | ||
3639 | if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) | |
3640 | { | |
3641 | return kmcPrompt; | |
3642 | } | |
dc1966bb | 3643 | else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation) || |
3644 | GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCISR)) | |
124bffb3 | 3645 | { |
3646 | return kmcFragment; | |
3647 | } | |
3648 | else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) | |
3649 | { | |
3650 | return kmcPi0; | |
3651 | } | |
3652 | else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) | |
3653 | { | |
3654 | return kmcPi0Decay; | |
3655 | } | |
3656 | else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) | |
3657 | { | |
3658 | return kmcEtaDecay; | |
3659 | } | |
3660 | else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) | |
3661 | { | |
3662 | return kmcOtherDecay; | |
3663 | } | |
3664 | else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) | |
3665 | { | |
3666 | return kmcElectron; | |
3667 | } | |
3668 | else // anything else | |
3669 | { | |
bf8a7dac | 3670 | // careful can contain also other decays, to be checked. |
124bffb3 | 3671 | return kmcHadron; |
3672 | } | |
3673 | } | |
3674 | ||
03bae431 | 3675 | //__________________________________ |
3676 | void AliAnaParticleIsolation::Init() | |
3677 | { | |
3678 | // Do some checks and init stuff | |
3679 | ||
124bffb3 | 3680 | // In case of several cone and thresholds analysis, open the cuts for the filling of the |
6ae3345d | 3681 | // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD(). |
03bae431 | 3682 | // The different cones, thresholds are tested for this list of tracks, clusters. |
3683 | if(fMakeSeveralIC) | |
3684 | { | |
3685 | printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n"); | |
3686 | GetIsolationCut()->SetPtThreshold(100); | |
3687 | GetIsolationCut()->SetPtFraction(100); | |
3688 | GetIsolationCut()->SetConeSize(1); | |
3689 | } | |
373ffbac | 3690 | |
3691 | if(!GetReader()->IsCTSSwitchedOn() && GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral) | |
3692 | AliFatal("STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!\n"); | |
3693 | ||
03bae431 | 3694 | } |
3695 | ||
803d06a8 | 3696 | //____________________________________________ |
3697 | void AliAnaParticleIsolation::InitParameters() | |
3698 | { | |
3699 | ||
3700 | //Initialize the parameters of the analysis. | |
3701 | SetInputAODName("PWG4Particle"); | |
6ae3345d | 3702 | SetAODObjArrayName("IsolationCone"); |
803d06a8 | 3703 | AddToHistogramsName("AnaIsolation_"); |
3704 | ||
32bff2da | 3705 | fIsoDetectorString = "EMCAL" ; |
3706 | fIsoDetector = kEMCAL ; | |
4b6cb0f2 | 3707 | |
803d06a8 | 3708 | fReMakeIC = kFALSE ; |
3709 | fMakeSeveralIC = kFALSE ; | |
3710 | ||
4afdc1d8 | 3711 | fMinCellsAngleOverlap = 3.; |
3712 | ||
64373095 | 3713 | fLeadingOnly = kTRUE; |
3714 | fCheckLeadingWithNeutralClusters = kTRUE; | |
3715 | ||
8913c8c4 | 3716 | fNDecayBits = 1; |
3717 | fDecayBits[0] = AliNeutralMesonSelection::kPi0; | |
3718 | fDecayBits[1] = AliNeutralMesonSelection::kEta; | |
3719 | fDecayBits[2] = AliNeutralMesonSelection::kPi0Side; | |
3720 | fDecayBits[3] = AliNeutralMesonSelection::kEtaSide; | |
3721 | ||
461ca42f | 3722 | fNBkgBin = 11; |
dc1966bb | 3723 | fBkgBinLimit[ 0] = 00.0; fBkgBinLimit[ 1] = 00.2; fBkgBinLimit[ 2] = 00.3; fBkgBinLimit[ 3] = 00.4; fBkgBinLimit[ 4] = 00.5; |
3724 | fBkgBinLimit[ 5] = 01.0; fBkgBinLimit[ 6] = 01.5; fBkgBinLimit[ 7] = 02.0; fBkgBinLimit[ 8] = 03.0; fBkgBinLimit[ 9] = 05.0; | |
3725 | fBkgBinLimit[10] = 10.0; fBkgBinLimit[11] = 100.; | |
d125fd57 | 3726 | for(Int_t ibin = fNBkgBin+1; ibin < 20; ibin++) fBkgBinLimit[ibin] = 00.0; |
7a5b478e | 3727 | |
3728 | fNPtTrigBin = 6; | |
3729 | fPtTrigBinLimit[ 0] = 8; fPtTrigBinLimit[ 1] = 10; fPtTrigBinLimit[ 2] = 12; fPtTrigBinLimit[ 3] = 14; fPtTrigBinLimit[ 4] = 16; | |
3730 | fPtTrigBinLimit[ 5] = 20; fPtTrigBinLimit[ 6] = 25; ; | |
d125fd57 | 3731 | for(Int_t ibin = fNPtTrigBin+1; ibin < 20; ibin++) fPtTrigBinLimit[ibin] = 00.0; |
dc1966bb | 3732 | |
803d06a8 | 3733 | //----------- Several IC----------------- |
6ae3345d | 3734 | fNCones = 5 ; |
3735 | fNPtThresFrac = 5 ; | |
db6fb352 | 3736 | fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5; |
6ae3345d | 3737 | fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.; |
3738 | fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5; | |
3739 | fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.; | |
803d06a8 | 3740 | |
803d06a8 | 3741 | } |
3742 | ||
64373095 | 3743 | //_________________________________________________________________________________________ |
3744 | Bool_t AliAnaParticleIsolation::IsTriggerTheNearSideEventLeadingParticle(Int_t & idLeading) | |
3745 | { | |
3746 | // Check if the what of the selected isolation candidates is leading particle in the same hemisphere | |
3747 | // comparing with all the candidates, all the tracks or all the clusters. | |
3748 | ||
3749 | Double_t ptTrig = GetMinPt(); | |
3750 | Double_t phiTrig = 0 ; | |
3751 | Int_t index =-1 ; | |
3752 | AliAODPWG4ParticleCorrelation* pLeading = 0; | |
3753 | ||
3754 | // Loop on stored AOD particles, find leading trigger on the selected list, with at least min pT. | |
3755 | ||
3756 | for(Int_t iaod = 0; iaod < GetInputAODBranch()->GetEntriesFast() ; iaod++) | |
3757 | { | |
3758 | AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod)); | |
3759 | particle->SetLeadingParticle(kFALSE); // set it later | |
3760 | ||
3761 | // Vertex cut in case of mixing | |
3762 | if(GetMixedEvent()) | |
3763 | { | |
3764 | Int_t check = CheckMixedEventVertex(particle->GetCaloLabel(0), particle->GetTrackLabel(0)); | |
3765 | if(check == 0) continue; | |
3766 | if(check == -1) return kFALSE; // not sure if it is correct. | |
3767 | } | |
3768 | ||
3769 | //check if it is low pt trigger particle | |
3770 | if((particle->Pt() < GetIsolationCut()->GetPtThreshold() || | |
3771 | particle->Pt() < GetIsolationCut()->GetSumPtThreshold()) && | |
3772 | !fMakeSeveralIC) | |
3773 | { | |
3774 | continue ; //trigger should not come from underlying event | |
3775 | } | |
3776 | ||
3777 | // find the leading particles with highest momentum | |
3778 | if (particle->Pt() > ptTrig) | |
3779 | { | |
3780 | ptTrig = particle->Pt() ; | |
3781 | phiTrig = particle->Phi(); | |
3782 | index = iaod ; | |
3783 | pLeading = particle ; | |
3784 | } | |
3785 | }// finish search of leading trigger particle on the AOD branch. | |
3786 | ||
3787 | if(index < 0) return kFALSE; | |
3788 | ||
3789 | idLeading = index; | |
3790 | ||
3791 | //printf("AOD leading pT %2.2f, ID %d\n", pLeading->Pt(),pLeading->GetCaloLabel(0)); | |
3792 | ||
3793 | if(phiTrig < 0 ) phiTrig += TMath::TwoPi(); | |
3794 | ||
3795 | // Compare if it is the leading of all tracks | |
3796 | ||
64373095 | 3797 | for(Int_t ipr = 0;ipr < GetCTSTracks()->GetEntriesFast() ; ipr ++ ) |
3798 | { | |
3799 | AliVTrack * track = (AliVTrack *) (GetCTSTracks()->At(ipr)) ; | |
3800 | ||
3801 | if(track->GetID() == pLeading->GetTrackLabel(0) || track->GetID() == pLeading->GetTrackLabel(1) || | |
3802 | track->GetID() == pLeading->GetTrackLabel(2) || track->GetID() == pLeading->GetTrackLabel(3) ) continue ; | |
3803 | ||
848cd3a3 | 3804 | fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz()); |
3805 | Float_t pt = fTrackVector.Pt(); | |
3806 | Float_t phi = fTrackVector.Phi() ; | |
64373095 | 3807 | if(phi < 0) phi+=TMath::TwoPi(); |
3808 | ||
3809 | //skip this event if near side associated particle pt larger than trigger | |
3810 | ||
7719619a | 3811 | Float_t deltaPhi = phiTrig-phi; |
3812 | // | |
3813 | // Calculate deltaPhi shift so that for the particles on the opposite side | |
3814 | // it is defined between 90 and 270 degrees | |
3815 | // Shift [-360,-90] to [0, 270] | |
3816 | // and [270,360] to [-90,0] | |
3817 | if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi(); | |
3818 | if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi(); | |
3819 | ||
3820 | if(pt > ptTrig && deltaPhi < TMath::PiOver2()) return kFALSE; | |
3821 | ||
64373095 | 3822 | }// track loop |
3823 | ||
3824 | // Compare if it is leading of all calorimeter clusters | |
3825 | ||
3826 | if(fCheckLeadingWithNeutralClusters) | |
3827 | { | |
3828 | // Select the calorimeter cluster list | |
3829 | TObjArray * nePl = 0x0; | |
32bff2da | 3830 | if (pLeading->GetDetectorTag() == kPHOS ) |
64373095 | 3831 | nePl = GetPHOSClusters(); |
3832 | else | |
3833 | nePl = GetEMCALClusters(); | |
3834 | ||
3835 | if(!nePl) return kTRUE; // Do the selection just with the tracks if no calorimeter is available. | |
3836 | ||
64373095 | 3837 | for(Int_t ipr = 0;ipr < nePl->GetEntriesFast() ; ipr ++ ) |
3838 | { | |
3839 | AliVCluster * cluster = (AliVCluster *) (nePl->At(ipr)) ; | |
3840 | ||
3841 | if(cluster->GetID() == pLeading->GetCaloLabel(0) || cluster->GetID() == pLeading->GetCaloLabel(1) ) continue ; | |
3842 | ||
32bff2da | 3843 | cluster->GetMomentum(fMomentum,GetVertex(0)); |
64373095 | 3844 | |
32bff2da | 3845 | Float_t pt = fMomentum.Pt(); |
3846 | Float_t phi = fMomentum.Phi() ; | |
64373095 | 3847 | if(phi < 0) phi+=TMath::TwoPi(); |
3848 | ||
3849 | if(IsTrackMatched(cluster,GetReader()->GetInputEvent())) continue ; // avoid charged clusters, already covered by tracks, or cluster merging with track. | |
3850 | ||
3851 | // skip this event if near side associated particle pt larger than trigger | |
3852 | // not really needed for calorimeter, unless DCal is included | |
3853 | ||
7719619a | 3854 | Float_t deltaPhi = phiTrig-phi; |
3855 | if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi(); | |
3856 | if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi(); | |
3857 | ||
3858 | if(pt > ptTrig && deltaPhi < TMath::PiOver2()) return kFALSE ; | |
64373095 | 3859 | |
3860 | }// cluster loop | |
3861 | } // check neutral clusters | |
3862 | ||
3863 | idLeading = index ; | |
3864 | pLeading->SetLeadingParticle(kTRUE); | |
3865 | ||
3866 | if( GetDebug() > 1 ) | |
3867 | printf("AliAnaParticleIsolation::IsTriggerTheNearSideEventLeadingParticle() - Particle AOD with index %d is leading with pT %2.2f\n", | |
3868 | idLeading, pLeading->Pt()); | |
3869 | ||
3870 | return kTRUE; | |
3871 | ||
3872 | } | |
3873 | ||
803d06a8 | 3874 | //__________________________________________________ |
6ae3345d | 3875 | void AliAnaParticleIsolation::MakeAnalysisFillAOD() |
1a31a9ab | 3876 | { |
64373095 | 3877 | // Do analysis and fill aods |
0cea6003 | 3878 | // Search for the isolated photon in GetCalorimeter() with GetMinPt() < pt < GetMaxPt() |
64373095 | 3879 | // and if the particle is leading in the near side (if requested) |
1a31a9ab | 3880 | |
b5dbb99b | 3881 | if(!GetInputAODBranch()) |
373ffbac | 3882 | AliFatal(Form("No input particles in AOD with name branch < %s >, STOP",GetInputAODName().Data())); |
3883 | ||
b5dbb99b | 3884 | if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation")) |
373ffbac | 3885 | AliFatal(Form("Wrong type of AOD object, change AOD class name in input AOD: It should be <AliAODPWG4ParticleCorrelation> and not <%s> \n",GetInputAODBranch()->GetClass()->GetName())); |
b0a31c92 | 3886 | |
1a31a9ab | 3887 | Int_t n = 0, nfrac = 0; |
3888 | Bool_t isolated = kFALSE ; | |
3c12e375 | 3889 | Float_t coneptsum = 0, coneptlead = 0; |
6ae3345d | 3890 | TObjArray * pl = 0x0; ; |
1a31a9ab | 3891 | |
3892 | //Select the calorimeter for candidate isolation with neutral particles | |
32bff2da | 3893 | if (GetCalorimeter() == kPHOS ) |
1a31a9ab | 3894 | pl = GetPHOSClusters(); |
32bff2da | 3895 | else if (GetCalorimeter() == kEMCAL) |
1a31a9ab | 3896 | pl = GetEMCALClusters(); |
3897 | ||
3898 | //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it | |
64373095 | 3899 | Int_t idLeading = -1 ; |
3900 | Int_t iaod0 = 0; | |
3901 | Int_t naod = GetInputAODBranch()->GetEntriesFast(); | |
3902 | ||
be703b18 | 3903 | if(GetDebug() > 0) |
3904 | printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod); | |
1a31a9ab | 3905 | |
64373095 | 3906 | if(IsLeadingOnlyOn()) |
3907 | { | |
3908 | Bool_t leading = IsTriggerTheNearSideEventLeadingParticle(idLeading); | |
3909 | if(!leading) | |
3910 | { | |
3911 | if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Not leading; End fill AODs \n"); | |
3912 | return; | |
3913 | } | |
3914 | iaod0 = idLeading ; // first entry in particle loop | |
3915 | naod = idLeading+1; // last entry in particle loop | |
3916 | } | |
3917 | ||
3918 | // Check isolation of list of candidate particles or leading particle | |
3919 | ||
3920 | for(Int_t iaod = iaod0; iaod < naod; iaod++) | |
b5dbb99b | 3921 | { |
1a31a9ab | 3922 | AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod)); |
71f8368b | 3923 | |
64373095 | 3924 | // Check isolation only of clusters in fiducial region |
71f8368b | 3925 | |
64373095 | 3926 | if(IsFiducialCutOn()) |
3927 | { | |
32bff2da | 3928 | Bool_t in = GetFiducialCut()->IsInFiducialCut(aodinput->Eta(), aodinput->Phi(), aodinput->GetDetectorTag()) ; |
71f8368b | 3929 | if(! in ) continue ; |
64373095 | 3930 | } |
1a31a9ab | 3931 | |
64373095 | 3932 | //If too small or too large pt, skip |
3933 | Float_t pt = aodinput->Pt(); | |
3934 | if(pt < GetMinPt() || pt > GetMaxPt() ) continue ; | |
3935 | ||
71f8368b | 3936 | |
03bae431 | 3937 | //check if it is low pt trigger particle |
64373095 | 3938 | if( ( pt < GetIsolationCut()->GetPtThreshold() || pt < GetIsolationCut()->GetSumPtThreshold() ) && |
03bae431 | 3939 | !fMakeSeveralIC) |
b5dbb99b | 3940 | { |
1a31a9ab | 3941 | continue ; //trigger should not come from underlying event |
b5dbb99b | 3942 | } |
1a31a9ab | 3943 | |
64373095 | 3944 | //After cuts, study isolation |
3c12e375 | 3945 | n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0; coneptlead = 0; |
64373095 | 3946 | GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl, |
3947 | GetReader(), GetCaloPID(), | |
3948 | kTRUE, aodinput, GetAODObjArrayName(), | |
3c12e375 | 3949 | n,nfrac,coneptsum,coneptlead,isolated); |
1a31a9ab | 3950 | |
64373095 | 3951 | if(!fMakeSeveralIC) aodinput->SetIsolated(isolated); |
71f8368b | 3952 | |
3953 | if(GetDebug() > 1) | |
3954 | { | |
3955 | if(isolated) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",iaod); | |
3956 | printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n"); | |
3957 | } | |
3958 | ||
3959 | } // particle isolation loop | |
1a31a9ab | 3960 | |
3961 | } | |
3962 | ||
803d06a8 | 3963 | //_________________________________________________________ |
6ae3345d | 3964 | void AliAnaParticleIsolation::MakeAnalysisFillHistograms() |
1a31a9ab | 3965 | { |
64373095 | 3966 | // Do analysis and fill histograms |
6ae3345d | 3967 | |
be703b18 | 3968 | // In case of simulated data, fill acceptance histograms |
3969 | // Not ready for multiple case analysis. | |
3970 | if(IsDataMC() && !fMakeSeveralIC) FillAcceptanceHistograms(); | |
6ae3345d | 3971 | |
23130491 | 3972 | //Loop on stored AOD |
1a31a9ab | 3973 | Int_t naod = GetInputAODBranch()->GetEntriesFast(); |
be703b18 | 3974 | if(GetDebug() > 0) |
3975 | printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod); | |
6ae3345d | 3976 | |
b5dbb99b | 3977 | for(Int_t iaod = 0; iaod < naod ; iaod++) |
3978 | { | |
1a31a9ab | 3979 | AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod)); |
3980 | ||
64373095 | 3981 | if(IsLeadingOnlyOn() && !aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track |
1a31a9ab | 3982 | |
547c2f01 | 3983 | // Check isolation only of clusters in fiducial region |
3984 | if(IsFiducialCutOn()) | |
3985 | { | |
32bff2da | 3986 | Bool_t in = GetFiducialCut()->IsInFiducialCut(aod->Eta(),aod->Phi(),aod->GetDetectorTag()) ; |
547c2f01 | 3987 | if(! in ) continue ; |
3988 | } | |
3989 | ||
23130491 | 3990 | Float_t pt = aod->Pt(); |
124bffb3 | 3991 | |
23130491 | 3992 | //If too small or too large pt, skip |
3993 | if(pt < GetMinPt() || pt > GetMaxPt() ) continue ; | |
3994 | ||
124bffb3 | 3995 | Int_t mcTag = aod->GetTag() ; |
3996 | Int_t mcIndex = GetMCIndex(mcTag); | |
db6fb352 | 3997 | |
124bffb3 | 3998 | // --- In case of redoing isolation from delta AOD ---- |
3999 | // Not standard case, not used since its implementation | |
4000 | if(fMakeSeveralIC) | |
03bae431 | 4001 | { |
1a31a9ab | 4002 | //Analysis of multiple IC at same time |
124bffb3 | 4003 | MakeSeveralICAnalysis(aod,mcIndex); |
03bae431 | 4004 | continue; |
1a31a9ab | 4005 | } |
6ae3345d | 4006 | |
124bffb3 | 4007 | // --- In case of redoing isolation multiple cuts ---- |
6ae3345d | 4008 | |
124bffb3 | 4009 | if(fReMakeIC) |
b5dbb99b | 4010 | { |
1a31a9ab | 4011 | //In case a more strict IC is needed in the produced AOD |
124bffb3 | 4012 | Bool_t isolated = kFALSE; |
23130491 | 4013 | Int_t n = 0, nfrac = 0; |
3c12e375 | 4014 | Float_t coneptsum = 0, coneptlead = 0; |
727a309a | 4015 | |
23130491 | 4016 | //Recover reference arrays with clusters and tracks |
4017 | TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters"); | |
4018 | TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks"); | |
6ae3345d | 4019 | |
4020 | GetIsolationCut()->MakeIsolationCut(reftracks, refclusters, | |
ac5111f9 | 4021 | GetReader(), GetCaloPID(), |
6ae3345d | 4022 | kFALSE, aod, "", |
3c12e375 | 4023 | n,nfrac,coneptsum,coneptlead,isolated); |
1a31a9ab | 4024 | } |
124bffb3 | 4025 | |
4026 | Bool_t isolated = aod->IsIsolated(); | |
124bffb3 | 4027 | Float_t energy = aod->E(); |
4028 | Float_t phi = aod->Phi(); | |
4029 | Float_t eta = aod->Eta(); | |
4030 | ||
e54e9250 | 4031 | if(GetDebug() > 0) |
4032 | printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f, Isolated %d\n", | |
4033 | pt, eta, phi, isolated); | |
124bffb3 | 4034 | |
124bffb3 | 4035 | //--------------------------------------------------------------- |
4036 | // Fill pt/sum pT distribution of particles in cone or in UE band | |
4037 | //--------------------------------------------------------------- | |
4038 | ||
1b1a1b2e | 4039 | Float_t coneptLeadCluster= 0; |
4040 | Float_t coneptLeadTrack = 0; | |
124bffb3 | 4041 | Float_t coneptsumCluster = 0; |
4042 | Float_t coneptsumTrack = 0; | |
4043 | Float_t coneptsumCell = 0; | |
4044 | Float_t etaBandptsumClusterNorm = 0; | |
4045 | Float_t etaBandptsumTrackNorm = 0; | |
4046 | ||
1b1a1b2e | 4047 | CalculateTrackSignalInCone (aod,coneptsumTrack , coneptLeadTrack ); |
4048 | CalculateCaloSignalInCone (aod,coneptsumCluster, coneptLeadCluster); | |
124bffb3 | 4049 | if(fFillCellHistograms) |
4050 | CalculateCaloCellSignalInCone(aod,coneptsumCell ); | |
4051 | ||
4052 | if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged) | |
4053 | { | |
dc1966bb | 4054 | fhConeSumPtClustervsTrack ->Fill(coneptsumCluster, coneptsumTrack ); |
4055 | fhConePtLeadClustervsTrack->Fill(coneptLeadCluster,coneptLeadTrack); | |
4056 | ||
4057 | if(coneptsumTrack > 0) fhConeSumPtClusterTrackFrac ->Fill(pt, coneptsumCluster /coneptsumTrack ); | |
4058 | if(coneptLeadTrack > 0) fhConePtLeadClusterTrackFrac->Fill(pt, coneptLeadCluster/coneptLeadTrack); | |
4059 | ||
977564f5 | 4060 | if(fFillCellHistograms) |
9b01dc66 | 4061 | { |
124bffb3 | 4062 | fhConeSumPtCellvsTrack ->Fill(coneptsumCell, coneptsumTrack); |
4063 | fhConeSumPtCellTrack ->Fill(pt, coneptsumTrack+coneptsumCell); | |
4064 | fhConeSumPtCellTrackTrigEtaPhi->Fill(eta,phi,coneptsumTrack+coneptsumCell); | |
977564f5 | 4065 | } |
1a31a9ab | 4066 | } |
6c80c1bf | 4067 | |
124bffb3 | 4068 | fhConeSumPt ->Fill(pt, coneptsumTrack+coneptsumCluster); |
4069 | fhConeSumPtTrigEtaPhi ->Fill(eta,phi,coneptsumTrack+coneptsumCluster); | |
4070 | ||
dc1966bb | 4071 | Float_t coneptLead = coneptLeadTrack; |
4072 | if(coneptLeadCluster > coneptLeadTrack) coneptLead = coneptLeadCluster; | |
4073 | fhConePtLead->Fill(pt, coneptLead ); | |
1b1a1b2e | 4074 | |
124bffb3 | 4075 | if(GetDebug() > 1) |
dc1966bb | 4076 | printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f, Leading pT in cone %2.2f\n", |
4077 | iaod, coneptsumTrack+coneptsumCluster, coneptLead); | |
124bffb3 | 4078 | |
4079 | //normalize phi/eta band per area unit | |
4080 | if(fFillUEBandSubtractHistograms) | |
4081 | CalculateNormalizeUEBandPerUnitArea(aod, coneptsumCluster, coneptsumCell, coneptsumTrack, etaBandptsumTrackNorm, etaBandptsumClusterNorm) ; | |
4082 | ||
4083 | // printf("Histograms analysis : cluster pt = %f, etaBandTrack = %f, etaBandCluster = %f, isolation = %d\n",aod->Pt(),etaBandptsumTrackNorm,etaBandptsumClusterNorm,aod->IsIsolated()); | |
4084 | ||
dc1966bb | 4085 | //--------------------------------------------------------------- |
4086 | // Fill Shower shape and track matching histograms | |
4087 | //--------------------------------------------------------------- | |
4088 | ||
4089 | FillTrackMatchingShowerShapeControlHistograms(aod, coneptsumTrack+coneptsumCluster, coneptLead, mcIndex); | |
124bffb3 | 4090 | |
4091 | //--------------------------------------------------------------- | |
4092 | // Isolated/ Non isolated histograms | |
4093 | //--------------------------------------------------------------- | |
4094 | ||
23130491 | 4095 | if(isolated) |
4096 | { | |
aa2e58e4 | 4097 | if(GetDebug() > 1) |
4098 | printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod); | |
2ad19c3d | 4099 | |
b5dbb99b | 4100 | fhEIso ->Fill(energy); |
4101 | fhPtIso ->Fill(pt); | |
4102 | fhPhiIso ->Fill(pt,phi); | |
4103 | fhEtaIso ->Fill(pt,eta); | |
0fb69ade | 4104 | fhEtaPhiIso ->Fill(eta,phi); |
c8710850 | 4105 | |
aa2e58e4 | 4106 | if(IsDataMC()) |
977564f5 | 4107 | { |
aa2e58e4 | 4108 | // For histograms in arrays, index in the array, corresponding to any particle origin |
4109 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) | |
4110 | { | |
4111 | fhPtIsoMC [kmcPhoton]->Fill(pt); | |
4112 | fhPhiIsoMC[kmcPhoton]->Fill(pt,phi); | |
4113 | fhEtaIsoMC[kmcPhoton]->Fill(pt,eta); | |
4114 | } | |
4115 | ||
e23c7107 | 4116 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 4117 | { |
4118 | fhPtIsoMC [kmcPi0DecayLostPair]->Fill(pt); | |
4119 | fhPhiIsoMC[kmcPi0DecayLostPair]->Fill(pt,phi); | |
4120 | fhEtaIsoMC[kmcPi0DecayLostPair]->Fill(pt,eta); | |
4121 | } | |
4122 | ||
aa2e58e4 | 4123 | fhPtIsoMC [mcIndex]->Fill(pt); |
4124 | fhPhiIsoMC[mcIndex]->Fill(pt,phi); | |
4125 | fhEtaIsoMC[mcIndex]->Fill(pt,eta); | |
4126 | }//Histograms with MC | |
977564f5 | 4127 | |
aa2e58e4 | 4128 | if(fFillNLMHistograms) |
c12a38d9 | 4129 | fhPtNLocMaxIso ->Fill(pt,aod->GetNLM()) ; |
1a31a9ab | 4130 | |
0cea6003 | 4131 | if(IsHighMultiplicityAnalysisOn()) |
aa2e58e4 | 4132 | { |
4133 | fhPtCentralityIso ->Fill(pt,GetEventCentrality()) ; | |
4134 | fhPtEventPlaneIso ->Fill(pt,GetEventPlaneAngle() ) ; | |
4135 | } | |
4136 | ||
0cea6003 | 4137 | if(IsPileUpAnalysisOn()) |
b1f720a7 | 4138 | { |
17af6e24 | 4139 | if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; } |
4140 | if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; } | |
4141 | if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; } | |
4142 | if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; } | |
4143 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; } | |
4144 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; } | |
4145 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; } | |
124bffb3 | 4146 | |
aa2e58e4 | 4147 | // Fill histograms to undertand pile-up before other cuts applied |
4148 | // Remember to relax time cuts in the reader | |
4149 | FillPileUpHistograms(aod->GetCaloLabel(0)); | |
4150 | } | |
4151 | ||
1a31a9ab | 4152 | }//Isolated histograms |
ca134929 | 4153 | else // NON isolated |
1a31a9ab | 4154 | { |
aa2e58e4 | 4155 | if(GetDebug() > 1) |
4156 | printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod); | |
db6fb352 | 4157 | |
b1f720a7 | 4158 | fhENoIso ->Fill(energy); |
4159 | fhPtNoIso ->Fill(pt); | |
4160 | fhEtaPhiNoIso ->Fill(eta,phi); | |
977564f5 | 4161 | |
aa2e58e4 | 4162 | if(IsDataMC()) |
4163 | { | |
4164 | if( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) | |
4165 | fhPtNoIsoMC[kmcPhoton]->Fill(pt); | |
4166 | ||
e23c7107 | 4167 | if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 4168 | fhPtNoIsoMC[kmcPi0DecayLostPair]->Fill(pt); |
4169 | ||
aa2e58e4 | 4170 | fhPtNoIsoMC[mcIndex]->Fill(pt); |
4171 | } | |
4172 | ||
aa2e58e4 | 4173 | if(fFillNLMHistograms) |
c12a38d9 | 4174 | fhPtNLocMaxNoIso ->Fill(pt,aod->GetNLM()); |
23130491 | 4175 | |
0cea6003 | 4176 | if(IsPileUpAnalysisOn()) |
b1f720a7 | 4177 | { |
17af6e24 | 4178 | if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; } |
4179 | if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; } | |
4180 | if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; } | |
4181 | if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; } | |
4182 | if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; } | |
4183 | if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; } | |
4184 | if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; } | |
b1f720a7 | 4185 | } |
aa2e58e4 | 4186 | } // non iso |
1a31a9ab | 4187 | }// aod loop |
aa2e58e4 | 4188 | |
1a31a9ab | 4189 | } |
4190 | ||
d24561b6 | 4191 | //______________________________________________________ |
dc9c6e78 | 4192 | void AliAnaParticleIsolation::FillAcceptanceHistograms() |
4193 | { | |
4b6cb0f2 | 4194 | // Fill acceptance histograms if MC data is available |
4195 | // Only when particle is in the calorimeter. Rethink if CTS is used. | |
dc9c6e78 | 4196 | |
be703b18 | 4197 | if(GetDebug() > 0) printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - Start \n"); |
4198 | ||
6aac3409 | 4199 | //Double_t photonY = -100 ; |
dc9c6e78 | 4200 | Double_t photonE = -1 ; |
4201 | Double_t photonPt = -1 ; | |
4202 | Double_t photonPhi = 100 ; | |
4203 | Double_t photonEta = -1 ; | |
4204 | ||
4205 | Int_t pdg = 0 ; | |
d2d42179 | 4206 | Int_t status = 0 ; |
dc9c6e78 | 4207 | Int_t tag = 0 ; |
4208 | Int_t mcIndex = 0 ; | |
d2d42179 | 4209 | Int_t nprim = 0; |
4210 | ||
4211 | TParticle * primStack = 0; | |
4212 | AliAODMCParticle * primAOD = 0; | |
dc9c6e78 | 4213 | |
9cfeb6de | 4214 | // Calorimeter cluster merging angle |
4215 | // angle smaller than 3 cells 6 cm (0.014) in EMCal, 2.2 cm in PHOS (0.014*(2.2/6)) | |
4216 | Float_t overlapAngle = 0; | |
e79b1086 | 4217 | Float_t minECalo = 0; |
32bff2da | 4218 | if (GetCalorimeter()==kEMCAL) |
e79b1086 | 4219 | { |
4afdc1d8 | 4220 | overlapAngle = fMinCellsAngleOverlap*0.014 ; |
e79b1086 | 4221 | minECalo = GetReader()->GetEMCALEMin(); |
4222 | } | |
32bff2da | 4223 | else if (GetCalorimeter()==kPHOS ) |
e79b1086 | 4224 | { |
4afdc1d8 | 4225 | overlapAngle = fMinCellsAngleOverlap*0.00382; |
e79b1086 | 4226 | minECalo = GetReader()->GetPHOSEMin(); |
4227 | } | |
9cfeb6de | 4228 | |
d2d42179 | 4229 | // Get the ESD MC particles container |
4230 | AliStack * stack = 0; | |
4231 | if( GetReader()->ReadStack() ) | |
dc9c6e78 | 4232 | { |
d2d42179 | 4233 | stack = GetMCStack(); |
4234 | if(!stack ) return; | |
4235 | nprim = stack->GetNtrack(); | |
4236 | } | |
dc9c6e78 | 4237 | |
d2d42179 | 4238 | // Get the AOD MC particles container |
4239 | TClonesArray * mcparticles = 0; | |
4240 | if( GetReader()->ReadAODMCParticles() ) | |
dc9c6e78 | 4241 | { |
d2d42179 | 4242 | mcparticles = GetReader()->GetAODMCParticles(); |
4243 | if( !mcparticles ) return; | |
4244 | nprim = mcparticles->GetEntriesFast(); | |
4245 | } | |
4246 | ||
4247 | for(Int_t i=0 ; i < nprim; i++) | |
4248 | { | |
4249 | if(GetReader()->AcceptOnlyHIJINGLabels() && !GetReader()->IsHIJINGLabel(i)) continue ; | |
4250 | ||
4251 | if(GetReader()->ReadStack()) | |
4252 | { | |
4253 | primStack = stack->Particle(i) ; | |
ddaa6315 | 4254 | if(!primStack) |
4255 | { | |
4256 | printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - ESD primaries pointer not available!!\n"); | |
4257 | continue; | |
4258 | } | |
4259 | ||
d2d42179 | 4260 | pdg = primStack->GetPdgCode(); |
4261 | status = primStack->GetStatusCode(); | |
4262 | ||
4263 | if(primStack->Energy() == TMath::Abs(primStack->Pz())) continue ; //Protection against floating point exception | |
4264 | ||
4265 | //printf("i %d, %s %d %s %d \n",i, stack->Particle(i)->GetName(), stack->Particle(i)->GetPdgCode(), | |
4266 | // prim->GetName(), prim->GetPdgCode()); | |
4267 | ||
1f0cae67 | 4268 | //photonY = 0.5*TMath::Log((prim->Energy()+prim->Pz())/(prim->Energy()-prim->Pz())) ; |
d2d42179 | 4269 | |
4270 | //Photon kinematics | |
32bff2da | 4271 | primStack->Momentum(fMomentum); |
d2d42179 | 4272 | |
4273 | } | |
4274 | else | |
4275 | { | |
4276 | primAOD = (AliAODMCParticle *) mcparticles->At(i); | |
ddaa6315 | 4277 | if(!primAOD) |
4278 | { | |
4279 | printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - AOD primaries pointer not available!!\n"); | |
4280 | continue; | |
4281 | } | |
4282 | ||
d2d42179 | 4283 | pdg = primAOD->GetPdgCode(); |
4284 | status = primAOD->GetStatus(); | |
4285 | ||
4286 | if(primAOD->E() == TMath::Abs(primAOD->Pz())) continue ; //Protection against floating point exception | |
4287 | ||
1f0cae67 | 4288 | //photonY = 0.5*TMath::Log((prim->Energy()+prim->Pz())/(prim->Energy()-prim->Pz())) ; |
d2d42179 | 4289 | |
4290 | //Photon kinematics | |
32bff2da | 4291 | fMomentum.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E()); |
d2d42179 | 4292 | } |
4293 | ||
4294 | // Select only photons in the final state | |
d24561b6 | 4295 | if(pdg != 22 && pdg!=111) continue ; |
d2d42179 | 4296 | |
4b6cb0f2 | 4297 | // Consider only final state particles, but this depends on generator, |
4298 | // status 1 is the usual one, in case of not being ok, leave the possibility | |
4299 | // to not consider this. | |
f86b9247 | 4300 | if( pdg == 22 && status != 1 && |
4301 | GetMCAnalysisUtils()->GetMCGenerator() != AliMCAnalysisUtils::kBoxLike ) continue ; | |
d2d42179 | 4302 | |
4303 | // If too small or too large pt, skip, same cut as for data analysis | |
32bff2da | 4304 | photonPt = fMomentum.Pt () ; |
d2d42179 | 4305 | |
4306 | if(photonPt < GetMinPt() || photonPt > GetMaxPt() ) continue ; | |
4307 | ||
32bff2da | 4308 | photonE = fMomentum.E () ; |
4309 | photonEta = fMomentum.Eta() ; | |
4310 | photonPhi = fMomentum.Phi() ; | |
d2d42179 | 4311 | |
4312 | if(photonPhi < 0) photonPhi+=TMath::TwoPi(); | |
4313 | ||
bf8a7dac | 4314 | // Check if photons hit the Calorimeter acceptance |
32bff2da | 4315 | if(IsRealCaloAcceptanceOn() && fIsoDetector!=kCTS) // defined on base class |
4b6cb0f2 | 4316 | { |
4317 | if(GetReader()->ReadStack() && | |
4318 | !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(fIsoDetector, primStack)) continue ; | |
4319 | if(GetReader()->ReadAODMCParticles() && | |
4320 | !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(fIsoDetector, primAOD )) continue ; | |
4321 | } | |
6ae3345d | 4322 | |
4b6cb0f2 | 4323 | // Check same fidutial borders as in data analysis on top of real acceptance if real was requested. |
32bff2da | 4324 | if(!GetFiducialCut()->IsInFiducialCut(fMomentum.Eta(),fMomentum.Phi(),fIsoDetector)) continue ; |
6ae3345d | 4325 | |
d2d42179 | 4326 | // Get tag of this particle photon from fragmentation, decay, prompt ... |
4327 | // Set the origin of the photon. | |
9a2ff511 | 4328 | tag = GetMCAnalysisUtils()->CheckOrigin(i,GetReader(),fIsoDetector); |
d2d42179 | 4329 | |
d24561b6 | 4330 | if(pdg == 22 && !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) |
d2d42179 | 4331 | { |
4332 | // A conversion photon from a hadron, skip this kind of photon | |
4333 | // printf("AliAnaPhoton::FillAcceptanceHistograms() - not a photon, weird!\n "); | |
4334 | // GetMCAnalysisUtils()->PrintMCTag(tag); | |
4335 | ||
4336 | continue; | |
4337 | } | |
4338 | ||
9cfeb6de | 4339 | // Check the origin of the photon or if it is a pi0, assing a tag |
92bd115c | 4340 | Int_t pi0d1Label = -1, pi0d2Label = -1; |
9cfeb6de | 4341 | Bool_t overlapPi0 = kTRUE; |
d24561b6 | 4342 | if(pdg==111) |
4343 | { | |
9cfeb6de | 4344 | mcIndex = kmcPrimPi0; |
4345 | //printf("check pi0\n"); | |
4346 | // Get the labels of the decay particles, remove them from isolation cone | |
4347 | // Get also the opening angle and check if decays likely overlap | |
4348 | Bool_t okpi0 = kFALSE; | |
4349 | Int_t ndaugh = GetMCAnalysisUtils()->GetNDaughters(i,GetReader(), okpi0); | |
4350 | //printf("OK pi0 %d, ndaugh %d\n",okpi0,ndaugh); | |
4351 | Int_t d1Pdg = 0, d1Status = 0; Bool_t ok1 = kFALSE; | |
4352 | Int_t d2Pdg = 0, d2Status = 0; Bool_t ok2 = kFALSE; | |
9cfeb6de | 4353 | |
32bff2da | 4354 | if ( ndaugh > 0 ) fMomDaugh1 = GetMCAnalysisUtils()->GetDaughter(0,i,GetReader(),d1Pdg, d1Status,ok1, pi0d1Label); |
4355 | if ( ndaugh > 1 ) fMomDaugh2 = GetMCAnalysisUtils()->GetDaughter(1,i,GetReader(),d2Pdg, d2Status,ok2, pi0d2Label); | |
9cfeb6de | 4356 | |
92bd115c | 4357 | //printf("pi0 daug %d: a) %d, b) %d, c) %d\n", ndaugh,pi0d1Label,pi0d2Label); |
4358 | //if ( ndaugh !=2 ) printf("PDG: %d, %d, %d\n",d1Pdg,d2Pdg); | |
9cfeb6de | 4359 | |
4360 | // Select decays in 2 photons | |
4361 | if( ndaugh!=2 || (d2Pdg != d1Pdg && d1Pdg!=22)) okpi0 = kFALSE; | |
4362 | ||
4363 | // Check overlap of decays | |
4364 | if( okpi0 && fMakePrimaryPi0DecayStudy) | |
d24561b6 | 4365 | { |
32bff2da | 4366 | Float_t d12Angle = fMomDaugh1.Angle(fMomDaugh2.Vect()); |
9cfeb6de | 4367 | if(d12Angle > overlapAngle) overlapPi0 = kFALSE; |
4368 | //printf(" -- d12 angle %2.3f, angle limit %2.3f, overlap %d\n",d12Angle,overlapAngle,overlapPi0); | |
d24561b6 | 4369 | } |
d24561b6 | 4370 | } |
4371 | else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt) ) | |
d2d42179 | 4372 | { |
4373 | mcIndex = kmcPrimPrompt; | |
4374 | } | |
4375 | else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation) ) | |
4376 | { | |
4377 | mcIndex = kmcPrimFrag ; | |
4378 | } | |
4379 | else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCISR)) | |
4380 | { | |
4381 | mcIndex = kmcPrimISR; | |
4382 | } | |
4383 | else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) | |
4384 | { | |
4385 | mcIndex = kmcPrimPi0Decay; | |
4386 | } | |
4387 | else if( (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay) || | |
4388 | GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay))) | |
4389 | { | |
4390 | mcIndex = kmcPrimOtherDecay; | |
4391 | } | |
4392 | else | |
4393 | { | |
bf8a7dac | 4394 | // Other decay but from non final state particle |
4395 | mcIndex = kmcPrimOtherDecay; | |
d2d42179 | 4396 | }//Other origin |
4397 | ||
4398 | // ////////////////////ISO MC///////////////////////// | |
4399 | Double_t sumPtInCone = 0; Double_t dR=0. ; | |
4400 | TParticle * mcisopStack = 0; | |
4401 | AliAODMCParticle * mcisopAOD = 0; | |
4402 | Int_t partInConeStatus = -1, partInConeMother = -1; | |
d24561b6 | 4403 | Double_t partInConePt = 0, partInConeE = 0, partInConeEta = 0, partInConePhi = 0; |
4404 | Int_t partInConeCharge = 0, npart = 0; | |
d2d42179 | 4405 | for(Int_t ip = 0; ip < nprim ; ip++) |
dc9c6e78 | 4406 | { |
d2d42179 | 4407 | if(ip==i) continue; |
dc9c6e78 | 4408 | |
92bd115c | 4409 | if( pdg==111 && ( ip == pi0d1Label || ip == pi0d2Label ) ) |
d24561b6 | 4410 | { |
4411 | //printf("Do not count pi0 decays in cone when isolating pi0 \n"); | |
4412 | continue; | |
4413 | } | |
4414 | ||
d2d42179 | 4415 | if( GetReader()->ReadStack() ) |
dc9c6e78 | 4416 | { |
d2d42179 | 4417 | mcisopStack = static_cast<TParticle*>(stack->Particle(ip)); |
4418 | if( !mcisopStack ) continue; | |
4419 | partInConeStatus = mcisopStack->GetStatusCode(); | |
d24561b6 | 4420 | |
4421 | // Consider only final state particles, but this depends on generator, | |
4422 | // status 1 is the usual one, in case of not being ok, leave the possibility | |
4423 | // to not consider this. | |
f86b9247 | 4424 | if( partInConeStatus != 1 && |
4425 | GetMCAnalysisUtils()->GetMCGenerator()!= AliMCAnalysisUtils::kBoxLike ) continue ; | |
d24561b6 | 4426 | |
d2d42179 | 4427 | partInConeMother = mcisopStack->GetMother(0); |
4428 | partInConePt = mcisopStack->Pt(); | |
d24561b6 | 4429 | partInConeE = mcisopStack->Energy(); |
d2d42179 | 4430 | partInConeEta = mcisopStack->Eta(); |
4431 | partInConePhi = mcisopStack->Phi(); | |
d24561b6 | 4432 | partInConeCharge = TMath::Abs((Int_t) TDatabasePDG::Instance()->GetParticle(mcisopStack->GetPdgCode())->Charge()); |
32bff2da | 4433 | mcisopStack->Momentum(fMomIso); |
d2d42179 | 4434 | } |
4435 | else | |
4436 | { | |
4437 | mcisopAOD = (AliAODMCParticle *) mcparticles->At(ip); | |
4438 | if( !mcisopAOD ) continue; | |
d24561b6 | 4439 | |
d2d42179 | 4440 | partInConeStatus = mcisopAOD->GetStatus(); |
d24561b6 | 4441 | // Consider only final state particles, but this depends on generator, |
4442 | // status 1 is the usual one, in case of not being ok, leave the possibility | |
4443 | // to not consider this. | |
f86b9247 | 4444 | if( partInConeStatus != 1 && |
4445 | GetMCAnalysisUtils()->GetMCGenerator() != AliMCAnalysisUtils::kBoxLike ) continue ; | |
d24561b6 | 4446 | |
d2d42179 | 4447 | partInConeMother = mcisopAOD->GetMother(); |
4448 | partInConePt = mcisopAOD->Pt(); | |
d24561b6 | 4449 | partInConeE = mcisopAOD->E(); |
d2d42179 | 4450 | partInConeEta = mcisopAOD->Eta(); |
4451 | partInConePhi = mcisopAOD->Phi(); | |
d24561b6 | 4452 | partInConeCharge = TMath::Abs(mcisopAOD->Charge()); |
32bff2da | 4453 | fMomIso.SetPxPyPzE(mcisopAOD->Px(),mcisopAOD->Py(),mcisopAOD->Pz(),mcisopAOD->E()); |
d2d42179 | 4454 | } |
dc9c6e78 | 4455 | |
d2d42179 | 4456 | if( partInConeMother == i ) continue; |
4457 | ||
4b6cb0f2 | 4458 | // |
d24561b6 | 4459 | // Apply acceptance and energy/pt cut for particles in cone |
4460 | if(fSelectPrimariesInCone) | |
4461 | { | |
4462 | if( partInConeCharge > 0) // charged pT cut and acceptance | |
4463 | { | |
1accde0c | 4464 | if( GetIsolationCut()->GetParticleTypeInCone() == AliIsolationCut::kOnlyNeutral ) continue; |
4465 | ||
d24561b6 | 4466 | if( partInConePt < GetReader()->GetCTSPtMin () ) continue; |
4467 | ||
32bff2da | 4468 | if(!GetReader()->GetFiducialCut()->IsInFiducialCut(fMomIso.Eta(),fMomIso.Phi(),kCTS)) continue ; |
d24561b6 | 4469 | } |
4470 | else // neutrals E cut and acceptance | |
4471 | { | |
1accde0c | 4472 | if( GetIsolationCut()->GetParticleTypeInCone() == AliIsolationCut::kOnlyCharged ) continue; |
4473 | ||
e79b1086 | 4474 | if( partInConeE <= minECalo ) continue; |
d24561b6 | 4475 | |
32bff2da | 4476 | if(!GetReader()->GetFiducialCut()->IsInFiducialCut(fMomIso.Eta(),fMomIso.Phi(),GetCalorimeter())) continue ; |
d24561b6 | 4477 | |
4478 | if(IsRealCaloAcceptanceOn()) // defined on base class | |
4479 | { | |
4480 | if(GetReader()->ReadStack() && | |
0cea6003 | 4481 | !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(GetCalorimeter(), mcisopStack)) continue ; |
d24561b6 | 4482 | if(GetReader()->ReadAODMCParticles() && |
0cea6003 | 4483 | !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(GetCalorimeter(), mcisopAOD )) continue ; |
d24561b6 | 4484 | } |
4485 | } | |
4486 | } | |
4b6cb0f2 | 4487 | // |
4488 | ||
d2d42179 | 4489 | dR = GetIsolationCut()->Radius(photonEta, photonPhi, partInConeEta, partInConePhi); |
4490 | ||
4491 | if(dR > GetIsolationCut()->GetConeSize()) | |
4492 | continue; | |
4493 | ||
4494 | sumPtInCone += partInConePt; | |
4495 | if(partInConePt > GetIsolationCut()->GetPtThreshold() && | |
4496 | partInConePt < GetIsolationCut()->GetPtThresholdMax()) npart++; | |
4497 | } | |
4498 | ||
4499 | ///////END ISO MC///////////////////////// | |
4500 | ||
4501 | // Fill the histograms, only those in the defined calorimeter acceptance | |
4502 | ||
4503 | fhEtaPrimMC[kmcPrimPhoton]->Fill(photonPt , photonEta) ; | |
4504 | fhPhiPrimMC[kmcPrimPhoton]->Fill(photonPt , photonPhi) ; | |
4505 | fhEPrimMC [kmcPrimPhoton]->Fill(photonE) ; | |
d24561b6 | 4506 | fhPtPrimMC [kmcPrimPhoton]->Fill(photonPt) ; |
d2d42179 | 4507 | |
4508 | fhEtaPrimMC[mcIndex]->Fill(photonPt , photonEta) ; | |
4509 | fhPhiPrimMC[mcIndex]->Fill(photonPt , photonPhi) ; | |
4510 | fhEPrimMC [mcIndex]->Fill(photonE ) ; | |
d24561b6 | 4511 | fhPtPrimMC [mcIndex]->Fill(photonPt) ; |
4512 | ||
4513 | // In case the photon is a decay from pi0, | |
4514 | // study how the decay kinematics affects the isolation | |
d24561b6 | 4515 | Int_t ndaugh = -1; |
4516 | Bool_t okpi0 = 0, ok1 = 0, ok2 = 0; | |
4517 | Int_t pi0label = -1, d1Label = -1, d2Label = -1; | |
4518 | Bool_t d2Acc = kTRUE, overlap = kTRUE; | |
4519 | Int_t d2AbsId = -1; | |
4520 | Float_t dRdaugh2 = 0, d12Angle = 0; | |
4521 | if(mcIndex == kmcPrimPi0Decay && fMakePrimaryPi0DecayStudy) | |
4522 | { | |
32bff2da | 4523 | GetMCAnalysisUtils()->GetMotherWithPDG(i,111,GetReader(),okpi0, pi0label); |
d24561b6 | 4524 | if(okpi0) |
4525 | { | |
4526 | ndaugh = GetMCAnalysisUtils()->GetNDaughters(pi0label,GetReader(), okpi0); | |
4527 | if(ndaugh==2) | |
4528 | { | |
4529 | Int_t d1Pdg = 0, d1Status = 0; | |
32bff2da | 4530 | fMomDaugh1 = GetMCAnalysisUtils()->GetDaughter(0,pi0label,GetReader(),d1Pdg, d1Status,ok1, d1Label); |
d24561b6 | 4531 | Int_t d2Pdg = 0, d2Status = 0; |
32bff2da | 4532 | fMomDaugh2 = GetMCAnalysisUtils()->GetDaughter(1,pi0label,GetReader(),d2Pdg, d2Status,ok2, d2Label); |
d24561b6 | 4533 | if(d2Pdg != d1Pdg && d1Pdg!=22) okpi0 = kFALSE; |
4534 | ||
4535 | // Check the momentum and location of second daughter | |
4536 | if(okpi0) | |
4537 | { | |
4538 | // assign current trigger to first daughter | |
4539 | if(d1Label!=i) | |
4540 | { | |
4541 | Int_t tmpLabel = d2Label; | |
4542 | d2Label = d1Label; | |
4543 | d1Label = tmpLabel; | |
32bff2da | 4544 | fMomentum = fMomDaugh2; |
4545 | fMomDaugh2 = fMomDaugh1; | |
4546 | fMomDaugh1 = fMomentum; | |
d24561b6 | 4547 | } |
4548 | ||
4549 | // Check if photons hit the Calorimeter acceptance | |
32bff2da | 4550 | if(IsRealCaloAcceptanceOn() && fIsoDetector!=kCTS) // defined on base class |
4551 | d2Acc = GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(fIsoDetector,fMomDaugh2.Eta(), | |
4552 | fMomDaugh2.Theta(),fMomDaugh2.Phi(),d2AbsId) ; | |
d24561b6 | 4553 | |
4554 | //printf("D2 (eta %2.2f,phi %2.2f)in real calo %d, with absId %d\n", | |
4555 | // daugh2mom.Eta(), daugh2mom.Phi()*TMath::RadToDeg(),d2Acc,d2AbsId); | |
4556 | ||
4557 | // Check same fidutial borders as in data analysis on top of real acceptance if real was requested. | |
32bff2da | 4558 | if(d2Acc) d2Acc = GetReader()->GetFiducialCut()->IsInFiducialCut(fMomDaugh2.Eta(),fMomDaugh2.Phi(),fIsoDetector); |
d24561b6 | 4559 | //printf("D2 fidcut %d\n",d2Acc); |
4560 | ||
32bff2da | 4561 | Float_t phiDaugh2 = fMomDaugh2.Phi(); |
d24561b6 | 4562 | if(phiDaugh2 < 0) phiDaugh2+=TMath::TwoPi(); |
32bff2da | 4563 | dRdaugh2 = GetIsolationCut()->Radius(photonEta, photonPhi, fMomDaugh2.Eta(),phiDaugh2); |
d24561b6 | 4564 | |
4565 | // Opening angle, check if pairs will likely overlap | |
32bff2da | 4566 | d12Angle = fMomDaugh1.Angle(fMomDaugh2.Vect()); |
9cfeb6de | 4567 | if(d12Angle > overlapAngle) overlap = kFALSE; |
d24561b6 | 4568 | |
4569 | } | |
4570 | } | |
4571 | } | |
4572 | ||
4573 | //printf("Check mother of label %d: mom label %d, okmom %d ndaugh %d, daugh label1 %d, label2 %d, ok1 %d, ok2 %d, R %2.3f, opening angle %2.3f, overlap %d\n", | |
4574 | // i, pi0label,okpi0,ndaugh,d1Label,d2Label,ok1,ok2, dRdaugh2, d12Angle, overlap); | |
4575 | ||
4576 | // Second decay out of cone | |
4577 | if(dRdaugh2 > GetIsolationCut()->GetConeSize()) | |
4578 | fhPtPrimMCPi0DecayPairOutOfCone->Fill(photonPt); | |
4579 | ||
4580 | // Second decay out of acceptance | |
32bff2da | 4581 | if(!ok2 || !d2Acc || fMomDaugh2.E() <= minECalo) |
9ecbb69a | 4582 | { |
d24561b6 | 4583 | fhPtPrimMCPi0DecayPairOutOfAcceptance->Fill(photonPt); |
9ecbb69a | 4584 | if(!overlap) fhPtPrimMCPi0DecayPairOutOfAcceptanceNoOverlap->Fill(photonPt); |
4585 | } | |
4586 | ||
d24561b6 | 4587 | // Not Overlapped decay |
4588 | if(!overlap) fhPtPrimMCPi0DecayPairNoOverlap->Fill(photonPt); | |
4589 | ||
4590 | // Second decay pt smaller than threshold | |
4591 | if(d2Acc && dRdaugh2 < GetIsolationCut()->GetConeSize() && | |
32bff2da | 4592 | fMomDaugh2.E() < GetIsolationCut()->GetPtThreshold()) |
d24561b6 | 4593 | { |
4594 | fhPtPrimMCPi0DecayPairAcceptInConeLowPt->Fill(photonPt); | |
e79b1086 | 4595 | if(!overlap) |
4596 | { | |
4597 | fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlap->Fill(photonPt); | |
32bff2da | 4598 | if(fMomDaugh2.E() > minECalo) fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlapCaloE->Fill(photonPt); |
e79b1086 | 4599 | } |
d24561b6 | 4600 | } |
4601 | } // pi0 decay | |
d2d42179 | 4602 | |
9cfeb6de | 4603 | if(mcIndex == kmcPrimPi0 && fMakePrimaryPi0DecayStudy && overlapPi0) |
4604 | fhPtPrimMCPi0Overlap->Fill(photonPt); | |
4605 | ||
d2d42179 | 4606 | // Isolated? |
4607 | Bool_t isolated = kFALSE; | |
4608 | if(GetIsolationCut()->GetICMethod() == AliIsolationCut::kSumPtIC && | |
4609 | (sumPtInCone < GetIsolationCut()->GetSumPtThreshold() || | |
4610 | sumPtInCone > GetIsolationCut()->GetSumPtThresholdMax())) | |
4611 | isolated = kTRUE; | |
4612 | ||
4613 | if(GetIsolationCut()->GetICMethod() == AliIsolationCut::kPtThresIC && | |
4614 | npart == 0) | |
4615 | isolated = kTRUE; | |
4616 | ||
4617 | if(isolated) | |
4618 | { | |
4619 | fhPtPrimMCiso [mcIndex] ->Fill(photonPt) ; | |
4620 | fhPtPrimMCiso [kmcPrimPhoton]->Fill(photonPt) ; | |
d24561b6 | 4621 | if(mcIndex == kmcPrimPi0Decay && fMakePrimaryPi0DecayStudy) |
4622 | { | |
7eedb724 | 4623 | // Not Overlapped decay |
4624 | if(!overlap) fhPtPrimMCPi0DecayIsoPairNoOverlap->Fill(photonPt); | |
4625 | ||
d24561b6 | 4626 | // Second decay out of cone |
4627 | if(dRdaugh2 > GetIsolationCut()->GetConeSize()) | |
4628 | fhPtPrimMCPi0DecayIsoPairOutOfCone->Fill(photonPt); | |
4629 | ||
4630 | // Second decay out of acceptance | |
32bff2da | 4631 | if(!ok2 || !d2Acc || fMomDaugh2.E() <= minECalo) |
9ecbb69a | 4632 | { |
d24561b6 | 4633 | fhPtPrimMCPi0DecayIsoPairOutOfAcceptance->Fill(photonPt); |
9ecbb69a | 4634 | if(!overlap) fhPtPrimMCPi0DecayIsoPairOutOfAcceptanceNoOverlap->Fill(photonPt); |
4635 | } | |
d24561b6 | 4636 | |
4637 | // Second decay pt smaller than threshold | |
4638 | if(d2Acc && dRdaugh2 < GetIsolationCut()->GetConeSize() && | |
32bff2da | 4639 | fMomDaugh2.E() < GetIsolationCut()->GetPtThreshold()) |
d24561b6 | 4640 | { |
4641 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPt->Fill(photonPt); | |
e79b1086 | 4642 | if(!overlap) |
4643 | { | |
4644 | fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlap->Fill(photonPt); | |
32bff2da | 4645 | if(fMomDaugh2.E() > minECalo) fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlapCaloE->Fill(photonPt); |
e79b1086 | 4646 | } |
d24561b6 | 4647 | } |
4648 | }// pi0 decay | |
9cfeb6de | 4649 | |
4650 | if(mcIndex == kmcPrimPi0 && fMakePrimaryPi0DecayStudy && overlapPi0) | |
4651 | fhPtPrimMCPi0IsoOverlap->Fill(photonPt); | |
4652 | ||
4653 | } // isolated | |
d2d42179 | 4654 | }//loop on primaries |
be703b18 | 4655 | |
4656 | if(GetDebug() > 0) printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - End \n"); | |
6ae3345d | 4657 | |
dc9c6e78 | 4658 | } |
4659 | ||
4660 | ||
803d06a8 | 4661 | //_____________________________________________________________________________________ |
124bffb3 | 4662 | void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph, |
4663 | Int_t mcIndex) | |
1a31a9ab | 4664 | { |
1a31a9ab | 4665 | |
db6fb352 | 4666 | //Isolation Cut Analysis for both methods and different pt cuts and cones |
d2d42179 | 4667 | Float_t ptC = ph->Pt(); |
db6fb352 | 4668 | Float_t etaC = ph->Eta(); |
4669 | Float_t phiC = ph->Phi(); | |
93518258 | 4670 | if(phiC<0) phiC += TMath::TwoPi(); |
d2d42179 | 4671 | Int_t tag = ph->GetTag(); |
8913c8c4 | 4672 | |
4673 | Int_t decayTag = 0; | |
4674 | if(fFillTaggedDecayHistograms) | |
4675 | { | |
c12a38d9 | 4676 | decayTag = ph->DecayTag(); |
4677 | if(decayTag < 0) decayTag = 0; | |
8913c8c4 | 4678 | } |
4679 | ||
be703b18 | 4680 | if(GetDebug() > 0) |
8913c8c4 | 4681 | printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f, decay tag %d\n",ptC, decayTag); |
03bae431 | 4682 | |
124bffb3 | 4683 | //Keep original setting used when filling AODs, reset at end of analysis |
1a31a9ab | 4684 | Float_t ptthresorg = GetIsolationCut()->GetPtThreshold(); |
4685 | Float_t ptfracorg = GetIsolationCut()->GetPtFraction(); | |
f5b702a0 | 4686 | Float_t ptsumcorg = GetIsolationCut()->GetSumPtThreshold(); |
1a31a9ab | 4687 | Float_t rorg = GetIsolationCut()->GetConeSize(); |
4688 | ||
3c12e375 | 4689 | Float_t coneptsum = 0, coneptlead = 0; |
db6fb352 | 4690 | Int_t n [10][10];//[fNCones][fNPtThresFrac]; |
4691 | Int_t nfrac[10][10];//[fNCones][fNPtThresFrac]; | |
ca134929 | 4692 | Bool_t isolated = kFALSE; |
6ae3345d | 4693 | |
727a309a | 4694 | // Fill hist with all particles before isolation criteria |
be703b18 | 4695 | fhENoIso ->Fill(ph->E()); |
db6fb352 | 4696 | fhPtNoIso ->Fill(ptC); |
4697 | fhEtaPhiNoIso->Fill(etaC,phiC); | |
4698 | ||
4699 | if(IsDataMC()) | |
4700 | { | |
124bffb3 | 4701 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) |
4702 | fhPtNoIsoMC[kmcPhoton]->Fill(ptC); | |
4703 | ||
e23c7107 | 4704 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 4705 | fhPtNoIsoMC[kmcPi0DecayLostPair]->Fill(ptC); |
4706 | ||
124bffb3 | 4707 | fhPtNoIsoMC[mcIndex]->Fill(ptC); |
db6fb352 | 4708 | } |
4709 | ||
aa2e58e4 | 4710 | // Candidates tagged as decay in another analysis (AliAnaPi0EbE) |
8913c8c4 | 4711 | if(fFillTaggedDecayHistograms && decayTag > 0) |
db6fb352 | 4712 | { |
8913c8c4 | 4713 | for(Int_t ibit = 0; ibit < fNDecayBits; ibit++) |
aa2e58e4 | 4714 | { |
8913c8c4 | 4715 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[ibit])) |
4716 | { | |
93518258 | 4717 | fhPtDecay [0][ibit]->Fill(ptC); |
4718 | fhEtaPhiDecay[0][ibit]->Fill(etaC,phiC); | |
8913c8c4 | 4719 | |
4720 | if(IsDataMC()) | |
4721 | { | |
4722 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) | |
93518258 | 4723 | fhPtDecayMC[0][ibit][kmcPhoton]->Fill(ptC); |
70460dc6 | 4724 | |
e23c7107 | 4725 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
93518258 | 4726 | fhPtDecayMC[0][ibit][kmcPi0DecayLostPair]->Fill(ptC); |
8913c8c4 | 4727 | |
93518258 | 4728 | fhPtDecayMC[0][ibit][mcIndex]->Fill(ptC); |
8913c8c4 | 4729 | } |
4730 | } // bit ok | |
4731 | } // bit loop | |
4732 | } // decay histograms | |
be703b18 | 4733 | |
44e48e82 | 4734 | //Get vertex for photon momentum calculation |
4735 | Double_t vertex[] = {0,0,0} ; //vertex ; | |
124bffb3 | 4736 | if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) |
4737 | GetReader()->GetVertex(vertex); | |
6ae3345d | 4738 | |
1a31a9ab | 4739 | //Loop on cone sizes |
b5dbb99b | 4740 | for(Int_t icone = 0; icone<fNCones; icone++) |
4741 | { | |
44e48e82 | 4742 | //Recover reference arrays with clusters and tracks |
4743 | TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters"); | |
4744 | TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks"); | |
4745 | ||
4746 | //If too small or too large pt, skip | |
124bffb3 | 4747 | if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ; |
4748 | ||
4749 | //In case a more strict IC is needed in the produced AOD | |
4750 | ||
3c12e375 | 4751 | isolated = kFALSE; coneptsum = 0; coneptlead = 0; |
124bffb3 | 4752 | |
4753 | GetIsolationCut()->SetSumPtThreshold(100); | |
4754 | GetIsolationCut()->SetPtThreshold(100); | |
4755 | GetIsolationCut()->SetPtFraction(100); | |
4756 | GetIsolationCut()->SetConeSize(fConeSizes[icone]); | |
db6fb352 | 4757 | |
44e48e82 | 4758 | // retreive pt tracks to fill histo vs. pt leading |
4759 | //Fill pt distribution of particles in cone | |
23130491 | 4760 | //fhPtLeadingPt(),fhPerpSumPtLeadingPt(),fhPerpPtLeadingPt(), |
44e48e82 | 4761 | |
be703b18 | 4762 | // Tracks in perpendicular cones |
23130491 | 4763 | Double_t sumptPerp = 0. ; |
44e48e82 | 4764 | TObjArray * trackList = GetCTSTracks() ; |
4765 | for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++) | |
4766 | { | |
4767 | AliVTrack* track = (AliVTrack *) trackList->At(itrack); | |
4768 | //fill the histograms at forward range | |
4769 | if(!track) | |
4770 | { | |
4771 | printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?"); | |
4772 | continue; | |
4773 | } | |
4774 | ||
4775 | Double_t dPhi = phiC - track->Phi() + TMath::PiOver2(); | |
4776 | Double_t dEta = etaC - track->Eta(); | |
4777 | Double_t arg = dPhi*dPhi + dEta*dEta; | |
4778 | if(TMath::Sqrt(arg) < fConeSizes[icone]) | |
4779 | { | |
23130491 | 4780 | fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py())); |
4781 | sumptPerp+=track->Pt(); | |
44e48e82 | 4782 | } |
4783 | ||
4784 | dPhi = phiC - track->Phi() - TMath::PiOver2(); | |
4785 | arg = dPhi*dPhi + dEta*dEta; | |
4786 | if(TMath::Sqrt(arg) < fConeSizes[icone]) | |
4787 | { | |
23130491 | 4788 | fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py())); |
4789 | sumptPerp+=track->Pt(); | |
124bffb3 | 4790 | } |
44e48e82 | 4791 | } |
23130491 | 4792 | |
4793 | fhPerpSumPtLeadingPt[icone]->Fill(ptC,sumptPerp); | |
4794 | ||
be703b18 | 4795 | // Tracks in isolation cone, pT distribution and sum |
4796 | if(reftracks && GetIsolationCut()->GetParticleTypeInCone()!= AliIsolationCut::kOnlyNeutral) | |
124bffb3 | 4797 | { |
44e48e82 | 4798 | for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++) |
4799 | { | |
4800 | AliVTrack* track = (AliVTrack *) reftracks->At(itrack); | |
be703b18 | 4801 | |
4802 | Float_t rad = GetIsolationCut()->Radius(etaC, phiC, track->Eta(), track->Phi()); | |
4803 | ||
4804 | if(rad > fConeSizes[icone]) continue ; | |
4805 | ||
4806 | fhPtLeadingPt[icone]->Fill(ptC, track->Pt()); | |
4807 | coneptsum += track->Pt(); | |
44e48e82 | 4808 | } |
23130491 | 4809 | } |
4810 | ||
be703b18 | 4811 | // Clusters in isolation cone, pT distribution and sum |
4812 | if(refclusters && GetIsolationCut()->GetParticleTypeInCone()!= AliIsolationCut::kOnlyCharged) | |
124bffb3 | 4813 | { |
44e48e82 | 4814 | for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++) |
4815 | { | |
4816 | AliVCluster* calo = (AliVCluster *) refclusters->At(icalo); | |
6ae3345d | 4817 | |
32bff2da | 4818 | calo->GetMomentum(fMomentum,vertex) ;//Assume that come from vertex in straight line |
6ae3345d | 4819 | |
32bff2da | 4820 | Float_t rad = GetIsolationCut()->Radius(etaC, phiC, fMomentum.Eta(), fMomentum.Phi()); |
6ae3345d | 4821 | |
be703b18 | 4822 | if(rad > fConeSizes[icone]) continue ; |
44e48e82 | 4823 | |
32bff2da | 4824 | fhPtLeadingPt[icone]->Fill(ptC, fMomentum.Pt()); |
4825 | coneptsum += fMomentum.Pt(); | |
44e48e82 | 4826 | } |
4827 | } | |
124bffb3 | 4828 | |
be703b18 | 4829 | fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum); |
f5b702a0 | 4830 | |
4831 | if(IsDataMC()) | |
4832 | { | |
4833 | if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) | |
4834 | fhSumPtLeadingPtMC[kmcPhoton][icone]->Fill(ptC,coneptsum) ; | |
4835 | ||
e23c7107 | 4836 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 4837 | fhSumPtLeadingPtMC[kmcPi0DecayLostPair][icone]->Fill(ptC,coneptsum) ; |
4838 | ||
f5b702a0 | 4839 | fhSumPtLeadingPtMC[mcIndex][icone]->Fill(ptC,coneptsum) ; |
4840 | } | |
6ae3345d | 4841 | |
be703b18 | 4842 | /////////////////// |
124bffb3 | 4843 | |
be703b18 | 4844 | //Loop on pt thresholds |
4845 | for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++) | |
b5dbb99b | 4846 | { |
db6fb352 | 4847 | n [icone][ipt]=0; |
1a31a9ab | 4848 | nfrac[icone][ipt]=0; |
4849 | GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]); | |
db6fb352 | 4850 | GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ; |
4851 | GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]); | |
4852 | ||
44e48e82 | 4853 | GetIsolationCut()->MakeIsolationCut(reftracks, refclusters, |
ac5111f9 | 4854 | GetReader(), GetCaloPID(), |
b5dbb99b | 4855 | kFALSE, ph, "", |
3c12e375 | 4856 | n[icone][ipt],nfrac[icone][ipt], |
4857 | coneptsum, coneptlead, isolated); | |
1a31a9ab | 4858 | |
be703b18 | 4859 | // Normal pT threshold cut |
4860 | ||
4861 | if(GetDebug() > 0) | |
4862 | { | |
4863 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - cone size %1.1f, ptThres %1.1f, sumptThresh %1.1f\n", | |
4864 | fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt]); | |
f5b702a0 | 4865 | printf("\t n %d, nfrac %d, coneptsum %2.2f\n", |
4866 | n[icone][ipt],nfrac[icone][ipt],coneptsum); | |
be703b18 | 4867 | |
4868 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC); | |
4869 | } | |
db6fb352 | 4870 | |
124bffb3 | 4871 | if(n[icone][ipt] == 0) |
b5dbb99b | 4872 | { |
be703b18 | 4873 | if(GetDebug() > 0) |
4874 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n"); | |
4875 | ||
4876 | fhPtThresIsolated [icone][ipt]->Fill(ptC); | |
db6fb352 | 4877 | fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC); |
4878 | ||
8913c8c4 | 4879 | if( fFillTaggedDecayHistograms && decayTag > 0 && fNDecayBits > 0) |
db6fb352 | 4880 | { |
8913c8c4 | 4881 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[0])) |
4882 | { | |
4883 | fhPtPtThresDecayIso [icone][ipt]->Fill(ptC); | |
4884 | fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC); | |
4885 | } | |
db6fb352 | 4886 | } |
4887 | ||
b5dbb99b | 4888 | if(IsDataMC()) |
4889 | { | |
124bffb3 | 4890 | if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) ) |
4891 | fhPtThresIsolatedMC[kmcPhoton][icone][ipt]->Fill(ptC) ; | |
4892 | ||
e23c7107 | 4893 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 4894 | fhPtThresIsolatedMC[kmcPi0DecayLostPair][icone][ipt]->Fill(ptC) ; |
4895 | ||
124bffb3 | 4896 | fhPtThresIsolatedMC[mcIndex][icone][ipt]->Fill(ptC) ; |
4897 | ||
1a31a9ab | 4898 | } |
4899 | } | |
4900 | ||
db6fb352 | 4901 | // pt in cone fraction |
b5dbb99b | 4902 | if(nfrac[icone][ipt] == 0) |
4903 | { | |
be703b18 | 4904 | if(GetDebug() > 0) |
4905 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n"); | |
4906 | ||
4907 | fhPtFracIsolated [icone][ipt]->Fill(ptC); | |
db6fb352 | 4908 | fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC); |
4909 | ||
8913c8c4 | 4910 | if( fFillTaggedDecayHistograms && decayTag > 0 && fNDecayBits > 0) |
db6fb352 | 4911 | { |
8913c8c4 | 4912 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[0])) |
4913 | { | |
4914 | fhPtPtFracDecayIso [icone][ipt]->Fill(ptC); | |
4915 | fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC); | |
4916 | } | |
db6fb352 | 4917 | } |
4918 | ||
b5dbb99b | 4919 | if(IsDataMC()) |
4920 | { | |
124bffb3 | 4921 | if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) |
4922 | fhPtFracIsolatedMC[kmcPhoton][icone][ipt]->Fill(ptC) ; | |
4923 | ||
e23c7107 | 4924 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 4925 | fhPtFracIsolatedMC[kmcPi0DecayLostPair][icone][ipt]->Fill(ptC) ; |
4926 | ||
124bffb3 | 4927 | fhPtFracIsolatedMC[mcIndex][icone][ipt]->Fill(ptC) ; |
1a31a9ab | 4928 | } |
4929 | } | |
db6fb352 | 4930 | |
be703b18 | 4931 | if(GetDebug()>0) |
4932 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod()); | |
db6fb352 | 4933 | |
4934 | //Pt threshold on pt cand/ sum in cone histograms | |
be703b18 | 4935 | if(coneptsum < fSumPtThresholds[ipt]) |
4936 | { | |
4937 | if(GetDebug() > 0 ) | |
4938 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n"); | |
6ae3345d | 4939 | |
f5b702a0 | 4940 | fhSumPtIsolated [icone][ipt]->Fill(ptC) ; |
b0a31c92 | 4941 | fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ; |
be703b18 | 4942 | |
8913c8c4 | 4943 | if( fFillTaggedDecayHistograms && decayTag > 0 && fNDecayBits > 0) |
db6fb352 | 4944 | { |
8913c8c4 | 4945 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[0])) |
4946 | { | |
4947 | fhPtPtSumDecayIso[icone][ipt]->Fill(ptC); | |
4948 | fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ; | |
4949 | } | |
db6fb352 | 4950 | } |
f5b702a0 | 4951 | |
4952 | if(IsDataMC()) | |
4953 | { | |
4954 | if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) | |
4955 | fhSumPtIsolatedMC[kmcPhoton][icone][ipt]->Fill(ptC) ; | |
4956 | ||
e23c7107 | 4957 | if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCDecayPairLost) && mcIndex==kmcPi0Decay ) |
70460dc6 | 4958 | fhSumPtIsolatedMC[kmcPi0DecayLostPair][icone][ipt]->Fill(ptC) ; |
4959 | ||
f5b702a0 | 4960 | fhSumPtIsolatedMC[mcIndex][icone][ipt]->Fill(ptC) ; |
4961 | } | |
db6fb352 | 4962 | } |
4963 | ||
124bffb3 | 4964 | // pt sum pt frac method |
4965 | // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) ) | |
4966 | ||
bb5fc123 | 4967 | if(coneptsum < fPtFractions[ipt]*ptC) |
124bffb3 | 4968 | { |
be703b18 | 4969 | if(GetDebug() > 0) |
4970 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n"); | |
4971 | ||
4972 | fhPtFracPtSumIso [icone][ipt]->Fill(ptC) ; | |
b0a31c92 | 4973 | fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ; |
4974 | ||
8913c8c4 | 4975 | if( fFillTaggedDecayHistograms && decayTag > 0 && fNDecayBits > 0) |
b0a31c92 | 4976 | { |
8913c8c4 | 4977 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[0])) |
4978 | { | |
4979 | fhPtFracPtSumDecayIso [icone][ipt]->Fill(ptC); | |
4980 | fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC); | |
4981 | } | |
b0a31c92 | 4982 | } |
4983 | } | |
4984 | ||
4985 | // density method | |
db6fb352 | 4986 | Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader()); |
be703b18 | 4987 | if(coneptsum < fSumPtThresholds[ipt]*cellDensity) |
4988 | { | |
4989 | if(GetDebug() > 0) | |
4990 | printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n"); | |
4991 | ||
4992 | fhPtSumDensityIso [icone][ipt]->Fill(ptC) ; | |
b0a31c92 | 4993 | fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ; |
4994 | ||
8913c8c4 | 4995 | if( fFillTaggedDecayHistograms && decayTag > 0 && fNDecayBits > 0) |
db6fb352 | 4996 | { |
8913c8c4 | 4997 | if(GetNeutralMesonSelection()->CheckDecayBit(decayTag,fDecayBits[0])) |
4998 | { | |
4999 | fhPtSumDensityDecayIso [icone][ipt]->Fill(ptC); | |
5000 | fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC); | |
5001 | } | |
db6fb352 | 5002 | } |
db6fb352 | 5003 | } |
1a31a9ab | 5004 | }//pt thresh loop |
5005 | ||
1a31a9ab | 5006 | |
5007 | }//cone size loop | |
5008 | ||
5009 | //Reset original parameters for AOD analysis | |
5010 | GetIsolationCut()->SetPtThreshold(ptthresorg); | |
5011 | GetIsolationCut()->SetPtFraction(ptfracorg); | |
f5b702a0 | 5012 | GetIsolationCut()->SetSumPtThreshold(ptsumcorg); |
1a31a9ab | 5013 | GetIsolationCut()->SetConeSize(rorg); |
5014 | ||
5015 | } | |
5016 | ||
803d06a8 | 5017 | //_____________________________________________________________ |
1a31a9ab | 5018 | void AliAnaParticleIsolation::Print(const Option_t * opt) const |
5019 | { | |
5020 | ||
5021 | //Print some relevant parameters set for the analysis | |
5022 | if(! opt) | |
5023 | return; | |
5024 | ||
5025 | printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ; | |
745913ae | 5026 | AliAnaCaloTrackCorrBaseClass::Print(" "); |
1a31a9ab | 5027 | |
5028 | printf("ReMake Isolation = %d \n", fReMakeIC) ; | |
5029 | printf("Make Several Isolation = %d \n", fMakeSeveralIC) ; | |
32bff2da | 5030 | printf("Calorimeter for isolation = %s \n", GetCalorimeterString().Data()) ; |
5031 | printf("Detector for candidate isolation = %s \n", fIsoDetectorString.Data()) ; | |
1a31a9ab | 5032 | |
b5dbb99b | 5033 | if(fMakeSeveralIC) |
5034 | { | |
6ae3345d | 5035 | printf("N Cone Sizes = %d\n", fNCones) ; |
1a31a9ab | 5036 | printf("Cone Sizes = \n") ; |
5037 | for(Int_t i = 0; i < fNCones; i++) | |
5038 | printf(" %1.2f;", fConeSizes[i]) ; | |
5039 | printf(" \n") ; | |
5040 | ||
5041 | printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ; | |
5042 | printf(" pT thresholds = \n") ; | |
5043 | for(Int_t i = 0; i < fNPtThresFrac; i++) | |
5044 | printf(" %2.2f;", fPtThresholds[i]) ; | |
5045 | ||
5046 | printf(" \n") ; | |
5047 | ||
5048 | printf(" pT fractions = \n") ; | |
5049 | for(Int_t i = 0; i < fNPtThresFrac; i++) | |
5050 | printf(" %2.2f;", fPtFractions[i]) ; | |
5051 | ||
db6fb352 | 5052 | printf(" \n") ; |
5053 | ||
5054 | printf("sum pT thresholds = \n") ; | |
5055 | for(Int_t i = 0; i < fNPtThresFrac; i++) | |
5056 | printf(" %2.2f;", fSumPtThresholds[i]) ; | |
5057 | ||
5058 | ||
6ae3345d | 5059 | } |
1a31a9ab | 5060 | |
1a31a9ab | 5061 | printf(" \n") ; |
5062 | ||
5063 | } | |
5064 | ||
32bff2da | 5065 | //_____________________________________________________________ |
5066 | void AliAnaParticleIsolation::SetTriggerDetector(TString & det) | |
5067 | { | |
5068 | // Set the detrimeter for the analysis | |
5069 | ||
5070 | fIsoDetectorString = det; | |
5071 | ||
5072 | if (det=="EMCAL") fIsoDetector = kEMCAL; | |
5073 | else if(det=="PHOS" ) fIsoDetector = kPHOS; | |
5074 | else if(det=="CTS") fIsoDetector = kCTS; | |
5075 | else if(det=="DCAL") fIsoDetector = kDCAL; | |
5076 | else if(det.Contains("DCAL") && det.Contains("PHOS")) fIsoDetector = kDCALPHOS; | |
5077 | else AliFatal(Form("Detector < %s > not known!", det.Data())); | |
5078 | ||
5079 | } | |
5080 | ||
5081 | //_________________________________________________________ | |
5082 | void AliAnaParticleIsolation::SetTriggerDetector(Int_t det) | |
5083 | { | |
5084 | // Set the detrimeter for the analysis | |
5085 | ||
5086 | fIsoDetector = det; | |
5087 | ||
5088 | if (det==kEMCAL) fIsoDetectorString = "EMCAL"; | |
5089 | else if(det==kPHOS ) fIsoDetectorString = "PHOS"; | |
5090 | else if(det==kCTS) fIsoDetectorString = "CTS"; | |
5091 | else if(det==kDCAL) fIsoDetectorString = "DCAL"; | |
5092 | else if(det==kDCALPHOS) fIsoDetectorString = "DCAL_PHOS"; | |
5093 | else AliFatal(Form("Detector < %d > not known!", det)); | |
5094 | ||
5095 | } | |
5096 |