1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 //_________________________________________________________________________
17 // Class for analysis of particle isolation
18 // Input is selected particles put in AOD branch (AliAODPWG4ParticleCorrelation)
20 // Class created from old AliPHOSGammaJet
21 // (see AliRoot versions previous Release 4-09)
23 // -- Author: Gustavo Conesa (LNF-INFN)
25 //-Yaxian Mao (add the possibility for different IC method with different pt range, 01/10/2010)
26 //////////////////////////////////////////////////////////////////////////////
29 // --- ROOT system ---
30 #include <TClonesArray.h>
32 #include <TObjString.h>
36 #include "TParticle.h"
37 #include "TDatabasePDG.h"
41 // --- Analysis system ---
42 #include "AliAnaParticleIsolation.h"
43 #include "AliCaloTrackReader.h"
45 #include "AliIsolationCut.h"
46 #include "AliFiducialCut.h"
47 #include "AliMCAnalysisUtils.h"
48 #include "AliNeutralMesonSelection.h"
49 #include "AliAODMCParticle.h"
50 #include "AliAODPWG4ParticleCorrelation.h"
51 #include "AliMCAnalysisUtils.h"
52 #include "AliVTrack.h"
53 #include "AliVCluster.h"
54 #include "AliESDEvent.h"
55 #include "AliAODEvent.h"
57 #include "AliEMCALGeometry.h"
58 #include "AliPHOSGeoUtils.h"
60 ClassImp(AliAnaParticleIsolation)
62 //______________________________________________________________________________
63 AliAnaParticleIsolation::AliAnaParticleIsolation() :
64 AliAnaCaloTrackCorrBaseClass(), fCalorimeter(""),
65 fReMakeIC(0), fMakeSeveralIC(0),
66 fFillPileUpHistograms(0),
67 fFillTMHisto(0), fFillSSHisto(0),
69 fNCones(0), fNPtThresFrac(0),
70 fConeSizes(), fPtThresholds(),
71 fPtFractions(), fSumPtThresholds(),
73 fhEIso(0), fhPtIso(0),
74 fhPtCentralityIso(0), fhPtEventPlaneIso(0),
76 fhPhiIso(0), fhEtaIso(0), fhEtaPhiIso(0),
78 fhENoIso(0), fhPtNoIso(0), fhPtNLocMaxNoIso(0),
79 fhPtDecayIso(0), fhPtDecayNoIso(0),
80 fhEtaPhiDecayIso(0), fhEtaPhiDecayNoIso(0),
82 fhPtClusterInCone(0), fhPtCellInCone(0), fhPtTrackInCone(0),
83 fhPtTrackInConeOtherBC(0), fhPtTrackInConeOtherBCPileUpSPD(0),
84 fhPtTrackInConeBC0(0), fhPtTrackInConeVtxBC0(0),
85 fhPtTrackInConeBC0PileUpSPD(0),
86 fhPtInConePileUp(), fhPtInConeCent(0),
87 fhPerpConeSumPt(0), fhPtInPerpCone(0),
88 fhEtaPhiInConeCluster(0),fhEtaPhiCluster(0),fhEtaPhiInConeTrack(0),fhEtaPhiTrack(0),
89 fhEtaBandCluster(0), fhPhiBandCluster(0),
90 fhEtaBandTrack(0), fhPhiBandTrack(0),
91 fhEtaBandCell(0), fhPhiBandCell(0),
92 fhConeSumPt(0), fhConeSumPtCellTrack(0),
93 fhConeSumPtCell(0), fhConeSumPtCluster(0), fhConeSumPtTrack(0),
94 fhConeSumPtEtaBandUECluster(0), fhConeSumPtPhiBandUECluster(0),
95 fhConeSumPtEtaBandUETrack(0), fhConeSumPtPhiBandUETrack(0),
96 fhConeSumPtEtaBandUECell(0), fhConeSumPtPhiBandUECell(0),
97 fhConeSumPtTrigEtaPhi(0),
98 fhConeSumPtCellTrackTrigEtaPhi(0),
99 fhConeSumPtEtaBandUEClusterTrigEtaPhi(0), fhConeSumPtPhiBandUEClusterTrigEtaPhi(0),
100 fhConeSumPtEtaBandUETrackTrigEtaPhi(0), fhConeSumPtPhiBandUETrackTrigEtaPhi(0),
101 fhConeSumPtEtaBandUECellTrigEtaPhi(0), fhConeSumPtPhiBandUECellTrigEtaPhi(0),
102 fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
103 fhConeSumPtEtaUESubTrigEtaPhi(0), fhConeSumPtPhiUESubTrigEtaPhi(0),
104 fhConeSumPtEtaUESubTrackCell(0), fhConeSumPtPhiUESubTrackCell(0),
105 fhConeSumPtEtaUESubTrackCellTrigEtaPhi(0), fhConeSumPtPhiUESubTrackCellTrigEtaPhi(0),
106 fhConeSumPtEtaUESubCluster(0), fhConeSumPtPhiUESubCluster(0),
107 fhConeSumPtEtaUESubClusterTrigEtaPhi(0), fhConeSumPtPhiUESubClusterTrigEtaPhi(0),
108 fhConeSumPtEtaUESubCell(0), fhConeSumPtPhiUESubCell(0),
109 fhConeSumPtEtaUESubCellTrigEtaPhi(0), fhConeSumPtPhiUESubCellTrigEtaPhi(0),
110 fhConeSumPtEtaUESubTrack(0), fhConeSumPtPhiUESubTrack(0),
111 fhConeSumPtEtaUESubTrackTrigEtaPhi(0), fhConeSumPtPhiUESubTrackTrigEtaPhi(0),
112 fhFractionTrackOutConeEta(0), fhFractionTrackOutConeEtaTrigEtaPhi(0),
113 fhFractionClusterOutConeEta(0), fhFractionClusterOutConeEtaTrigEtaPhi(0),
114 fhFractionClusterOutConePhi(0), fhFractionClusterOutConePhiTrigEtaPhi(0),
115 fhFractionCellOutConeEta(0), fhFractionCellOutConeEtaTrigEtaPhi(0),
116 fhFractionCellOutConePhi(0), fhFractionCellOutConePhiTrigEtaPhi(0),
117 fhConeSumPtClustervsTrack(0),
118 fhConeSumPtEtaUESubClustervsTrack(0), fhConeSumPtPhiUESubClustervsTrack(0),
119 fhConeSumPtCellvsTrack(0),
120 fhConeSumPtEtaUESubCellvsTrack(0), fhConeSumPtPhiUESubCellvsTrack(0),
121 fhEtaBandClustervsTrack(0), fhPhiBandClustervsTrack(0),
122 fhEtaBandNormClustervsTrack(0), fhPhiBandNormClustervsTrack(0),
123 fhEtaBandCellvsTrack(0), fhPhiBandCellvsTrack(0),
124 fhEtaBandNormCellvsTrack(0), fhPhiBandNormCellvsTrack(0),
125 fhConeSumPtSubvsConeSumPtTotPhiTrack(0), fhConeSumPtSubNormvsConeSumPtTotPhiTrack(0),
126 fhConeSumPtSubvsConeSumPtTotEtaTrack(0), fhConeSumPtSubNormvsConeSumPtTotEtaTrack(0),
127 fhConeSumPtSubvsConeSumPtTotPhiCluster(0), fhConeSumPtSubNormvsConeSumPtTotPhiCluster(0),
128 fhConeSumPtSubvsConeSumPtTotEtaCluster(0), fhConeSumPtSubNormvsConeSumPtTotEtaCluster(0),
129 fhConeSumPtSubvsConeSumPtTotPhiCell(0), fhConeSumPtSubNormvsConeSumPtTotPhiCell(0),
130 fhConeSumPtSubvsConeSumPtTotEtaCell(0), fhConeSumPtSubNormvsConeSumPtTotEtaCell(0),
131 fhConeSumPtVSUETracksEtaBand(0), fhConeSumPtVSUETracksPhiBand(0),
132 fhConeSumPtVSUEClusterEtaBand(0), fhConeSumPtVSUEClusterPhiBand(0),
134 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
135 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
136 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
137 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
138 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
139 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
140 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
141 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
142 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
143 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
144 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
145 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
146 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
147 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
148 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
149 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
150 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
151 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
152 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
153 //fhPtNoIsoConversion(0),
154 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
156 fhSumPtLeadingPt(), fhPtLeadingPt(),
157 fhPerpSumPtLeadingPt(), fhPerpPtLeadingPt(),
158 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
159 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
160 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
161 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
162 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
163 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
164 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
165 // Cluster control histograms
166 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
167 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
168 fhELambda0() , fhPtLambda0() ,
169 fhELambda1(), fhELambda0SSBkg(),
170 fhELambda0TRD(), fhPtLambda0TRD(), fhELambda1TRD(),
171 fhELambda0MCPhoton(), fhPtLambda0MCPhotonPrompt(), fhPtLambda0MCPhotonFrag(),
172 fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
173 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
175 // Number of local maxima in cluster
177 fhELambda0LocMax1(), fhELambda1LocMax1(),
178 fhELambda0LocMax2(), fhELambda1LocMax2(),
179 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
181 fhEIsoPileUp(), fhPtIsoPileUp(),
182 fhENoIsoPileUp(), fhPtNoIsoPileUp(),
183 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
184 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
185 fhTimeNPileUpVertContributors(0),
186 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
187 // Histograms settings
188 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
189 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
193 //Initialize parameters
196 for(Int_t i = 0; i < 5 ; i++)
200 fhPtSumIsolatedPrompt [i] = 0 ;
201 fhPtSumIsolatedFragmentation[i] = 0 ;
202 fhPtSumIsolatedPi0Decay [i] = 0 ;
203 fhPtSumIsolatedPi0 [i] = 0 ;
204 fhPtSumIsolatedEtaDecay [i] = 0 ;
205 fhPtSumIsolatedOtherDecay [i] = 0 ;
206 // fhPtSumIsolatedConversion [i] = 0 ;
207 fhPtSumIsolatedHadron [i] = 0 ;
209 for(Int_t j = 0; j < 5 ; j++)
211 fhPtThresIsolated [i][j] = 0 ;
212 fhPtFracIsolated [i][j] = 0 ;
213 fhPtSumIsolated [i][j] = 0 ;
215 fhEtaPhiPtThresIso [i][j] = 0 ;
216 fhEtaPhiPtThresDecayIso [i][j] = 0 ;
217 fhPtPtThresDecayIso [i][j] = 0 ;
219 fhEtaPhiPtFracIso [i][j] = 0 ;
220 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
221 fhPtPtFracDecayIso [i][j] = 0 ;
222 fhPtPtSumDecayIso [i][j] = 0 ;
223 fhPtSumDensityIso [i][j] = 0 ;
224 fhPtSumDensityDecayIso [i][j] = 0 ;
225 fhEtaPhiSumDensityIso [i][j] = 0 ;
226 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
227 fhPtFracPtSumIso [i][j] = 0 ;
228 fhPtFracPtSumDecayIso [i][j] = 0 ;
229 fhEtaPhiFracPtSumIso [i][j] = 0 ;
230 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
232 fhPtThresIsolatedPrompt [i][j] = 0 ;
233 fhPtThresIsolatedFragmentation[i][j] = 0 ;
234 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
235 fhPtThresIsolatedPi0 [i][j] = 0 ;
236 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
237 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
238 // fhPtThresIsolatedConversion [i][j] = 0 ;
239 fhPtThresIsolatedHadron [ i][j] = 0 ;
241 fhPtFracIsolatedPrompt [i][j] = 0 ;
242 fhPtFracIsolatedFragmentation [i][j] = 0 ;
243 fhPtFracIsolatedPi0 [i][j] = 0 ;
244 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
245 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
246 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
247 // fhPtFracIsolatedConversion [i][j] = 0 ;
248 fhPtFracIsolatedHadron [i][j] = 0 ;
253 for(Int_t i = 0; i < 5 ; i++)
255 fPtFractions [i] = 0 ;
256 fPtThresholds [i] = 0 ;
257 fSumPtThresholds[i] = 0 ;
261 for(Int_t i = 0; i < 2 ; i++)
263 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
264 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
265 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
266 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
268 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
269 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
270 fhPtLambda0 [i] = 0 ; fhPtLambda0TRD [i] = 0 ;
271 fhPtLambda0MCPhotonPrompt [i] = 0 ; fhPtLambda0MCPhotonFrag [i] = 0 ;
272 // Number of local maxima in cluster
274 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
275 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
276 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
282 for(Int_t i = 0; i < 7; i++)
284 fhPtPrimMCiso[i] = 0;
291 for(Int_t i = 0 ; i < 7 ; i++)
293 fhPtInConePileUp[i] = 0 ;
294 fhEIsoPileUp [i] = 0 ;
295 fhPtIsoPileUp [i] = 0 ;
296 fhENoIsoPileUp [i] = 0 ;
297 fhPtNoIsoPileUp [i] = 0 ;
302 //_______________________________________________________________________________________________
303 void AliAnaParticleIsolation::CalculateCaloUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
304 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
306 // Get the clusters pT or sum of pT in phi/eta bands or at 45 degrees from trigger
308 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
310 Float_t conesize = GetIsolationCut()->GetConeSize();
313 //Select the Calorimeter
314 TObjArray * pl = 0x0;
315 if (fCalorimeter == "PHOS" )
316 pl = GetPHOSClusters();
317 else if (fCalorimeter == "EMCAL")
318 pl = GetEMCALClusters();
322 //Get vertex for cluster momentum calculation
323 Double_t vertex[] = {0,0,0} ; //vertex ;
324 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
325 GetReader()->GetVertex(vertex);
327 Float_t ptTrig = pCandidate->Pt() ;
328 Float_t phiTrig = pCandidate->Phi();
329 Float_t etaTrig = pCandidate->Eta();
331 for(Int_t icluster=0; icluster < pl->GetEntriesFast(); icluster++)
333 AliVCluster* cluster = (AliVCluster *) pl->At(icluster);
337 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Cluster not available?");
341 //Do not count the candidate (photon or pi0) or the daughters of the candidate
342 if(cluster->GetID() == pCandidate->GetCaloLabel(0) ||
343 cluster->GetID() == pCandidate->GetCaloLabel(1) ) continue ;
345 //Remove matched clusters to tracks if Neutral and Track info is used
346 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged &&
347 IsTrackMatched(cluster,GetReader()->GetInputEvent())) continue ;
349 cluster->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
351 //exclude particles in cone
352 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, mom.Eta(), mom.Phi());
354 // histo of eta and phi for all clusters
355 fhEtaPhiCluster->Fill(mom.Eta(), mom.Phi());
357 // histos for all clusters in cone
358 fhEtaPhiInConeCluster->Fill(mom.Eta(), mom.Phi());
361 //fill histogram for UE in phi band in EMCal acceptance
362 if(mom.Eta() > (etaTrig-conesize) && mom.Eta() < (etaTrig+conesize))
364 phiBandPtSum+=mom.Pt();
365 fhPhiBandCluster->Fill(mom.Eta(),mom.Phi());
369 //fill histogram for UE in eta band in EMCal acceptance
370 if(mom.Phi() > (phiTrig-conesize) && mom.Phi() < (phiTrig+conesize))
372 etaBandPtSum+=mom.Pt();
373 fhEtaBandCluster->Fill(mom.Eta(),mom.Phi());
377 fhConeSumPtEtaBandUECluster ->Fill(ptTrig , etaBandPtSum);
378 fhConeSumPtPhiBandUECluster ->Fill(ptTrig , phiBandPtSum);
379 fhConeSumPtEtaBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
380 fhConeSumPtPhiBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
384 //________________________________________________________________________________________________
385 void AliAnaParticleIsolation::CalculateCaloCellUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
386 Float_t & etaBandPtSumCells, Float_t & phiBandPtSumCells)
388 // Get the cells amplitude or sum of amplitude in phi/eta bands or at 45 degrees from trigger
390 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
392 Float_t conesize = GetIsolationCut()->GetConeSize();
394 Float_t phiTrig = pCandidate->Phi();
395 if(phiTrig<0) phiTrig += TMath::TwoPi();
396 Float_t etaTrig = pCandidate->Eta();
398 if(pCandidate->GetDetector()=="EMCAL")
400 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
403 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
405 if(!eGeom->CheckAbsCellId(absId)) return ;
407 // Get absolute (col,row) of trigger particle
408 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
410 Int_t imEta=-1, imPhi=-1;
411 Int_t ieta =-1, iphi =-1;
413 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
415 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
417 Int_t colTrig = ieta;
418 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + ieta ;
419 Int_t rowTrig = iphi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
421 Int_t sqrSize = int(conesize/0.0143);
423 AliVCaloCells * cells = GetEMCALCells();
425 Int_t nTotalRows = AliEMCALGeoParams::fgkEMCALRows*16/3 ; // 24*(16/3) 5 full-size Sectors (2 SM) + 1 one-third Sector (2 SM)
426 Int_t nTotalCols = 2*AliEMCALGeoParams::fgkEMCALCols;
427 // printf("nTotalRows %i, nTotalCols %i\n",nTotalRows,nTotalCols);
428 // Loop on cells in eta band
430 Int_t irowmin = rowTrig-sqrSize;
431 if(irowmin<0) irowmin=0;
432 Int_t irowmax = rowTrig+sqrSize;
433 if(irowmax>AliEMCALGeoParams::fgkEMCALRows) irowmax=AliEMCALGeoParams::fgkEMCALRows;
436 for(Int_t irow = irowmin; irow <irowmax; irow++)
438 for(Int_t icol = 0; icol < nTotalCols; icol++)
440 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
441 if(inSector==5) continue;
444 if(icol < AliEMCALGeoParams::fgkEMCALCols)
446 inSupMod = 2*inSector + 1;
449 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
451 inSupMod = 2*inSector;
452 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
455 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
457 // Exclude cells in cone
458 if(TMath::Abs(icol-colTrig) < sqrSize || TMath::Abs(irow-rowTrig) < sqrSize){
461 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
462 if(!eGeom->CheckAbsCellId(iabsId)) continue;
463 etaBandPtSumCells += cells->GetCellAmplitude(iabsId);
464 fhEtaBandCell->Fill(colTrig,rowTrig);
466 // printf("ETA inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, etaBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,etaBandPtSumCells);
469 Int_t icolmin = colTrig-sqrSize;
470 if(icolmin<0) icolmin=0;
471 Int_t icolmax = colTrig+sqrSize;
472 if(icolmax>AliEMCALGeoParams::fgkEMCALCols) icolmax=AliEMCALGeoParams::fgkEMCALCols;
474 // Loop on cells in phi band
475 for(Int_t icol = icolmin; icol < icolmax; icol++)
477 for(Int_t irow = 0; irow < nTotalRows; irow++)
479 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
480 if(inSector==5) continue;
483 // printf("icol %i, irow %i, inSector %i\n",icol,irow ,inSector);
484 if(icol < AliEMCALGeoParams::fgkEMCALCols)
486 // printf("icol < AliEMCALGeoParams::fgkEMCALCols %i\n",AliEMCALGeoParams::fgkEMCALCols );
487 inSupMod = 2*inSector + 1;
490 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
492 // printf("icol > AliEMCALGeoParams::fgkEMCALCols -1 %i\n",AliEMCALGeoParams::fgkEMCALCols -1 );
493 inSupMod = 2*inSector;
494 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
497 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ; // Stesso problema di sopra //
499 // Exclude cells in cone
500 if(TMath::Abs(icol-colTrig) < sqrSize) {
501 //printf("TMath::Abs(icol-colTrig) %i < sqrSize %i\n",TMath::Abs(icol-colTrig) ,sqrSize);continue ;
503 if(TMath::Abs(irow-rowTrig) < sqrSize) {
504 //printf("TMath::Abs(irow-rowTrig) %i < sqrSize %i\n",TMath::Abs(irow-rowTrig) ,sqrSize);continue ;
507 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
508 if(!eGeom->CheckAbsCellId(iabsId)) {printf("!eGeom->CheckAbsCellId(iabsId=%i) inSupMod %i irowLoc %i icolLoc %i \n",iabsId,inSupMod, irowLoc, icolLoc);continue;}
509 phiBandPtSumCells += cells->GetCellAmplitude(iabsId);
510 fhPhiBandCell->Fill(colTrig,rowTrig);
511 //printf("inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, phiBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,phiBandPtSumCells);
518 Float_t ptTrig = pCandidate->Pt();
520 fhConeSumPtEtaBandUECell ->Fill(ptTrig , etaBandPtSumCells);
521 fhConeSumPtPhiBandUECell ->Fill(ptTrig , phiBandPtSumCells);
522 fhConeSumPtEtaBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSumCells);
523 fhConeSumPtPhiBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSumCells);
527 //________________________________________________________________________________________________
528 void AliAnaParticleIsolation::CalculateTrackUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
529 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
531 // Get the track pT or sum of pT in phi/eta bands or at 45 degrees from trigger
533 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
535 Float_t conesize = GetIsolationCut()->GetConeSize();
537 Double_t sumptPerp= 0. ;
538 Float_t ptTrig = pCandidate->Pt() ;
539 Float_t phiTrig = pCandidate->Phi();
540 Float_t etaTrig = pCandidate->Eta();
542 TObjArray * trackList = GetCTSTracks() ;
543 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
545 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
549 printf("AliAnaParticleIsolation::CalculateTrackUEBand() - Track not available?");
553 //Do not count the candidate (pion, conversion photon) or the daughters of the candidate
554 if(track->GetID() == pCandidate->GetTrackLabel(0) || track->GetID() == pCandidate->GetTrackLabel(1) ||
555 track->GetID() == pCandidate->GetTrackLabel(2) || track->GetID() == pCandidate->GetTrackLabel(3) ) continue ;
557 // histo of eta:phi for all tracks
558 fhEtaPhiTrack->Fill(track->Eta(),track->Phi());
560 //exclude particles in cone
561 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, track->Eta(), track->Phi());
563 // histo of eta:phi for all tracks in cone
564 fhEtaPhiInConeTrack->Fill(track->Eta(),track->Phi());
568 //fill histogram for UE in phi band
569 if(track->Eta() > (etaTrig-conesize) && track->Eta() < (etaTrig+conesize))
571 phiBandPtSum+=track->Pt();
572 fhPhiBandTrack->Fill(track->Eta(),track->Phi());
575 //fill histogram for UE in eta band in EMCal acceptance
576 if(track->Phi() > (phiTrig-conesize) && track->Phi() < (phiTrig+conesize))
578 etaBandPtSum+=track->Pt();
579 fhEtaBandTrack->Fill(track->Eta(),track->Phi());
582 //fill the histograms at +-45 degrees in phi from trigger particle, perpedicular to trigger axis in phi
583 Double_t dPhi = phiTrig - track->Phi() + TMath::PiOver2();
584 Double_t dEta = etaTrig - track->Eta();
585 Double_t arg = dPhi*dPhi + dEta*dEta;
586 if(TMath::Sqrt(arg) < conesize)
588 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
589 sumptPerp+=track->Pt();
592 dPhi = phiTrig - track->Phi() - TMath::PiOver2();
593 arg = dPhi*dPhi + dEta*dEta;
594 if(TMath::Sqrt(arg) < conesize)
596 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
597 sumptPerp+=track->Pt();
601 fhPerpConeSumPt ->Fill(ptTrig , sumptPerp );
602 fhConeSumPtEtaBandUETrack ->Fill(ptTrig , etaBandPtSum);
603 fhConeSumPtPhiBandUETrack ->Fill(ptTrig , phiBandPtSum);
604 fhConeSumPtEtaBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
605 fhConeSumPtPhiBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
611 //_____________________________________________________________________________________________________________________________________
612 void AliAnaParticleIsolation::CalculateNormalizeUEBandPerUnitArea(AliAODPWG4ParticleCorrelation * pCandidate, Float_t coneptsumCluster,
613 Float_t coneptsumCell, Float_t coneptsumTrack,
614 Float_t &etaBandptsumTrackNorm, Float_t &etaBandptsumClusterNorm)
616 //normalize phi/eta band per area unit
618 Float_t etaUEptsumTrack = 0 ;
619 Float_t phiUEptsumTrack = 0 ;
620 Float_t etaUEptsumCluster = 0 ;
621 Float_t phiUEptsumCluster = 0 ;
622 Float_t etaUEptsumCell = 0 ;
623 Float_t phiUEptsumCell = 0 ;
625 Int_t partTypeInCone = GetIsolationCut()->GetParticleTypeInCone();
627 // Do the normalization
629 Float_t conesize = GetIsolationCut()->GetConeSize();
630 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
631 Float_t ptTrig = pCandidate->Pt() ;
632 Float_t phiTrig = pCandidate->Phi();
633 Float_t etaTrig = pCandidate->Eta();
639 Float_t phiUEptsumTrackNorm = 0 ;
640 Float_t etaUEptsumTrackNorm = 0 ;
641 Float_t coneptsumTrackSubPhi = 0 ;
642 Float_t coneptsumTrackSubEta = 0 ;
643 Float_t coneptsumTrackSubPhiNorm = 0 ;
644 Float_t coneptsumTrackSubEtaNorm = 0 ;
645 etaBandptsumTrackNorm = 0 ;
647 if( partTypeInCone!=AliIsolationCut::kOnlyNeutral )
649 // Sum the pT in the phi or eta band for clusters or tracks
650 CalculateTrackUEBand (pCandidate,etaUEptsumTrack ,phiUEptsumTrack );// rajouter ici l'histo eta phi
653 fhConeSumPtVSUETracksEtaBand->Fill(coneptsumTrack,etaUEptsumTrack);
654 fhConeSumPtVSUETracksPhiBand->Fill(coneptsumTrack,phiUEptsumTrack);
657 Float_t correctConeSumTrack = 1;
658 Float_t correctConeSumTrackPhi = 1;
660 GetIsolationCut()->CalculateUEBandTrackNormalization(GetReader(),etaTrig, phiTrig,
661 phiUEptsumTrack,etaUEptsumTrack,
662 phiUEptsumTrackNorm,etaUEptsumTrackNorm,
663 correctConeSumTrack,correctConeSumTrackPhi);
665 coneptsumTrackSubPhi = coneptsumTrack - phiUEptsumTrackNorm;
666 coneptsumTrackSubEta = coneptsumTrack - etaUEptsumTrackNorm;
668 etaBandptsumTrackNorm = etaUEptsumTrackNorm;
670 fhConeSumPtPhiUESubTrack ->Fill(ptTrig , coneptsumTrackSubPhi);
671 fhConeSumPtPhiUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubPhi);
672 fhConeSumPtEtaUESubTrack ->Fill(ptTrig , coneptsumTrackSubEta);
673 fhConeSumPtEtaUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubEta);
675 fhFractionTrackOutConeEta ->Fill(ptTrig , correctConeSumTrack-1);
676 fhFractionTrackOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig,correctConeSumTrack-1);
678 if(coneptsumTrack > 0)
680 coneptsumTrackSubPhiNorm = coneptsumTrackSubPhi/coneptsumTrack;
681 coneptsumTrackSubEtaNorm = coneptsumTrackSubEta/coneptsumTrack;
684 fhConeSumPtSubvsConeSumPtTotPhiTrack ->Fill(coneptsumTrack,coneptsumTrackSubPhi);
685 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->Fill(coneptsumTrack,coneptsumTrackSubPhiNorm);
686 fhConeSumPtSubvsConeSumPtTotEtaTrack ->Fill(coneptsumTrack,coneptsumTrackSubEta);
687 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->Fill(coneptsumTrack,coneptsumTrackSubEtaNorm);
691 // ------------------------ //
692 // EMCal Clusters and cells //
693 // ------------------------ //
694 Float_t phiUEptsumClusterNorm = 0 ;
695 Float_t etaUEptsumClusterNorm = 0 ;
696 Float_t coneptsumClusterSubPhi = 0 ;
697 Float_t coneptsumClusterSubEta = 0 ;
698 Float_t coneptsumClusterSubPhiNorm = 0 ;
699 Float_t coneptsumClusterSubEtaNorm = 0 ;
700 Float_t phiUEptsumCellNorm = 0 ;
701 Float_t etaUEptsumCellNorm = 0 ;
702 Float_t coneptsumCellSubPhi = 0 ;
703 Float_t coneptsumCellSubEta = 0 ;
704 Float_t coneptsumCellSubPhiNorm = 0 ;
705 Float_t coneptsumCellSubEtaNorm = 0 ;
706 etaBandptsumClusterNorm = 0;
708 if( partTypeInCone!=AliIsolationCut::kOnlyCharged )
715 // Sum the pT in the phi or eta band for clusters or tracks
716 CalculateCaloUEBand (pCandidate,etaUEptsumCluster,phiUEptsumCluster);// rajouter ici l'histo eta phi
719 fhConeSumPtVSUEClusterEtaBand->Fill(coneptsumCluster,etaUEptsumCluster);
720 fhConeSumPtVSUEClusterPhiBand->Fill(coneptsumCluster,phiUEptsumCluster);
723 Float_t correctConeSumClusterEta = 1;
724 Float_t correctConeSumClusterPhi = 1;
726 GetIsolationCut()->CalculateUEBandClusterNormalization(GetReader(),etaTrig, phiTrig,
727 phiUEptsumCluster,etaUEptsumCluster,
728 phiUEptsumClusterNorm,etaUEptsumClusterNorm,
729 correctConeSumClusterEta,correctConeSumClusterPhi);
731 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
732 // Comment if not used
733 // Float_t coneBadCellsCoeff =1;
734 // Float_t etaBandBadCellsCoeff=1;
735 // Float_t phiBandBadCellsCoeff=1;
736 // GetIsolationCut()->GetCoeffNormBadCell(pCandidate, GetReader(),coneBadCellsCoeff,etaBandBadCellsCoeff,phiBandBadCellsCoeff) ;
738 //coneptsumCluster=coneptsumCluster*coneBadCellsCoeff*correctConeSumClusterEta*correctConeSumClusterPhi;
740 coneptsumClusterSubPhi = coneptsumCluster - phiUEptsumClusterNorm;
741 coneptsumClusterSubEta = coneptsumCluster - etaUEptsumClusterNorm;
743 etaBandptsumClusterNorm = etaUEptsumClusterNorm;
745 fhConeSumPtPhiUESubCluster ->Fill(ptTrig , coneptsumClusterSubPhi);
746 fhConeSumPtPhiUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubPhi);
747 fhConeSumPtEtaUESubCluster ->Fill(ptTrig , coneptsumClusterSubEta);
748 fhConeSumPtEtaUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubEta);
750 fhFractionClusterOutConeEta ->Fill(ptTrig , correctConeSumClusterEta-1);
751 fhFractionClusterOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterEta-1);
752 fhFractionClusterOutConePhi ->Fill(ptTrig , correctConeSumClusterPhi-1);
753 fhFractionClusterOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterPhi-1);
755 if(coneptsumCluster!=0)
757 coneptsumClusterSubPhiNorm = coneptsumClusterSubPhi/coneptsumCluster;
758 coneptsumClusterSubEtaNorm = coneptsumClusterSubEta/coneptsumCluster;
761 fhConeSumPtSubvsConeSumPtTotPhiCluster ->Fill(coneptsumCluster,coneptsumClusterSubPhi);
762 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->Fill(coneptsumCluster,coneptsumClusterSubPhiNorm);
763 fhConeSumPtSubvsConeSumPtTotEtaCluster ->Fill(coneptsumCluster,coneptsumClusterSubEta);
764 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->Fill(coneptsumCluster,coneptsumClusterSubEtaNorm);
770 // Sum the pT in the phi or eta band for clusters or tracks
771 CalculateCaloCellUEBand(pCandidate,etaUEptsumCell ,phiUEptsumCell );
773 // Move to AliIsolationCut the calculation not the histograms??
775 //Careful here if EMCal limits changed .. 2010 (4 SM) to 2011-12 (10 SM), for the moment consider 100 deg in phi
776 Float_t emcEtaSize = 0.7*2; // TO FIX
777 Float_t emcPhiSize = TMath::DegToRad()*100.; // TO FIX
779 if(((2*conesize*emcPhiSize)-coneA)!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*conesize*emcPhiSize)-coneA));
780 if(((2*conesize*emcEtaSize)-coneA)!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*conesize*emcEtaSize)-coneA));
782 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
784 Float_t correctConeSumCellEta = 1;
785 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
787 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
788 correctConeSumCellEta = GetIsolationCut()->CalculateExcessAreaFraction(excess);
789 //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);
790 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
791 if(((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta))!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta)));
794 Float_t correctConeSumCellPhi = 1;
795 //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() );
796 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
797 (phiTrig-conesize < 80*TMath::DegToRad()))
800 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
801 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
803 correctConeSumCellPhi = GetIsolationCut()->CalculateExcessAreaFraction(excess);
804 //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);
806 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
807 if(((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi))!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi)));
811 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
812 coneptsumCellSubPhi = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - phiUEptsumCellNorm;
813 coneptsumCellSubEta = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - etaUEptsumCellNorm;
815 fhConeSumPtPhiUESubCell ->Fill(ptTrig , coneptsumCellSubPhi);
816 fhConeSumPtPhiUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubPhi);
817 fhConeSumPtEtaUESubCell ->Fill(ptTrig , coneptsumCellSubEta);
818 fhConeSumPtEtaUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubEta);
820 fhFractionCellOutConeEta ->Fill(ptTrig , correctConeSumCellEta-1);
821 fhFractionCellOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellEta-1);
822 fhFractionCellOutConePhi ->Fill(ptTrig , correctConeSumCellPhi-1);
823 fhFractionCellOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellPhi-1);
826 coneptsumCellSubPhiNorm = coneptsumCellSubPhi/coneptsumCell;
827 coneptsumCellSubEtaNorm = coneptsumCellSubEta/coneptsumCell;
830 fhConeSumPtSubvsConeSumPtTotPhiCell ->Fill(coneptsumCell,coneptsumCellSubPhi);
831 fhConeSumPtSubNormvsConeSumPtTotPhiCell->Fill(coneptsumCell,coneptsumCellSubPhiNorm);
832 fhConeSumPtSubvsConeSumPtTotEtaCell ->Fill(coneptsumCell,coneptsumCellSubEta);
833 fhConeSumPtSubNormvsConeSumPtTotEtaCell->Fill(coneptsumCell,coneptsumCellSubEtaNorm);
836 if( partTypeInCone==AliIsolationCut::kNeutralAndCharged )
839 // --------------------------- //
840 // Tracks and clusters in cone //
841 // --------------------------- //
843 Double_t sumPhiUESub = coneptsumClusterSubPhi + coneptsumTrackSubPhi;
844 Double_t sumEtaUESub = coneptsumClusterSubEta + coneptsumTrackSubEta;
846 fhConeSumPtPhiUESub ->Fill(ptTrig , sumPhiUESub);
847 fhConeSumPtPhiUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESub);
848 fhConeSumPtEtaUESub ->Fill(ptTrig , sumEtaUESub);
849 fhConeSumPtEtaUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESub);
851 fhEtaBandClustervsTrack ->Fill(etaUEptsumCluster ,etaUEptsumTrack );
852 fhPhiBandClustervsTrack ->Fill(phiUEptsumCluster ,phiUEptsumTrack );
853 fhEtaBandNormClustervsTrack->Fill(etaUEptsumClusterNorm,etaUEptsumTrackNorm);
854 fhPhiBandNormClustervsTrack->Fill(phiUEptsumClusterNorm,phiUEptsumTrackNorm);
856 fhConeSumPtEtaUESubClustervsTrack->Fill(coneptsumClusterSubEta,coneptsumTrackSubEta);
857 fhConeSumPtPhiUESubClustervsTrack->Fill(coneptsumClusterSubPhi,coneptsumTrackSubPhi);
859 // ------------------------ //
860 // Tracks and cells in cone //
861 // ------------------------ //
863 Double_t sumPhiUESubTrackCell = coneptsumCellSubPhi + coneptsumTrackSubPhi;
864 Double_t sumEtaUESubTrackCell = coneptsumCellSubEta + coneptsumTrackSubEta;
866 fhConeSumPtPhiUESubTrackCell ->Fill(ptTrig , sumPhiUESubTrackCell);
867 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESubTrackCell);
868 fhConeSumPtEtaUESubTrackCell ->Fill(ptTrig , sumEtaUESubTrackCell);
869 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESubTrackCell);
871 fhEtaBandCellvsTrack ->Fill(etaUEptsumCell ,etaUEptsumTrack );
872 fhPhiBandCellvsTrack ->Fill(phiUEptsumCell ,phiUEptsumTrack );
873 fhEtaBandNormCellvsTrack->Fill(etaUEptsumCellNorm,etaUEptsumTrackNorm);
874 fhPhiBandNormCellvsTrack->Fill(phiUEptsumCellNorm,phiUEptsumTrackNorm);
876 fhConeSumPtEtaUESubCellvsTrack->Fill(coneptsumCellSubEta,coneptsumTrackSubEta);
877 fhConeSumPtPhiUESubCellvsTrack->Fill(coneptsumCellSubPhi,coneptsumTrackSubPhi);
884 //__________________________________________________________________________________________________
885 void AliAnaParticleIsolation::CalculateCaloSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
886 Float_t & coneptsumCluster)
888 // Get the cluster pT or sum of pT in isolation cone
890 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
892 //Recover reference arrays with clusters and tracks
893 TObjArray * refclusters = aodParticle->GetObjArray(GetAODObjArrayName()+"Clusters");
894 if(!refclusters) return ;
896 Float_t ptTrig = aodParticle->Pt();
898 //Get vertex for cluster momentum calculation
899 Double_t vertex[] = {0,0,0} ; //vertex ;
900 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
901 GetReader()->GetVertex(vertex);
904 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
906 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
907 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
909 fhPtInCone ->Fill(ptTrig, mom.Pt());
910 fhPtClusterInCone->Fill(ptTrig, mom.Pt());
912 if(fFillPileUpHistograms)
914 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(ptTrig,mom.Pt());
915 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,mom.Pt());
916 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,mom.Pt());
917 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,mom.Pt());
918 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,mom.Pt());
919 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,mom.Pt());
920 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,mom.Pt());
923 fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
924 coneptsumCluster+=mom.Pt();
927 fhConeSumPtCluster ->Fill(ptTrig, coneptsumCluster);
930 //______________________________________________________________________________________________________
931 void AliAnaParticleIsolation::CalculateCaloCellSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
932 Float_t & coneptsumCell)
934 // Get the cell amplityde or sum of amplitudes in isolation cone
935 // Mising: Remove signal cells in cone in case the trigger is a cluster!
937 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
939 Float_t conesize = GetIsolationCut()->GetConeSize();
941 Float_t ptTrig = aodParticle->Pt();
942 Float_t phiTrig = aodParticle->Phi();
943 if(phiTrig<0) phiTrig += TMath::TwoPi();
944 Float_t etaTrig = aodParticle->Eta();
946 if(aodParticle->GetDetector()=="EMCAL")
948 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
951 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
953 if(!eGeom->CheckAbsCellId(absId)) return ;
955 // Get absolute (col,row) of trigger particle
956 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
958 Int_t imEta=-1, imPhi=-1;
959 Int_t ieta =-1, iphi =-1;
961 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
963 Int_t iEta=-1, iPhi=-1;
964 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
966 Int_t colTrig = iEta;
967 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + iEta ;
968 Int_t rowTrig = iPhi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
970 Int_t sqrSize = int(conesize/0.0143);
972 AliVCaloCells * cells = GetEMCALCells();
974 // Loop on cells in cone
975 for(Int_t irow = rowTrig-sqrSize; irow < rowTrig+sqrSize; irow++)
977 for(Int_t icol = colTrig-sqrSize; icol < colTrig+sqrSize; icol++)
979 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
980 if(inSector==5) continue;
984 if(icol < AliEMCALGeoParams::fgkEMCALCols)
986 inSupMod = 2*inSector + 1;
989 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
991 inSupMod = 2*inSector;
992 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
995 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
997 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
998 if(!eGeom->CheckAbsCellId(iabsId)) continue;
1000 fhPtCellInCone->Fill(ptTrig, cells->GetCellAmplitude(iabsId));
1001 coneptsumCell += cells->GetCellAmplitude(iabsId);
1008 fhConeSumPtCell->Fill(ptTrig,coneptsumCell);
1012 //___________________________________________________________________________________________________
1013 void AliAnaParticleIsolation::CalculateTrackSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
1014 Float_t & coneptsumTrack)
1016 // Get the track pT or sum of pT in isolation cone
1018 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
1020 //Recover reference arrays with clusters and tracks
1021 TObjArray * reftracks = aodParticle->GetObjArray(GetAODObjArrayName()+"Tracks");
1022 if(!reftracks) return ;
1024 Float_t ptTrig = aodParticle->Pt();
1025 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
1027 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1029 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1030 Float_t pTtrack = track->Pt();
1032 fhPtInCone ->Fill(ptTrig,pTtrack);
1033 fhPtTrackInCone->Fill(ptTrig,pTtrack);
1035 if(fFillPileUpHistograms)
1037 ULong_t status = track->GetStatus();
1038 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1039 //Double32_t tof = track->GetTOFsignal()*1e-3;
1040 Int_t trackBC = track->GetTOFBunchCrossing(bz);
1042 if ( okTOF && trackBC!=0 ) fhPtTrackInConeOtherBC->Fill(ptTrig,pTtrack);
1043 else if( okTOF && trackBC==0 ) fhPtTrackInConeBC0 ->Fill(ptTrig,pTtrack);
1045 Int_t vtxBC = GetReader()->GetVertexBC();
1046 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtTrackInConeVtxBC0->Fill(ptTrig,pTtrack);
1048 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(ptTrig,pTtrack);
1049 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(ptTrig,pTtrack);
1050 if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(ptTrig,pTtrack); }
1051 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,pTtrack);
1052 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,pTtrack);
1053 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,pTtrack);
1054 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,pTtrack);
1055 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,pTtrack);
1056 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,pTtrack);
1059 fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1060 coneptsumTrack+=pTtrack;
1063 fhConeSumPtTrack->Fill(ptTrig, coneptsumTrack);
1067 //_________________________________________________________________
1068 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
1070 // Fill some histograms to understand pile-up
1071 if(!fFillPileUpHistograms) return;
1075 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
1080 TObjArray* clusters = 0x0;
1081 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1082 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1085 Float_t time = -1000;
1089 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1090 energy = cluster->E();
1091 time = cluster->GetTOF()*1e9;
1094 //printf("E %f, time %f\n",energy,time);
1095 AliVEvent * event = GetReader()->GetInputEvent();
1097 fhTimeENoCut->Fill(energy,time);
1098 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
1099 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
1101 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
1103 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
1104 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
1106 // N pile up vertices
1107 Int_t nVerticesSPD = -1;
1108 Int_t nVerticesTracks = -1;
1112 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
1113 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
1118 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
1119 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
1122 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
1123 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
1125 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
1126 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
1129 Float_t z1 = -1, z2 = -1;
1131 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
1135 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
1136 ncont=pv->GetNContributors();
1137 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
1139 diamZ = esdEv->GetDiamondZ();
1143 AliAODVertex *pv=aodEv->GetVertex(iVert);
1144 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
1145 ncont=pv->GetNContributors();
1146 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
1148 diamZ = aodEv->GetDiamondZ();
1151 Double_t distZ = TMath::Abs(z2-z1);
1152 diamZ = TMath::Abs(z2-diamZ);
1154 fhTimeNPileUpVertContributors ->Fill(time,ncont);
1155 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
1156 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
1161 //_____________________________________________________________________________________________________________________
1162 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation *pCandidate,
1165 // Fill Track matching and Shower Shape control histograms
1166 if(!fFillTMHisto && !fFillSSHisto) return;
1168 Int_t clusterID = pCandidate->GetCaloLabel(0) ;
1169 Int_t nMaxima = pCandidate->GetFiducialArea(); // bad name, just place holder for the moment
1170 Int_t mcTag = pCandidate->GetTag() ;
1171 Bool_t isolated = pCandidate->IsIsolated();
1175 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
1180 TObjArray* clusters = 0x0;
1181 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1182 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1184 Float_t energy = pCandidate->E();
1185 Float_t pt = pCandidate->Pt();
1189 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1193 fhELambda0 [isolated]->Fill(energy, cluster->GetM02() );
1194 fhPtLambda0[isolated]->Fill(pt, cluster->GetM02() );
1195 fhELambda1 [isolated]->Fill(energy, cluster->GetM20() );
1199 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
1200 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
1202 fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
1204 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
1205 fhPtLambda0MCPhotonPrompt [isolated]->Fill(pt, cluster->GetM02());
1206 else if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
1207 fhPtLambda0MCPhotonFrag [isolated]->Fill(pt, cluster->GetM02());
1209 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
1210 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
1211 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
1212 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
1214 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
1215 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
1219 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
1221 fhELambda0TRD [isolated]->Fill(energy, cluster->GetM02() );
1222 fhPtLambda0TRD[isolated]->Fill(pt , cluster->GetM02() );
1223 fhELambda1TRD [isolated]->Fill(energy, cluster->GetM20() );
1226 fhNLocMax[isolated]->Fill(energy,nMaxima);
1227 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
1228 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
1229 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
1233 //Analyse non-isolated events
1236 Bool_t iso = kFALSE ;
1237 Float_t coneptsum = 0 ;
1239 TObjArray * plNe = pCandidate->GetObjArray(GetAODObjArrayName()+"Clusters");
1240 TObjArray * plCTS = pCandidate->GetObjArray(GetAODObjArrayName()+"Tracks");
1242 GetIsolationCut()->SetPtThresholdMax(1.);
1243 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
1245 kFALSE, pCandidate, "",
1246 n,nfrac,coneptsum, iso);
1248 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
1250 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1253 GetIsolationCut()->SetPtThresholdMax(10000.);
1260 Float_t dZ = cluster->GetTrackDz();
1261 Float_t dR = cluster->GetTrackDx();
1263 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1265 dR = 2000., dZ = 2000.;
1266 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1269 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
1270 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
1272 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
1273 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
1274 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
1277 // Check dEdx and E/p of matched clusters
1279 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1282 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
1286 Float_t dEdx = track->GetTPCsignal();
1287 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
1289 Float_t eOverp = cluster->E()/track->P();
1290 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
1293 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
1298 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
1300 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1301 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
1302 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
1303 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
1304 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
1309 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1310 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
1311 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
1312 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
1313 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
1322 } // clusters array available
1326 //______________________________________________________
1327 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
1329 //Save parameters used for analysis
1330 TString parList ; //this will be list of parameters used for this analysis.
1331 const Int_t buffersize = 255;
1332 char onePar[buffersize] ;
1334 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
1336 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
1338 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
1340 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
1342 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
1344 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
1349 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
1351 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
1354 for(Int_t icone = 0; icone < fNCones ; icone++)
1356 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
1359 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1361 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
1364 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1366 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
1369 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1371 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
1376 //Get parameters set in base class.
1377 parList += GetBaseParametersList() ;
1379 //Get parameters set in IC class.
1380 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
1382 return new TObjString(parList) ;
1386 //________________________________________________________
1387 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
1389 // Create histograms to be saved in output file and
1390 // store them in outputContainer
1391 TList * outputContainer = new TList() ;
1392 outputContainer->SetName("IsolatedParticleHistos") ;
1394 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
1395 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
1396 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
1397 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
1398 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
1399 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
1400 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
1401 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
1402 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
1403 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
1404 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
1405 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
1406 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
1407 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
1408 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
1410 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
1411 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
1412 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
1413 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
1414 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
1415 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
1417 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
1418 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
1419 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
1420 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
1421 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
1422 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
1424 Int_t nptsumbins = fHistoNPtSumBins;
1425 Float_t ptsummax = fHistoPtSumMax;
1426 Float_t ptsummin = fHistoPtSumMin;
1427 Int_t nptinconebins = fHistoNPtInConeBins;
1428 Float_t ptinconemax = fHistoPtInConeMax;
1429 Float_t ptinconemin = fHistoPtInConeMin;
1431 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
1432 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
1433 Float_t r = GetIsolationCut()->GetConeSize();
1435 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
1439 TString hName [] = {"NoIso",""};
1440 TString hTitle[] = {"Not isolated" ,"isolated"};
1442 fhEIso = new TH1F("hE",
1443 Form("Number of isolated particles vs E for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1444 nptbins,ptmin,ptmax);
1445 fhEIso->SetYTitle("dN / dE");
1446 fhEIso->SetXTitle("E (GeV/#it{c})");
1447 outputContainer->Add(fhEIso) ;
1449 fhPtIso = new TH1F("hPt",
1450 Form("Number of isolated particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1451 nptbins,ptmin,ptmax);
1452 fhPtIso->SetYTitle("dN / #it{p}_{T}");
1453 fhPtIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1454 outputContainer->Add(fhPtIso) ;
1456 fhPtCentralityIso = new TH2F("hPtCentrality","centrality vs #it{p}_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,100);
1457 fhPtCentralityIso->SetYTitle("centrality");
1458 fhPtCentralityIso->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1459 outputContainer->Add(fhPtCentralityIso) ;
1461 fhPtEventPlaneIso = new TH2F("hPtEventPlane","event plane angle vs #it{p}_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1462 fhPtEventPlaneIso->SetYTitle("Event plane angle (rad)");
1463 fhPtEventPlaneIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1464 outputContainer->Add(fhPtEventPlaneIso) ;
1467 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
1468 Form("Number of isolated particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f vs NLM, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1469 nptbins,ptmin,ptmax,10,0,10);
1470 fhPtNLocMaxIso->SetYTitle("NLM");
1471 fhPtNLocMaxIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1472 outputContainer->Add(fhPtNLocMaxIso) ;
1474 fhPhiIso = new TH2F("hPhi",
1475 Form("Number of isolated particles vs #phi for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1476 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1477 fhPhiIso->SetYTitle("#phi");
1478 fhPhiIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1479 outputContainer->Add(fhPhiIso) ;
1481 fhEtaIso = new TH2F("hEta",
1482 Form("Number of isolated particles vs #eta for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1483 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1484 fhEtaIso->SetYTitle("#eta");
1485 fhEtaIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1486 outputContainer->Add(fhEtaIso) ;
1488 fhEtaPhiIso = new TH2F("hEtaPhiIso",
1489 Form("Number of isolated particles #eta vs #phi for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1490 netabins,etamin,etamax,nphibins,phimin,phimax);
1491 fhEtaPhiIso->SetXTitle("#eta");
1492 fhEtaPhiIso->SetYTitle("#phi");
1493 outputContainer->Add(fhEtaPhiIso) ;
1495 fhPtDecayIso = new TH1F("hPtDecayIso",
1496 Form("Number of isolated #pi^{0} decay particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1497 nptbins,ptmin,ptmax);
1498 fhPtDecayIso->SetYTitle("N");
1499 fhPtDecayIso->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1500 outputContainer->Add(fhPtDecayIso) ;
1502 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
1503 Form("Number of isolated Pi0 decay particles #eta vs #phi for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1504 netabins,etamin,etamax,nphibins,phimin,phimax);
1505 fhEtaPhiDecayIso->SetXTitle("#eta");
1506 fhEtaPhiDecayIso->SetYTitle("#phi");
1507 outputContainer->Add(fhEtaPhiDecayIso) ;
1509 fhConeSumPt = new TH2F("hConePtSum",
1510 Form("Track and Cluster #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
1511 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1512 fhConeSumPt->SetYTitle("#Sigma #it{p}_{T}");
1513 fhConeSumPt->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1514 outputContainer->Add(fhConeSumPt) ;
1516 fhConeSumPtTrigEtaPhi = new TH2F("hConePtSumTrigEtaPhi",
1517 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
1518 netabins,etamin,etamax,nphibins,phimin,phimax);
1519 fhConeSumPtTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1520 fhConeSumPtTrigEtaPhi->SetXTitle("#eta_{trigger}");
1521 fhConeSumPtTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1522 outputContainer->Add(fhConeSumPtTrigEtaPhi) ;
1524 fhPtInCone = new TH2F("hPtInCone",
1525 Form("#it{p}_{T} of clusters and tracks in isolation cone for R = %2.2f",r),
1526 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1527 fhPtInCone->SetYTitle("p_{T in cone} (GeV/#it{c})");
1528 fhPtInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1529 outputContainer->Add(fhPtInCone) ;
1531 fhPtInConeCent = new TH2F("hPtInConeCent",
1532 Form("#it{p}_{T} in isolation cone for R = %2.2f",r),
1533 100,0,100,nptinconebins,ptinconemin,ptinconemax);
1534 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/#it{c})");
1535 fhPtInConeCent->SetXTitle("centrality");
1536 outputContainer->Add(fhPtInConeCent) ;
1538 // Cluster only histograms
1539 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyCharged)
1541 fhConeSumPtCluster = new TH2F("hConePtSumCluster",
1542 Form("Cluster #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
1543 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1544 fhConeSumPtCluster->SetYTitle("#Sigma #it{p}_{T}");
1545 fhConeSumPtCluster->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1546 outputContainer->Add(fhConeSumPtCluster) ;
1548 fhConeSumPtCell = new TH2F("hConePtSumCell",
1549 Form("Cell #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
1550 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1551 fhConeSumPtCell->SetYTitle("#Sigma #it{p}_{T}");
1552 fhConeSumPtCell->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1553 outputContainer->Add(fhConeSumPtCell) ;
1555 fhConeSumPtEtaBandUECluster = new TH2F("hConePtSumEtaBandUECluster",
1556 "#Sigma cluster #it{p}_{T} in UE Eta Band",
1557 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1558 fhConeSumPtEtaBandUECluster->SetYTitle("#Sigma #it{p}_{T}");
1559 fhConeSumPtEtaBandUECluster->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1560 outputContainer->Add(fhConeSumPtEtaBandUECluster) ;
1562 fhConeSumPtPhiBandUECluster = new TH2F("hConePtSumPhiBandUECluster",
1563 "#Sigma cluster #it{p}_{T} UE Phi Band",
1564 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1565 fhConeSumPtPhiBandUECluster->SetYTitle("#Sigma #it{p}_{T}");
1566 fhConeSumPtPhiBandUECluster->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1567 outputContainer->Add(fhConeSumPtPhiBandUECluster) ;
1569 fhConeSumPtEtaBandUEClusterTrigEtaPhi = new TH2F("hConePtSumEtaBandUEClusterTrigEtaPhi",
1570 "Trigger #eta vs #phi, #Sigma cluster #it{p}_{T} in UE Eta Band",
1571 netabins,etamin,etamax,nphibins,phimin,phimax);
1572 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1573 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1574 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1575 outputContainer->Add(fhConeSumPtEtaBandUEClusterTrigEtaPhi) ;
1577 fhConeSumPtPhiBandUEClusterTrigEtaPhi = new TH2F("hConePtSumPhiBandUEClusterTrigEtaPhi",
1578 "Trigger #eta vs #phi, #Sigma cluster #it{p}_{T} UE Phi Band",
1579 netabins,etamin,etamax,nphibins,phimin,phimax);
1580 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1581 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1582 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1583 outputContainer->Add(fhConeSumPtPhiBandUEClusterTrigEtaPhi) ;
1586 fhConeSumPtEtaBandUECell = new TH2F("hConePtSumEtaBandUECell",
1587 "#Sigma cell #it{p}_{T} in UE Eta Band",
1588 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1589 fhConeSumPtEtaBandUECell->SetYTitle("#Sigma #it{p}_{T}");
1590 fhConeSumPtEtaBandUECell->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1591 outputContainer->Add(fhConeSumPtEtaBandUECell) ;
1593 fhConeSumPtPhiBandUECell = new TH2F("hConePtSumPhiBandUECell",
1594 "#Sigma cell #it{p}_{T} UE Phi Band",
1595 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1596 fhConeSumPtPhiBandUECell->SetYTitle("#Sigma #it{p}_{T}");
1597 fhConeSumPtPhiBandUECell->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1598 outputContainer->Add(fhConeSumPtPhiBandUECell) ;
1600 fhConeSumPtEtaBandUECellTrigEtaPhi = new TH2F("hConePtSumEtaBandUECellTrigEtaPhi",
1601 "Trigger #eta vs #phi, #Sigma cell #it{p}_{T} in UE Eta Band",
1602 netabins,etamin,etamax,nphibins,phimin,phimax);
1603 fhConeSumPtEtaBandUECellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1604 fhConeSumPtEtaBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1605 fhConeSumPtEtaBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1606 outputContainer->Add(fhConeSumPtEtaBandUECellTrigEtaPhi) ;
1608 fhConeSumPtPhiBandUECellTrigEtaPhi = new TH2F("hConePtSumPhiBandUECellTrigEtaPhi",
1609 "Trigger #eta vs #phi, #Sigma cell #it{p}_{T} UE Phi Band",
1610 netabins,etamin,etamax,nphibins,phimin,phimax);
1611 fhConeSumPtPhiBandUECellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1612 fhConeSumPtPhiBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1613 fhConeSumPtPhiBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1614 outputContainer->Add(fhConeSumPtPhiBandUECellTrigEtaPhi) ;
1617 fhPtClusterInCone = new TH2F("hPtClusterInCone",
1618 Form("#it{p}_{T} of clusters in isolation cone for R = %2.2f",r),
1619 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1620 fhPtClusterInCone->SetYTitle("p_{T in cone} (GeV/#it{c})");
1621 fhPtClusterInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1622 outputContainer->Add(fhPtClusterInCone) ;
1624 fhEtaBandCluster = new TH2F("hEtaBandCluster",
1625 Form("#eta vs #phi of clusters in #eta band isolation cone for R = %2.2f",r),
1626 netabins,-1,1,nphibins,0,TMath::TwoPi());
1627 fhEtaBandCluster->SetXTitle("#eta");
1628 fhEtaBandCluster->SetYTitle("#phi");
1629 outputContainer->Add(fhEtaBandCluster) ;
1631 fhPhiBandCluster = new TH2F("hPhiBandCluster",
1632 Form("#eta vs #phi of clusters in #phi band isolation cone for R = %2.2f",r),
1633 netabins,-1,1,nphibins,0,TMath::TwoPi());
1634 fhPhiBandCluster->SetXTitle("#eta");
1635 fhPhiBandCluster->SetYTitle("#phi");
1636 outputContainer->Add(fhPhiBandCluster) ;
1638 fhEtaPhiInConeCluster= new TH2F("hEtaPhiInConeCluster",
1639 Form("#eta vs #phi of clusters in cone for R = %2.2f",r),
1640 netabins,-1,1,nphibins,0,TMath::TwoPi());
1641 fhEtaPhiInConeCluster->SetXTitle("#eta");
1642 fhEtaPhiInConeCluster->SetYTitle("#phi");
1643 outputContainer->Add(fhEtaPhiInConeCluster) ;
1645 fhEtaPhiCluster= new TH2F("hEtaPhiCluster",
1646 Form("#eta vs #phi of all clusters"),
1647 netabins,-1,1,nphibins,0,TMath::TwoPi());
1648 fhEtaPhiCluster->SetXTitle("#eta");
1649 fhEtaPhiCluster->SetYTitle("#phi");
1650 outputContainer->Add(fhEtaPhiCluster) ;
1652 fhPtCellInCone = new TH2F("hPtCellInCone",
1653 Form("#it{p}_{T} of cells in isolation cone for R = %2.2f",r),
1654 nptbins,ptmin,ptmax,1000,0,50);
1655 fhPtCellInCone->SetYTitle("p_{T in cone} (GeV/#it{c})");
1656 fhPtCellInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1657 outputContainer->Add(fhPtCellInCone) ;
1659 fhEtaBandCell = new TH2F("hEtaBandCell",
1660 Form("#col vs #row of cells in #eta band isolation cone for R = %2.2f",r),
1662 fhEtaBandCell->SetXTitle("#col");
1663 fhEtaBandCell->SetYTitle("#row");
1664 outputContainer->Add(fhEtaBandCell) ;
1666 fhPhiBandCell = new TH2F("hPhiBandCell",
1667 Form("#col vs #row of cells in #phi band isolation cone for R = %2.2f",r),
1669 fhPhiBandCell->SetXTitle("#col");
1670 fhPhiBandCell->SetYTitle("#row");
1671 outputContainer->Add(fhPhiBandCell) ;
1673 fhConeSumPtEtaUESubCluster = new TH2F("hConeSumPtEtaUESubCluster",
1674 Form("Clusters #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1675 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1676 fhConeSumPtEtaUESubCluster->SetYTitle("#Sigma #it{p}_{T}");
1677 fhConeSumPtEtaUESubCluster->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1678 outputContainer->Add(fhConeSumPtEtaUESubCluster) ;
1680 fhConeSumPtPhiUESubCluster = new TH2F("hConeSumPtPhiUESubCluster",
1681 Form("Clusters #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1682 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1683 fhConeSumPtPhiUESubCluster->SetYTitle("#Sigma #it{p}_{T}");
1684 fhConeSumPtPhiUESubCluster->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1685 outputContainer->Add(fhConeSumPtPhiUESubCluster) ;
1687 fhConeSumPtEtaUESubClusterTrigEtaPhi = new TH2F("hConeSumPtEtaUESubClusterTrigEtaPhi",
1688 Form("Trigger #eta vs #phi, Clusters #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1689 netabins,etamin,etamax,nphibins,phimin,phimax);
1690 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1691 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1692 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1693 outputContainer->Add(fhConeSumPtEtaUESubClusterTrigEtaPhi) ;
1695 fhConeSumPtPhiUESubClusterTrigEtaPhi = new TH2F("hConeSumPtPhiUESubClusterTrigEtaPhi",
1696 Form("Trigger #eta vs #phi, Clusters #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1697 netabins,etamin,etamax,nphibins,phimin,phimax);
1698 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1699 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1700 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1701 outputContainer->Add(fhConeSumPtPhiUESubClusterTrigEtaPhi) ;
1704 fhConeSumPtEtaUESubCell = new TH2F("hConeSumPtEtaUESubCell",
1705 Form("Cells #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1706 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1707 fhConeSumPtEtaUESubCell->SetYTitle("#Sigma #it{p}_{T}");
1708 fhConeSumPtEtaUESubCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1709 outputContainer->Add(fhConeSumPtEtaUESubCell) ;
1711 fhConeSumPtPhiUESubCell = new TH2F("hConeSumPtPhiUESubCell",
1712 Form("Cells #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1713 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1714 fhConeSumPtPhiUESubCell->SetYTitle("#Sigma #it{p}_{T}");
1715 fhConeSumPtPhiUESubCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1716 outputContainer->Add(fhConeSumPtPhiUESubCell) ;
1718 fhConeSumPtEtaUESubCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubCellTrigEtaPhi",
1719 Form("Trigger #eta vs #phi, Cells #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1720 netabins,etamin,etamax,nphibins,phimin,phimax);
1721 fhConeSumPtEtaUESubCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1722 fhConeSumPtEtaUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1723 fhConeSumPtEtaUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1724 outputContainer->Add(fhConeSumPtEtaUESubCellTrigEtaPhi) ;
1726 fhConeSumPtPhiUESubCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubCellTrigEtaPhi",
1727 Form("Trigger #eta vs #phi, Cells #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1728 netabins,etamin,etamax,nphibins,phimin,phimax);
1729 fhConeSumPtPhiUESubCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1730 fhConeSumPtPhiUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1731 fhConeSumPtPhiUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1732 outputContainer->Add(fhConeSumPtPhiUESubCellTrigEtaPhi) ;
1735 fhFractionClusterOutConeEta = new TH2F("hFractionClusterOutConeEta",
1736 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance",r),
1737 nptbins,ptmin,ptmax,100,0,1);
1738 fhFractionClusterOutConeEta->SetYTitle("fraction");
1739 fhFractionClusterOutConeEta->SetXTitle("p_{T,trigger} (GeV/#it{c})");
1740 outputContainer->Add(fhFractionClusterOutConeEta) ;
1742 fhFractionClusterOutConeEtaTrigEtaPhi = new TH2F("hFractionClusterOutConeEtaTrigEtaPhi",
1743 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance, in trigger #eta-#phi ",r),
1744 netabins,etamin,etamax,nphibins,phimin,phimax);
1745 fhFractionClusterOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1746 fhFractionClusterOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1747 fhFractionClusterOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1748 outputContainer->Add(fhFractionClusterOutConeEtaTrigEtaPhi) ;
1750 fhFractionClusterOutConePhi = new TH2F("hFractionClusterOutConePhi",
1751 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance",r),
1752 nptbins,ptmin,ptmax,100,0,1);
1753 fhFractionClusterOutConePhi->SetYTitle("fraction");
1754 fhFractionClusterOutConePhi->SetXTitle("p_{T,trigger} (GeV/#it{c})");
1755 outputContainer->Add(fhFractionClusterOutConePhi) ;
1757 fhFractionClusterOutConePhiTrigEtaPhi = new TH2F("hFractionClusterOutConePhiTrigEtaPhi",
1758 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance, in trigger #eta-#phi ",r),
1759 netabins,etamin,etamax,nphibins,phimin,phimax);
1760 fhFractionClusterOutConePhiTrigEtaPhi->SetZTitle("fraction");
1761 fhFractionClusterOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1762 fhFractionClusterOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1763 outputContainer->Add(fhFractionClusterOutConePhiTrigEtaPhi) ;
1765 fhConeSumPtSubvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCluster",
1766 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),
1767 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1768 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1769 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub} (GeV/#it{c})");
1770 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCluster);
1772 fhConeSumPtSubNormvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCluster",
1773 Form("#Sigma 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),
1774 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1775 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1776 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/#it{c})");
1777 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCluster);
1779 fhConeSumPtSubvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCluster",
1780 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),
1781 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1782 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1783 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub} (GeV/#it{c})");
1784 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCluster);
1786 fhConeSumPtSubNormvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCluster",
1787 Form("#Sigma 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),
1788 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1789 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1790 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/#it{c})");
1791 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCluster);
1794 fhFractionCellOutConeEta = new TH2F("hFractionCellOutConeEta",
1795 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance",r),
1796 nptbins,ptmin,ptmax,100,0,1);
1797 fhFractionCellOutConeEta->SetYTitle("fraction");
1798 fhFractionCellOutConeEta->SetXTitle("p_{T,trigger} (GeV/#it{c})");
1799 outputContainer->Add(fhFractionCellOutConeEta) ;
1801 fhFractionCellOutConeEtaTrigEtaPhi = new TH2F("hFractionCellOutConeEtaTrigEtaPhi",
1802 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance, in trigger #eta-#phi ",r),
1803 netabins,etamin,etamax,nphibins,phimin,phimax);
1804 fhFractionCellOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1805 fhFractionCellOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1806 fhFractionCellOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1807 outputContainer->Add(fhFractionCellOutConeEtaTrigEtaPhi) ;
1809 fhFractionCellOutConePhi = new TH2F("hFractionCellOutConePhi",
1810 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance",r),
1811 nptbins,ptmin,ptmax,100,0,1);
1812 fhFractionCellOutConePhi->SetYTitle("fraction");
1813 fhFractionCellOutConePhi->SetXTitle("p_{T,trigger} (GeV/#it{c})");
1814 outputContainer->Add(fhFractionCellOutConePhi) ;
1816 fhFractionCellOutConePhiTrigEtaPhi = new TH2F("hFractionCellOutConePhiTrigEtaPhi",
1817 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance, in trigger #eta-#phi ",r),
1818 netabins,etamin,etamax,nphibins,phimin,phimax);
1819 fhFractionCellOutConePhiTrigEtaPhi->SetZTitle("fraction");
1820 fhFractionCellOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1821 fhFractionCellOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1822 outputContainer->Add(fhFractionCellOutConePhiTrigEtaPhi) ;
1825 fhConeSumPtSubvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCell",
1826 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),
1827 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1828 fhConeSumPtSubvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1829 fhConeSumPtSubvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub} (GeV/#it{c})");
1830 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCell);
1832 fhConeSumPtSubNormvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCell",
1833 Form("#Sigma 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),
1834 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1835 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1836 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/#it{c})");
1837 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCell);
1839 fhConeSumPtSubvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCell",
1840 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),
1841 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1842 fhConeSumPtSubvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1843 fhConeSumPtSubvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub} (GeV/#it{c})");
1844 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCell);
1846 fhConeSumPtSubNormvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCell",
1847 Form("#Sigma 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),
1848 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1849 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1850 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/#it{c})");
1851 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCell);
1853 fhConeSumPtVSUEClusterEtaBand = new TH2F("hConeSumPtVSUEClusterEtaBand",
1854 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in eta band for cluster (before normalization), R=%2.2f",r),
1855 nptsumbins,ptsummin,ptsummax,2*nptsumbins,ptsummin,2*ptsummax);
1856 fhConeSumPtVSUEClusterEtaBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
1857 fhConeSumPtVSUEClusterEtaBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
1858 outputContainer->Add(fhConeSumPtVSUEClusterEtaBand);
1860 fhConeSumPtVSUEClusterPhiBand = new TH2F("hConeSumPtVSUEClusterPhiBand",
1861 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in phi band for cluster (before normalization), R=%2.2f",r),
1862 nptsumbins,ptsummin,ptsummax,8*nptsumbins,ptsummin,8*ptsummax);
1863 fhConeSumPtVSUEClusterPhiBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
1864 fhConeSumPtVSUEClusterPhiBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
1865 outputContainer->Add(fhConeSumPtVSUEClusterPhiBand);
1869 // Track only histograms
1870 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
1872 fhConeSumPtTrack = new TH2F("hConePtSumTrack",
1873 Form("Track #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
1874 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1875 fhConeSumPtTrack->SetYTitle("#Sigma #it{p}_{T}");
1876 fhConeSumPtTrack->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1877 outputContainer->Add(fhConeSumPtTrack) ;
1880 fhConeSumPtEtaBandUETrack = new TH2F("hConePtSumEtaBandUETrack",
1881 "#Sigma track #it{p}_{T} in UE Eta Band",
1882 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1883 fhConeSumPtEtaBandUETrack->SetYTitle("#Sigma #it{p}_{T}");
1884 fhConeSumPtEtaBandUETrack->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1885 outputContainer->Add(fhConeSumPtEtaBandUETrack) ;
1887 fhConeSumPtPhiBandUETrack = new TH2F("hConePtSumPhiBandUETrack",
1888 "#Sigma track #it{p}_{T} in UE Phi Band",
1889 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax*8);
1890 fhConeSumPtPhiBandUETrack->SetYTitle("#Sigma #it{p}_{T}");
1891 fhConeSumPtPhiBandUETrack->SetXTitle("p_{T, trigger} (GeV/#it{c})");
1892 outputContainer->Add(fhConeSumPtPhiBandUETrack) ;
1895 fhConeSumPtEtaBandUETrackTrigEtaPhi = new TH2F("hConePtSumEtaBandUETrackTrigEtaPhi",
1896 "Trigger #eta vs #phi, #Sigma track #it{p}_{T} in UE Eta Band",
1897 netabins,etamin,etamax,nphibins,phimin,phimax);
1898 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1899 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1900 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1901 outputContainer->Add(fhConeSumPtEtaBandUETrackTrigEtaPhi) ;
1903 fhConeSumPtPhiBandUETrackTrigEtaPhi = new TH2F("hConePtSumPhiBandUETrackTrigEtaPhi",
1904 "Trigger #eta vs #phi, #Sigma track #it{p}_{T} in UE Phi Band",
1905 netabins,etamin,etamax,nphibins,phimin,phimax);
1906 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1907 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1908 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1909 outputContainer->Add(fhConeSumPtPhiBandUETrackTrigEtaPhi) ;
1912 fhPtTrackInCone = new TH2F("hPtTrackInCone",
1913 Form("#it{p}_{T} of tracks in isolation cone for R = %2.2f",r),
1914 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1915 fhPtTrackInCone->SetYTitle("p_{T in cone} (GeV/#it{c})");
1916 fhPtTrackInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1917 outputContainer->Add(fhPtTrackInCone) ;
1920 fhEtaBandTrack = new TH2F("hEtaBandTrack",
1921 Form("#eta vs #phi of tracks in #eta band isolation cone for R = %2.2f",r),
1922 netabins,-1,1,nphibins,0,TMath::TwoPi());
1923 fhEtaBandTrack->SetXTitle("#eta");
1924 fhEtaBandTrack->SetYTitle("#phi");
1925 outputContainer->Add(fhEtaBandTrack) ;
1927 fhPhiBandTrack = new TH2F("hPhiBandTrack",
1928 Form("#eta vs #phi of tracks in #phi band isolation cone for R = %2.2f",r),
1929 netabins,-1,1,nphibins,0,TMath::TwoPi());
1930 fhPhiBandTrack->SetXTitle("#eta");
1931 fhPhiBandTrack->SetYTitle("#phi");
1932 outputContainer->Add(fhPhiBandTrack) ;
1935 fhConeSumPtEtaUESubTrack = new TH2F("hConeSumPtEtaUESubTrack",
1936 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1937 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1938 fhConeSumPtEtaUESubTrack->SetYTitle("#Sigma #it{p}_{T}");
1939 fhConeSumPtEtaUESubTrack->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1940 outputContainer->Add(fhConeSumPtEtaUESubTrack) ;
1942 fhConeSumPtPhiUESubTrack = new TH2F("hConeSumPtPhiUESubTrack",
1943 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1944 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1945 fhConeSumPtPhiUESubTrack->SetYTitle("#Sigma #it{p}_{T}");
1946 fhConeSumPtPhiUESubTrack->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1947 outputContainer->Add(fhConeSumPtPhiUESubTrack) ;
1949 fhConeSumPtEtaUESubTrackTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackTrigEtaPhi",
1950 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1951 netabins,etamin,etamax,nphibins,phimin,phimax);
1952 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1953 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1954 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1955 outputContainer->Add(fhConeSumPtEtaUESubTrackTrigEtaPhi) ;
1957 fhConeSumPtPhiUESubTrackTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackTrigEtaPhi",
1958 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1959 netabins,etamin,etamax,nphibins,phimin,phimax);
1960 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1961 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1962 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1963 outputContainer->Add(fhConeSumPtPhiUESubTrackTrigEtaPhi) ;
1965 fhFractionTrackOutConeEta = new TH2F("hFractionTrackOutConeEta",
1966 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance",r),
1967 nptbins,ptmin,ptmax,100,0,1);
1968 fhFractionTrackOutConeEta->SetYTitle("fraction");
1969 fhFractionTrackOutConeEta->SetXTitle("p_{T,trigger} (GeV/#it{c})");
1970 outputContainer->Add(fhFractionTrackOutConeEta) ;
1972 fhFractionTrackOutConeEtaTrigEtaPhi = new TH2F("hFractionTrackOutConeEtaTrigEtaPhi",
1973 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance, in trigger #eta-#phi ",r),
1974 netabins,etamin,etamax,nphibins,phimin,phimax);
1975 fhFractionTrackOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1976 fhFractionTrackOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1977 fhFractionTrackOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1978 outputContainer->Add(fhFractionTrackOutConeEtaTrigEtaPhi) ;
1980 fhConeSumPtSubvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubvsConeSumPtTotPhiTrack",
1981 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),
1982 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1983 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1984 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub} (GeV/#it{c})");
1985 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiTrack);
1987 fhConeSumPtSubNormvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiTrack",
1988 Form("#Sigma 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),
1989 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1990 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1991 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/#it{c})");
1992 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiTrack);
1994 fhConeSumPtSubvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubvsConeSumPtTotEtaTrack",
1995 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),
1996 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1997 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
1998 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub} (GeV/#it{c})");
1999 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaTrack);
2001 fhConeSumPtSubNormvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaTrack",
2002 Form("#Sigma 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),
2003 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2004 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/#it{c})");
2005 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/#it{c})");
2006 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaTrack);
2008 // UE in perpendicular cone
2009 fhPerpConeSumPt = new TH2F("hPerpConePtSum",
2010 Form("#Sigma #it{p}_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
2011 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2012 fhPerpConeSumPt->SetYTitle("#Sigma #it{p}_{T}");
2013 fhPerpConeSumPt->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2014 outputContainer->Add(fhPerpConeSumPt) ;
2016 fhPtInPerpCone = new TH2F("hPtInPerpCone",
2017 Form("#it{p}_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
2018 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2019 fhPtInPerpCone->SetYTitle("p_{T in cone} (GeV/#it{c})");
2020 fhPtInPerpCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2021 outputContainer->Add(fhPtInPerpCone) ;
2023 fhEtaPhiTrack= new TH2F("hEtaPhiTrack",
2024 Form("#eta vs #phi of all Tracks"),
2025 netabins,-1,1,nphibins,0,TMath::TwoPi());
2026 fhEtaPhiTrack->SetXTitle("#eta");
2027 fhEtaPhiTrack->SetYTitle("#phi");
2028 outputContainer->Add(fhEtaPhiTrack) ;
2030 fhEtaPhiInConeTrack= new TH2F("hEtaPhiInConeTrack",
2031 Form("#eta vs #phi of Tracks in cone for R = %2.2f",r),
2032 netabins,-1,1,nphibins,0,TMath::TwoPi());
2033 fhEtaPhiInConeTrack->SetXTitle("#eta");
2034 fhEtaPhiInConeTrack->SetYTitle("#phi");
2035 outputContainer->Add(fhEtaPhiInConeTrack) ;
2037 fhConeSumPtVSUETracksEtaBand = new TH2F("hConeSumPtVSUETracksEtaBand",
2038 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in eta band for tracks (before normalization), R=%2.2f",r),
2039 nptsumbins,ptsummin,ptsummax,2*nptsumbins,ptsummin,2*ptsummax);
2040 fhConeSumPtVSUETracksEtaBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
2041 fhConeSumPtVSUETracksEtaBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
2042 outputContainer->Add(fhConeSumPtVSUETracksEtaBand);
2044 fhConeSumPtVSUETracksPhiBand = new TH2F("hConeSumPtVSUETracksPhiBand",
2045 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in phi band for tracks (before normalization), R=%2.2f",r),
2046 nptsumbins,ptsummin,ptsummax,8*nptsumbins,ptsummin,8*ptsummax);
2047 fhConeSumPtVSUETracksPhiBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
2048 fhConeSumPtVSUETracksPhiBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
2049 outputContainer->Add(fhConeSumPtVSUETracksPhiBand);
2052 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
2054 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
2055 Form("#Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2056 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2057 fhConeSumPtEtaUESub->SetYTitle("#Sigma #it{p}_{T}");
2058 fhConeSumPtEtaUESub->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2059 outputContainer->Add(fhConeSumPtEtaUESub) ;
2061 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
2062 Form("#Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2063 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2064 fhConeSumPtPhiUESub->SetYTitle("#Sigma #it{p}_{T}");
2065 fhConeSumPtPhiUESub->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2066 outputContainer->Add(fhConeSumPtPhiUESub) ;
2068 fhConeSumPtEtaUESubTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrigEtaPhi",
2069 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2070 netabins,etamin,etamax,nphibins,phimin,phimax);
2071 fhConeSumPtEtaUESubTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2072 fhConeSumPtEtaUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
2073 fhConeSumPtEtaUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2074 outputContainer->Add(fhConeSumPtEtaUESubTrigEtaPhi) ;
2076 fhConeSumPtPhiUESubTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrigEtaPhi",
2077 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2078 netabins,etamin,etamax,nphibins,phimin,phimax);
2079 fhConeSumPtPhiUESubTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2080 fhConeSumPtPhiUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
2081 fhConeSumPtPhiUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2082 outputContainer->Add(fhConeSumPtPhiUESubTrigEtaPhi) ;
2084 fhConeSumPtClustervsTrack = new TH2F("hConePtSumClustervsTrack",
2085 Form("Track vs Cluster #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
2086 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2087 fhConeSumPtClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2088 fhConeSumPtClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2089 outputContainer->Add(fhConeSumPtClustervsTrack) ;
2091 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2092 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2093 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2094 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2095 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2096 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2098 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2099 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2100 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2101 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2102 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2103 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2105 fhEtaBandClustervsTrack = new TH2F("hEtaBandClustervsTrack",
2106 "Track vs Cluster #Sigma #it{p}_{T} in Eta band in isolation cone for R = %2.2f",
2107 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2108 fhEtaBandClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2109 fhEtaBandClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2110 outputContainer->Add(fhEtaBandClustervsTrack) ;
2112 fhPhiBandClustervsTrack = new TH2F("hPhiBandClustervsTrack",
2113 "Track vs Cluster #Sigma #it{p}_{T} in Phi band in isolation cone for R = %2.2f",
2114 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2115 fhPhiBandClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2116 fhPhiBandClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2117 outputContainer->Add(fhPhiBandClustervsTrack) ;
2119 fhEtaBandNormClustervsTrack = new TH2F("hEtaBandNormClustervsTrack",
2120 "Track vs Cluster #Sigma #it{p}_{T} in Eta band in isolation cone for R = %2.2f",
2121 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2122 fhEtaBandNormClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2123 fhEtaBandNormClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2124 outputContainer->Add(fhEtaBandNormClustervsTrack) ;
2126 fhPhiBandNormClustervsTrack = new TH2F("hPhiBandNormClustervsTrack",
2127 "Track vs Cluster #Sigma #it{p}_{T} in Phi band in isolation cone for R = %2.2f",
2128 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2129 fhPhiBandNormClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2130 fhPhiBandNormClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2131 outputContainer->Add(fhPhiBandNormClustervsTrack) ;
2134 fhConeSumPtCellTrack = new TH2F("hConePtSumCellTrack",
2135 Form("Track and Cell #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
2136 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2137 fhConeSumPtCellTrack->SetYTitle("#Sigma #it{p}_{T}");
2138 fhConeSumPtCellTrack->SetXTitle("p_{T, trigger} (GeV/#it{c})");
2139 outputContainer->Add(fhConeSumPtCellTrack) ;
2141 fhConeSumPtCellTrackTrigEtaPhi = new TH2F("hConePtSumCellTrackTrigEtaPhi",
2142 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
2143 netabins,etamin,etamax,nphibins,phimin,phimax);
2144 fhConeSumPtCellTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2145 fhConeSumPtCellTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2146 fhConeSumPtCellTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2147 outputContainer->Add(fhConeSumPtCellTrackTrigEtaPhi) ;
2150 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2151 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2152 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2153 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2154 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2155 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2157 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2158 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2159 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2160 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2161 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2162 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2164 fhConeSumPtCellvsTrack = new TH2F("hConePtSumCellvsTrack",
2165 Form("Track vs cell #Sigma #it{p}_{T} in isolation cone for R = %2.2f",r),
2166 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2167 fhConeSumPtCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2168 fhConeSumPtCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2169 outputContainer->Add(fhConeSumPtCellvsTrack) ;
2171 fhConeSumPtEtaUESubCellvsTrack = new TH2F("hConePtSumEtaUESubCellvsTrack",
2172 Form("Track vs Cell #Sigma #it{p}_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2173 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2174 fhConeSumPtEtaUESubCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2175 fhConeSumPtEtaUESubCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2176 outputContainer->Add(fhConeSumPtEtaUESubCellvsTrack) ;
2178 fhConeSumPtPhiUESubCellvsTrack = new TH2F("hConePhiUESubPtSumCellvsTrack",
2179 Form("Track vs Cell #Sigma #it{p}_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2180 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2181 fhConeSumPtPhiUESubCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2182 fhConeSumPtPhiUESubCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2183 outputContainer->Add(fhConeSumPtPhiUESubCellvsTrack) ;
2185 fhEtaBandCellvsTrack = new TH2F("hEtaBandCellvsTrack",
2186 "Track vs Cell #Sigma #it{p}_{T} in Eta band in isolation cone for R = %2.2f",
2187 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2188 fhEtaBandCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2189 fhEtaBandCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2190 outputContainer->Add(fhEtaBandCellvsTrack) ;
2192 fhPhiBandCellvsTrack = new TH2F("hPhiBandCellvsTrack",
2193 "Track vs Cell #Sigma #it{p}_{T} in Phi band in isolation cone for R = %2.2f",
2194 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2195 fhPhiBandCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2196 fhPhiBandCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2197 outputContainer->Add(fhPhiBandCellvsTrack) ;
2199 fhEtaBandNormCellvsTrack = new TH2F("hEtaBandNormCellvsTrack",
2200 "Track vs Cell #Sigma #it{p}_{T} in Eta band in isolation cone for R = %2.2f",
2201 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2202 fhEtaBandNormCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2203 fhEtaBandNormCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2204 outputContainer->Add(fhEtaBandNormCellvsTrack) ;
2206 fhPhiBandNormCellvsTrack = new TH2F("hPhiBandNormCellvsTrack",
2207 "Track vs Cell #Sigma #it{p}_{T} in Phi band in isolation cone for R = %2.2f",
2208 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2209 fhPhiBandNormCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2210 fhPhiBandNormCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2211 outputContainer->Add(fhPhiBandNormCellvsTrack) ;
2213 fhConeSumPtEtaUESubTrackCell = new TH2F("hConeSumPtEtaUESubTrackCell",
2214 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2215 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2216 fhConeSumPtEtaUESubTrackCell->SetYTitle("#Sigma #it{p}_{T}");
2217 fhConeSumPtEtaUESubTrackCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2218 outputContainer->Add(fhConeSumPtEtaUESubTrackCell) ;
2220 fhConeSumPtPhiUESubTrackCell = new TH2F("hConeSumPtPhiUESubTrackCell",
2221 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2222 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2223 fhConeSumPtPhiUESubTrackCell->SetYTitle("#Sigma #it{p}_{T}");
2224 fhConeSumPtPhiUESubTrackCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2225 outputContainer->Add(fhConeSumPtPhiUESubTrackCell) ;
2227 fhConeSumPtEtaUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackCellTrigEtaPhi",
2228 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2229 netabins,etamin,etamax,nphibins,phimin,phimax);
2230 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2231 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2232 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2233 outputContainer->Add(fhConeSumPtEtaUESubTrackCellTrigEtaPhi) ;
2235 fhConeSumPtPhiUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackCellTrigEtaPhi",
2236 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2237 netabins,etamin,etamax,nphibins,phimin,phimax);
2238 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2239 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2240 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2241 outputContainer->Add(fhConeSumPtPhiUESubTrackCellTrigEtaPhi) ;
2247 fhELambda0SSBkg = new TH2F
2248 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2249 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
2250 fhELambda0SSBkg->SetXTitle("#it{E} (GeV)");
2251 outputContainer->Add(fhELambda0SSBkg) ;
2254 for(Int_t iso = 0; iso < 2; iso++)
2258 fhTrackMatchedDEta[iso] = new TH2F
2259 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
2260 Form("%s - d#eta of cluster-track vs cluster energy for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
2261 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2262 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
2263 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
2265 fhTrackMatchedDPhi[iso] = new TH2F
2266 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
2267 Form("%s - d#phi of cluster-track vs cluster energy for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
2268 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2269 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
2270 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
2272 fhTrackMatchedDEtaDPhi[iso] = new TH2F
2273 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
2274 Form("%s - d#eta vs d#phi of cluster-track for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
2275 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2276 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
2277 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
2279 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
2280 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
2281 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
2283 fhdEdx[iso] = new TH2F
2284 (Form("hdEdx%s",hName[iso].Data()),
2285 Form("%s - Matched track <dE/dx> vs cluster E for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
2286 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
2287 fhdEdx[iso]->SetXTitle("#it{E} (GeV)");
2288 fhdEdx[iso]->SetYTitle("<dE/dx>");
2289 outputContainer->Add(fhdEdx[iso]);
2291 fhEOverP[iso] = new TH2F
2292 (Form("hEOverP%s",hName[iso].Data()),
2293 Form("%s - Matched track E/p vs cluster E for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
2294 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2295 fhEOverP[iso]->SetXTitle("#it{E} (GeV)");
2296 fhEOverP[iso]->SetYTitle("E/p");
2297 outputContainer->Add(fhEOverP[iso]);
2301 fhTrackMatchedMCParticle[iso] = new TH2F
2302 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
2303 Form("%s - Origin of particle vs energy vs cluster E for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
2304 nptbins,ptmin,ptmax,8,0,8);
2305 fhTrackMatchedMCParticle[iso]->SetXTitle("#it{E} (GeV)");
2306 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
2308 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
2309 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
2310 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
2311 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
2312 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
2313 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
2314 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
2315 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
2317 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
2323 fhELambda0[iso] = new TH2F
2324 (Form("hELambda0%s",hName[iso].Data()),
2325 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2326 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
2327 fhELambda0[iso]->SetXTitle("#it{E} (GeV)");
2328 outputContainer->Add(fhELambda0[iso]) ;
2330 fhPtLambda0[iso] = new TH2F
2331 (Form("hPtLambda0%s",hName[iso].Data()),
2332 Form("%s cluster : #it{p}_{T} vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2333 fhPtLambda0[iso]->SetYTitle("#lambda_{0}^{2}");
2334 fhPtLambda0[iso]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2335 outputContainer->Add(fhPtLambda0[iso]) ;
2339 fhPtLambda0MCPhotonPrompt[iso] = new TH2F
2340 (Form("hPtLambda0%s_MCPhotonPrompt",hName[iso].Data()),
2341 Form("%s cluster : Pt vs #lambda_{0}: Origin is prompt photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2342 fhPtLambda0MCPhotonPrompt[iso]->SetYTitle("#lambda_{0}^{2}");
2343 fhPtLambda0MCPhotonPrompt[iso]->SetXTitle("Pt (GeV/#it{c})");
2344 outputContainer->Add(fhPtLambda0MCPhotonPrompt[iso]) ;
2346 fhPtLambda0MCPhotonFrag[iso] = new TH2F
2347 (Form("hPtLambda0%s_MCPhotonFrag",hName[iso].Data()),
2348 Form("%s cluster : Pt vs #lambda_{0}: Origin is fragmentation photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2349 fhPtLambda0MCPhotonFrag[iso]->SetYTitle("#lambda_{0}^{2}");
2350 fhPtLambda0MCPhotonFrag[iso]->SetXTitle("Pt (GeV/#it{c})");
2351 outputContainer->Add(fhPtLambda0MCPhotonFrag[iso]) ;
2354 fhELambda0MCPhoton[iso] = new TH2F
2355 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
2356 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2357 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
2358 fhELambda0MCPhoton[iso]->SetXTitle("#it{E} (GeV)");
2359 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
2361 fhELambda0MCPi0[iso] = new TH2F
2362 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
2363 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2364 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
2365 fhELambda0MCPi0[iso]->SetXTitle("#it{E} (GeV)");
2366 outputContainer->Add(fhELambda0MCPi0[iso]) ;
2368 fhELambda0MCPi0Decay[iso] = new TH2F
2369 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
2370 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2371 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
2372 fhELambda0MCPi0Decay[iso]->SetXTitle("#it{E} (GeV)");
2373 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
2375 fhELambda0MCEtaDecay[iso] = new TH2F
2376 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
2377 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2378 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2379 fhELambda0MCEtaDecay[iso]->SetXTitle("#it{E} (GeV)");
2380 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
2382 fhELambda0MCOtherDecay[iso] = new TH2F
2383 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
2384 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2385 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2386 fhELambda0MCOtherDecay[iso]->SetXTitle("#it{E} (GeV)");
2387 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
2389 fhELambda0MCHadron[iso] = new TH2F
2390 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
2391 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2392 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
2393 fhELambda0MCHadron[iso]->SetXTitle("#it{E} (GeV)");
2394 outputContainer->Add(fhELambda0MCHadron[iso]) ;
2397 fhELambda1[iso] = new TH2F
2398 (Form("hELambda1%s",hName[iso].Data()),
2399 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2400 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
2401 fhELambda1[iso]->SetXTitle("#it{E} (GeV)");
2402 outputContainer->Add(fhELambda1[iso]) ;
2404 if(fCalorimeter=="EMCAL")
2407 fhPtLambda0TRD[iso] = new TH2F
2408 (Form("hPtLambda0TRD%s",hName[iso].Data()),
2409 Form("%s cluster: #it{p}_{T} vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2410 fhPtLambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
2411 fhPtLambda0TRD[iso]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2412 outputContainer->Add(fhPtLambda0TRD[iso]) ;
2414 fhELambda0TRD[iso] = new TH2F
2415 (Form("hELambda0TRD%s",hName[iso].Data()),
2416 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2417 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
2418 fhELambda0TRD[iso]->SetXTitle("#it{E} (GeV)");
2419 outputContainer->Add(fhELambda0TRD[iso]) ;
2421 fhELambda1TRD[iso] = new TH2F
2422 (Form("hELambda1TRD%s",hName[iso].Data()),
2423 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2424 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
2425 fhELambda1TRD[iso]->SetXTitle("#it{E} (GeV)");
2426 outputContainer->Add(fhELambda1TRD[iso]) ;
2429 fhNLocMax[iso] = new TH2F
2430 (Form("hNLocMax%s",hName[iso].Data()),
2431 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
2432 nptbins,ptmin,ptmax,10,0,10);
2433 fhNLocMax[iso]->SetYTitle("N maxima");
2434 fhNLocMax[iso]->SetXTitle("#it{E} (GeV)");
2435 outputContainer->Add(fhNLocMax[iso]) ;
2437 fhELambda0LocMax1[iso] = new TH2F
2438 (Form("hELambda0LocMax1%s",hName[iso].Data()),
2439 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2440 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
2441 fhELambda0LocMax1[iso]->SetXTitle("#it{E} (GeV)");
2442 outputContainer->Add(fhELambda0LocMax1[iso]) ;
2444 fhELambda1LocMax1[iso] = new TH2F
2445 (Form("hELambda1LocMax1%s",hName[iso].Data()),
2446 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2447 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
2448 fhELambda1LocMax1[iso]->SetXTitle("#it{E} (GeV)");
2449 outputContainer->Add(fhELambda1LocMax1[iso]) ;
2451 fhELambda0LocMax2[iso] = new TH2F
2452 (Form("hELambda0LocMax2%s",hName[iso].Data()),
2453 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2454 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
2455 fhELambda0LocMax2[iso]->SetXTitle("#it{E} (GeV)");
2456 outputContainer->Add(fhELambda0LocMax2[iso]) ;
2458 fhELambda1LocMax2[iso] = new TH2F
2459 (Form("hELambda1LocMax2%s",hName[iso].Data()),
2460 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2461 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
2462 fhELambda1LocMax2[iso]->SetXTitle("#it{E} (GeV)");
2463 outputContainer->Add(fhELambda1LocMax2[iso]) ;
2465 fhELambda0LocMaxN[iso] = new TH2F
2466 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
2467 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2468 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
2469 fhELambda0LocMaxN[iso]->SetXTitle("#it{E} (GeV)");
2470 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
2472 fhELambda1LocMaxN[iso] = new TH2F
2473 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
2474 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2475 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
2476 fhELambda1LocMaxN[iso]->SetXTitle("#it{E} (GeV)");
2477 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
2480 } // control histograms for isolated and non isolated objects
2483 if(fFillPileUpHistograms)
2485 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
2486 Form("#it{p}_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0",r),
2487 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2488 fhPtTrackInConeOtherBC->SetYTitle("p_{T in cone} (GeV/#it{c})");
2489 fhPtTrackInConeOtherBC->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2490 outputContainer->Add(fhPtTrackInConeOtherBC) ;
2492 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
2493 Form("#it{p}_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0, pile-up from SPD",r),
2494 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2495 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("p_{T in cone} (GeV/#it{c})");
2496 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2497 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
2499 fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0",
2500 Form("#it{p}_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2501 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2502 fhPtTrackInConeBC0->SetYTitle("p_{T in cone} (GeV/#it{c})");
2503 fhPtTrackInConeBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2504 outputContainer->Add(fhPtTrackInConeBC0) ;
2506 fhPtTrackInConeVtxBC0 = new TH2F("hPtTrackInConeVtxBC0",
2507 Form("#it{p}_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2508 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2509 fhPtTrackInConeVtxBC0->SetYTitle("p_{T in cone} (GeV/#it{c})");
2510 fhPtTrackInConeVtxBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2511 outputContainer->Add(fhPtTrackInConeVtxBC0) ;
2514 fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD",
2515 Form("#it{p}_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0, pile-up from SPD",r),
2516 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2517 fhPtTrackInConeBC0PileUpSPD->SetYTitle("p_{T in cone} (GeV/#it{c})");
2518 fhPtTrackInConeBC0PileUpSPD->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2519 outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ;
2522 for (Int_t i = 0; i < 7 ; i++)
2524 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
2525 Form("#it{p}_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
2526 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2527 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/#it{c})");
2528 fhPtInConePileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2529 outputContainer->Add(fhPtInConePileUp[i]) ;
2535 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
2536 fhPtIsoPrompt->SetYTitle("N");
2537 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/#it{c})");
2538 outputContainer->Add(fhPtIsoPrompt) ;
2540 fhPhiIsoPrompt = new TH2F
2541 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2542 fhPhiIsoPrompt->SetYTitle("#phi");
2543 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2544 outputContainer->Add(fhPhiIsoPrompt) ;
2546 fhEtaIsoPrompt = new TH2F
2547 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2548 fhEtaIsoPrompt->SetYTitle("#eta");
2549 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2550 outputContainer->Add(fhEtaIsoPrompt) ;
2552 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
2553 fhPtIsoFragmentation->SetYTitle("N");
2554 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/#it{c})");
2555 outputContainer->Add(fhPtIsoFragmentation) ;
2557 fhPhiIsoFragmentation = new TH2F
2558 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2559 fhPhiIsoFragmentation->SetYTitle("#phi");
2560 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2561 outputContainer->Add(fhPhiIsoFragmentation) ;
2563 fhEtaIsoFragmentation = new TH2F
2564 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2565 fhEtaIsoFragmentation->SetYTitle("#eta");
2566 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2567 outputContainer->Add(fhEtaIsoFragmentation) ;
2569 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2570 fhPtIsoPi0->SetYTitle("N");
2571 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/#it{c})");
2572 outputContainer->Add(fhPtIsoPi0) ;
2574 fhPhiIsoPi0 = new TH2F
2575 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2576 fhPhiIsoPi0->SetYTitle("#phi");
2577 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2578 outputContainer->Add(fhPhiIsoPi0) ;
2580 fhEtaIsoPi0 = new TH2F
2581 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2582 fhEtaIsoPi0->SetYTitle("#eta");
2583 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2584 outputContainer->Add(fhEtaIsoPi0) ;
2586 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2587 fhPtIsoPi0Decay->SetYTitle("N");
2588 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/#it{c})");
2589 outputContainer->Add(fhPtIsoPi0Decay) ;
2591 fhPhiIsoPi0Decay = new TH2F
2592 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2593 fhPhiIsoPi0Decay->SetYTitle("#phi");
2594 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2595 outputContainer->Add(fhPhiIsoPi0Decay) ;
2597 fhEtaIsoPi0Decay = new TH2F
2598 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2599 fhEtaIsoPi0Decay->SetYTitle("#eta");
2600 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2601 outputContainer->Add(fhEtaIsoPi0Decay) ;
2603 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
2604 fhPtIsoEtaDecay->SetYTitle("N");
2605 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/#it{c})");
2606 outputContainer->Add(fhPtIsoEtaDecay) ;
2608 fhPhiIsoEtaDecay = new TH2F
2609 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2610 fhPhiIsoEtaDecay->SetYTitle("#phi");
2611 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2612 outputContainer->Add(fhPhiIsoEtaDecay) ;
2614 fhEtaIsoEtaDecay = new TH2F
2615 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2616 fhEtaIsoEtaDecay->SetYTitle("#eta");
2617 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2618 outputContainer->Add(fhEtaIsoEtaDecay) ;
2620 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
2621 fhPtIsoOtherDecay->SetYTitle("N");
2622 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/#it{c})");
2623 outputContainer->Add(fhPtIsoOtherDecay) ;
2625 fhPhiIsoOtherDecay = new TH2F
2626 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2627 fhPhiIsoOtherDecay->SetYTitle("#phi");
2628 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2629 outputContainer->Add(fhPhiIsoOtherDecay) ;
2631 fhEtaIsoOtherDecay = new TH2F
2632 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2633 fhEtaIsoOtherDecay->SetYTitle("#eta");
2634 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2635 outputContainer->Add(fhEtaIsoOtherDecay) ;
2637 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
2638 // fhPtIsoConversion->SetYTitle("N");
2639 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/#it{c})");
2640 // outputContainer->Add(fhPtIsoConversion) ;
2642 // fhPhiIsoConversion = new TH2F
2643 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2644 // fhPhiIsoConversion->SetYTitle("#phi");
2645 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2646 // outputContainer->Add(fhPhiIsoConversion) ;
2648 // fhEtaIsoConversion = new TH2F
2649 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2650 // fhEtaIsoConversion->SetYTitle("#eta");
2651 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/#it{c})");
2652 // outputContainer->Add(fhEtaIsoConversion) ;
2654 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
2655 fhPtIsoHadron->SetYTitle("N");
2656 fhPtIsoHadron->SetXTitle("#it{p}_{T}(GeV/#it{c})");
2657 outputContainer->Add(fhPtIsoHadron) ;
2660 fhPhiIsoHadron = new TH2F
2661 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2662 fhPhiIsoHadron->SetYTitle("#phi");
2663 fhPhiIsoHadron->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2664 outputContainer->Add(fhPhiIsoHadron) ;
2666 fhEtaIsoHadron = new TH2F
2667 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2668 fhEtaIsoHadron->SetYTitle("#eta");
2669 fhEtaIsoHadron->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2670 outputContainer->Add(fhEtaIsoHadron) ;
2673 TString pptype[] = { "#gamma", "#gamma_{#pi decay}","#gamma_{other decay}","hadron?",
2674 "#gamma_{prompt}","#gamma_{fragmentation}","#gamma_{ISR}"} ;
2676 TString ppname[] = { "Photon","PhotonPi0Decay","PhotonOtherDecay","Hadron",
2677 "PhotonPrompt","PhotonFragmentation","PhotonISR"} ;
2679 for(Int_t i = 0; i < 7; i++)
2681 fhEPrimMC[i] = new TH1F(Form("hEPrim_MC%s",ppname[i].Data()),
2682 Form("primary photon %s : #it{E} ",pptype[i].Data()),
2683 nptbins,ptmin,ptmax);
2684 fhEPrimMC[i]->SetXTitle("#it{E} (GeV)");
2685 outputContainer->Add(fhEPrimMC[i]) ;
2687 fhPtPrimMCiso[i] = new TH1F(Form("hPtPrim_MCiso%s",ppname[i].Data()),
2688 Form("primary isolated photon %s : #it{p}_{T} ",pptype[i].Data()),
2689 nptbins,ptmin,ptmax);
2690 fhPtPrimMCiso[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2691 outputContainer->Add(fhPtPrimMCiso[i]) ;
2693 fhEtaPrimMC[i] = new TH2F(Form("hEtaPrim_MC%s",ppname[i].Data()),
2694 Form("primary photon %s : #eta vs #it{p}_{T}",pptype[i].Data()),
2695 nptbins,ptmin,ptmax,200,-2,2);
2696 fhEtaPrimMC[i]->SetYTitle("#eta");
2697 fhEtaPrimMC[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2698 outputContainer->Add(fhEtaPrimMC[i]) ;
2705 // Not Isolated histograms, reference histograms
2707 fhENoIso = new TH1F("hENoIso",
2708 Form("Number of not isolated leading particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2709 nptbins,ptmin,ptmax);
2710 fhENoIso->SetYTitle("N");
2711 fhENoIso->SetXTitle("E (GeV/#it{c})");
2712 outputContainer->Add(fhENoIso) ;
2714 fhPtNoIso = new TH1F("hPtNoIso",
2715 Form("Number of not isolated leading particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2716 nptbins,ptmin,ptmax);
2717 fhPtNoIso->SetYTitle("N");
2718 fhPtNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2719 outputContainer->Add(fhPtNoIso) ;
2721 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
2722 Form("Number of not isolated particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f vs NLM, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2723 nptbins,ptmin,ptmax,10,0,10);
2724 fhPtNLocMaxNoIso->SetYTitle("NLM");
2725 fhPtNLocMaxNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2726 outputContainer->Add(fhPtNLocMaxNoIso) ;
2728 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
2729 Form("Number of not isolated leading particles #eta vs #phi for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2730 netabins,etamin,etamax,nphibins,phimin,phimax);
2731 fhEtaPhiNoIso->SetXTitle("#eta");
2732 fhEtaPhiNoIso->SetYTitle("#phi");
2733 outputContainer->Add(fhEtaPhiNoIso) ;
2735 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
2736 Form("Number of not isolated leading pi0 decay particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2737 nptbins,ptmin,ptmax);
2738 fhPtDecayNoIso->SetYTitle("N");
2739 fhPtDecayNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2740 outputContainer->Add(fhPtDecayNoIso) ;
2742 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
2743 Form("Number of not isolated leading Pi0 decay particles #eta vs #phi for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2744 netabins,etamin,etamax,nphibins,phimin,phimax);
2745 fhEtaPhiDecayNoIso->SetXTitle("#eta");
2746 fhEtaPhiDecayNoIso->SetYTitle("#phi");
2747 outputContainer->Add(fhEtaPhiDecayNoIso) ;
2752 fhPtNoIsoPi0 = new TH1F
2753 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2754 fhPtNoIsoPi0->SetYTitle("N");
2755 fhPtNoIsoPi0->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2756 outputContainer->Add(fhPtNoIsoPi0) ;
2758 fhPtNoIsoPi0Decay = new TH1F
2759 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2760 fhPtNoIsoPi0Decay->SetYTitle("N");
2761 fhPtNoIsoPi0Decay->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2762 outputContainer->Add(fhPtNoIsoPi0Decay) ;
2764 fhPtNoIsoEtaDecay = new TH1F
2765 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
2766 fhPtNoIsoEtaDecay->SetYTitle("N");
2767 fhPtNoIsoEtaDecay->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2768 outputContainer->Add(fhPtNoIsoEtaDecay) ;
2770 fhPtNoIsoOtherDecay = new TH1F
2771 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
2772 fhPtNoIsoOtherDecay->SetYTitle("N");
2773 fhPtNoIsoOtherDecay->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2774 outputContainer->Add(fhPtNoIsoOtherDecay) ;
2776 fhPtNoIsoPrompt = new TH1F
2777 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
2778 fhPtNoIsoPrompt->SetYTitle("N");
2779 fhPtNoIsoPrompt->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2780 outputContainer->Add(fhPtNoIsoPrompt) ;
2782 fhPtIsoMCPhoton = new TH1F
2783 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
2784 fhPtIsoMCPhoton->SetYTitle("N");
2785 fhPtIsoMCPhoton->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2786 outputContainer->Add(fhPtIsoMCPhoton) ;
2788 fhPtNoIsoMCPhoton = new TH1F
2789 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
2790 fhPtNoIsoMCPhoton->SetYTitle("N");
2791 fhPtNoIsoMCPhoton->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2792 outputContainer->Add(fhPtNoIsoMCPhoton) ;
2794 // fhPtNoIsoConversion = new TH1F
2795 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
2796 // fhPtNoIsoConversion->SetYTitle("N");
2797 // fhPtNoIsoConversion->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2798 // outputContainer->Add(fhPtNoIsoConversion) ;
2800 fhPtNoIsoFragmentation = new TH1F
2801 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
2802 fhPtNoIsoFragmentation->SetYTitle("N");
2803 fhPtNoIsoFragmentation->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2804 outputContainer->Add(fhPtNoIsoFragmentation) ;
2806 fhPtNoIsoHadron = new TH1F
2807 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
2808 fhPtNoIsoHadron->SetYTitle("N");
2809 fhPtNoIsoHadron->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2810 outputContainer->Add(fhPtNoIsoHadron) ;
2817 const Int_t buffersize = 255;
2818 char name[buffersize];
2819 char title[buffersize];
2820 for(Int_t icone = 0; icone<fNCones; icone++)
2822 // sum pt in cone vs. pt leading
2823 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
2824 snprintf(title, buffersize,"#Sigma #it{p}_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2825 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2826 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}#it{p}_{T} (GeV/#it{c})");//#Sigma #it{p}_{T}
2827 fhSumPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
2828 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
2830 // pt in cone vs. pt leading
2831 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
2832 snprintf(title, buffersize,"#it{p}_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2833 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2834 fhPtLeadingPt[icone] ->SetYTitle("#it{p}_{T}^{cone} (GeV/#it{c})");
2835 fhPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
2836 outputContainer->Add(fhPtLeadingPt[icone]) ;
2838 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
2839 snprintf(name, buffersize,"hPerpSumPtLeadingPt_Cone_%d",icone);
2840 snprintf(title, buffersize,"#Sigma #it{p}_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2841 fhPerpSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2842 fhPerpSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}#it{p}_{T} (GeV/#it{c})");//#Sigma #it{p}_{T}
2843 fhPerpSumPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
2844 outputContainer->Add(fhPerpSumPtLeadingPt[icone]) ;
2846 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
2847 snprintf(name, buffersize,"hPerpPtLeadingPt_Cone_%d",icone);
2848 snprintf(title, buffersize,"#it{p}_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2849 fhPerpPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2850 fhPerpPtLeadingPt[icone] ->SetYTitle("#it{p}_{T}^{cone} (GeV/#it{c})");
2851 fhPerpPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
2852 outputContainer->Add(fhPerpPtLeadingPt[icone]) ;
2857 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
2858 snprintf(title, buffersize,"Candidate Prompt cone sum #it{p}_{T} for R = %2.2f vs candidate #it{p}_{T}",fConeSizes[icone]);
2859 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2860 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2861 fhPtSumIsolatedPrompt[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2862 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
2864 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
2865 snprintf(title, buffersize,"Candidate Fragmentation cone sum #it{p}_{T} for R = %2.2fvs candidate #it{p}_{T}",fConeSizes[icone]);
2866 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2867 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2868 fhPtSumIsolatedFragmentation[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2869 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
2871 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
2872 snprintf(title, buffersize,"Candidate Pi0 cone sum #it{p}_{T} for R = %2.2f vs candidate #it{p}_{T}",fConeSizes[icone]);
2873 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2874 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2875 fhPtSumIsolatedPi0[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2876 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
2878 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
2879 snprintf(title, buffersize,"Candidate Pi0Decay cone sum #it{p}_{T} for R = %2.2f vs candidate #it{p}_{T}",fConeSizes[icone]);
2880 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2881 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2882 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2883 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
2885 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
2886 snprintf(title, buffersize,"Candidate EtaDecay cone sum #it{p}_{T} for R = %2.2f vs candidate #it{p}_{T}",fConeSizes[icone]);
2887 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2888 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2889 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2890 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
2892 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
2893 snprintf(title, buffersize,"Candidate OtherDecay cone sum #it{p}_{T} for R = %2.2f vs candidate #it{p}_{T}",fConeSizes[icone]);
2894 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2895 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2896 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2897 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
2899 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
2900 // snprintf(title, buffersize,"Candidate Conversion cone sum #it{p}_{T} for R = %2.2f vs candidate #it{p}_{T}",fConeSizes[icone]);
2901 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2902 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2903 // fhPtSumIsolatedConversion[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2904 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
2906 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
2907 snprintf(title, buffersize,"Candidate Hadron cone sum #it{p}_{T} for R = %2.2f vs candidate #it{p}_{T}",fConeSizes[icone]);
2908 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2909 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2910 fhPtSumIsolatedHadron[icone]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2911 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
2915 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
2918 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
2919 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for R = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
2920 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2921 fhPtThresIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2922 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
2924 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
2925 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2926 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2927 fhPtFracIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2928 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
2931 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
2932 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2933 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2934 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2935 fhPtSumIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2936 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
2938 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
2939 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for density in R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2940 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2941 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2942 fhPtSumDensityIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2943 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
2945 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
2946 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for PtFracPtSum in R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2947 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2948 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2949 fhPtFracPtSumIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2950 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
2952 // pt decays isolated
2953 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2954 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for R = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
2955 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2956 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2957 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
2959 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2960 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2961 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2962 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2963 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
2965 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2966 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2967 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2968 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2969 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2970 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
2972 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2973 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for density in R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2974 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2975 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2976 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2977 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
2979 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2980 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for PtFracPtSum in R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2981 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2982 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2983 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2984 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
2988 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
2989 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
2990 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2991 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
2992 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
2993 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
2995 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
2996 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2997 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2998 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
2999 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
3000 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
3002 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
3003 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
3004 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3005 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
3006 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
3007 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
3009 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
3010 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for density R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
3011 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3012 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
3013 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
3014 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
3016 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
3017 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for FracPtSum R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
3018 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3019 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
3020 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
3021 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
3024 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
3025 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for R = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
3026 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3027 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
3028 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
3029 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
3031 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
3032 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
3033 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3034 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
3035 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
3036 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
3039 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
3040 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
3041 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3042 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
3043 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
3044 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
3046 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
3047 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for density R = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
3048 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3049 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
3050 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
3051 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
3053 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
3054 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for FracPtSum R = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
3055 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3056 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
3057 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
3058 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
3063 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
3064 snprintf(title, buffersize,"Isolated candidate Prompt #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3065 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3066 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3067 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
3069 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
3070 snprintf(title, buffersize,"Isolated candidate Prompt #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3071 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3072 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3073 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
3075 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
3076 snprintf(title, buffersize,"Isolated candidate Fragmentation #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3077 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3078 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3079 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
3081 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
3082 snprintf(title, buffersize,"Isolated candidate Fragmentation #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3083 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3084 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3085 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
3087 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
3088 snprintf(title, buffersize,"Isolated candidate Pi0 #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3089 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3090 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3091 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
3093 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
3094 snprintf(title, buffersize,"Isolated candidate Pi0 #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3095 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3096 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3097 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
3099 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
3100 snprintf(title, buffersize,"Isolated candidate Pi0Decay #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3101 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3102 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3103 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
3105 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
3106 snprintf(title, buffersize,"Isolated candidate Pi0Decay #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3107 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3108 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3109 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
3111 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
3112 snprintf(title, buffersize,"Isolated candidate EtaDecay #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3113 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3114 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3115 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
3117 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
3118 snprintf(title, buffersize,"Isolated candidate EtaDecay #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3119 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3120 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3121 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
3124 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
3125 snprintf(title, buffersize,"Isolated candidate OtherDecay #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3126 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3127 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3128 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
3130 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
3131 snprintf(title, buffersize,"Isolated candidate OtherDecay #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3132 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3133 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3134 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
3136 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
3137 // snprintf(title, buffersize,"Isolated candidate Conversion #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3138 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3139 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3140 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
3142 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
3143 // snprintf(title, buffersize,"Isolated candidate Conversion #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3144 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3145 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3146 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
3148 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
3149 snprintf(title, buffersize,"Isolated candidate Hadron #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3150 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3151 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3152 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
3154 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
3155 snprintf(title, buffersize,"Isolated candidate Hadron #it{p}_{T} distribution for cone size %d and #it{p}_{T}^{th} %d",icone,ipt);
3156 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3157 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3158 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
3165 if(fFillPileUpHistograms)
3167 for (Int_t i = 0; i < 7 ; i++)
3169 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
3170 Form("Number of isolated particles vs E for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f, pile-up event by %s",r,ptthre,ptfrac,pileUpName[i].Data()),
3171 nptbins,ptmin,ptmax);
3172 fhEIsoPileUp[i]->SetYTitle("dN / dE");
3173 fhEIsoPileUp[i]->SetXTitle("#it{E} (GeV)");
3174 outputContainer->Add(fhEIsoPileUp[i]) ;
3176 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
3177 Form("Number of isolated particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr}= %2.2f, pile-up event by %s ",r,ptthre,ptfrac,pileUpName[i].Data()),
3178 nptbins,ptmin,ptmax);
3179 fhPtIsoPileUp[i]->SetYTitle("dN / #it{p}_{T}");
3180 fhPtIsoPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3181 outputContainer->Add(fhPtIsoPileUp[i]) ;
3183 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
3184 Form("Number of not isolated particles vs E for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr} = %2.2f, pile-up event by %s",r,ptthre,ptfrac,pileUpName[i].Data()),
3185 nptbins,ptmin,ptmax);
3186 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
3187 fhENoIsoPileUp[i]->SetXTitle("#it{E} (GeV)");
3188 outputContainer->Add(fhENoIsoPileUp[i]) ;
3190 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
3191 Form("Number of not isolated particles vs #it{p}_{T} for R = %2.2f, #it{p}_{T}^{th} = %2.2f, #it{p}_{T}^{fr}= %2.2f, pile-up event by %s ",r,ptthre,ptfrac,pileUpName[i].Data()),
3192 nptbins,ptmin,ptmax);
3193 fhPtNoIsoPileUp[i]->SetYTitle("dN / #it{p}_{T}");
3194 fhPtNoIsoPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
3195 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
3198 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3199 fhTimeENoCut->SetXTitle("#it{E} (GeV)");
3200 fhTimeENoCut->SetYTitle("time (ns)");
3201 outputContainer->Add(fhTimeENoCut);
3203 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3204 fhTimeESPD->SetXTitle("#it{E} (GeV)");
3205 fhTimeESPD->SetYTitle("time (ns)");
3206 outputContainer->Add(fhTimeESPD);
3208 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3209 fhTimeESPDMulti->SetXTitle("#it{E} (GeV)");
3210 fhTimeESPDMulti->SetYTitle("time (ns)");
3211 outputContainer->Add(fhTimeESPDMulti);
3213 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3214 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
3215 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
3216 outputContainer->Add(fhTimeNPileUpVertSPD);
3218 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
3219 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
3220 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
3221 outputContainer->Add(fhTimeNPileUpVertTrack);
3223 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3224 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
3225 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
3226 outputContainer->Add(fhTimeNPileUpVertContributors);
3228 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);
3229 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
3230 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
3231 outputContainer->Add(fhTimePileUpMainVertexZDistance);
3233 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
3234 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
3235 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
3236 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
3239 return outputContainer ;
3243 //__________________________________
3244 void AliAnaParticleIsolation::Init()
3246 // Do some checks and init stuff
3248 // In case of several cone and thresholds analysis, open the cuts for the filling of the
3249 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
3250 // The different cones, thresholds are tested for this list of tracks, clusters.
3253 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
3254 GetIsolationCut()->SetPtThreshold(100);
3255 GetIsolationCut()->SetPtFraction(100);
3256 GetIsolationCut()->SetConeSize(1);
3259 if(!GetReader()->IsCTSSwitchedOn() && GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
3260 AliFatal("STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!\n");
3265 //____________________________________________
3266 void AliAnaParticleIsolation::InitParameters()
3269 //Initialize the parameters of the analysis.
3270 SetInputAODName("PWG4Particle");
3271 SetAODObjArrayName("IsolationCone");
3272 AddToHistogramsName("AnaIsolation_");
3274 fCalorimeter = "PHOS" ;
3275 fReMakeIC = kFALSE ;
3276 fMakeSeveralIC = kFALSE ;
3278 //----------- Several IC-----------------
3281 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
3282 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
3283 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
3284 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
3286 //------------- Histograms settings -------
3287 fHistoNPtSumBins = 100 ;
3288 fHistoPtSumMax = 50 ;
3289 fHistoPtSumMin = 0. ;
3291 fHistoNPtInConeBins = 100 ;
3292 fHistoPtInConeMax = 50 ;
3293 fHistoPtInConeMin = 0. ;
3297 //__________________________________________________
3298 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
3300 //Do analysis and fill aods
3301 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
3303 if(!GetInputAODBranch())
3304 AliFatal(Form("No input particles in AOD with name branch < %s >, STOP",GetInputAODName().Data()));
3307 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
3308 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()));
3310 Int_t n = 0, nfrac = 0;
3311 Bool_t isolated = kFALSE ;
3312 Float_t coneptsum = 0 ;
3313 TObjArray * pl = 0x0; ;
3315 //Select the calorimeter for candidate isolation with neutral particles
3316 if (fCalorimeter == "PHOS" )
3317 pl = GetPHOSClusters();
3318 else if (fCalorimeter == "EMCAL")
3319 pl = GetEMCALClusters();
3321 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
3322 Double_t ptLeading = 0. ;
3323 Int_t idLeading = -1 ;
3324 TLorentzVector mom ;
3325 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3326 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
3328 for(Int_t iaod = 0; iaod < naod; iaod++)
3330 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3332 //If too small or too large pt, skip
3333 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
3335 //check if it is low pt trigger particle
3336 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
3337 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
3340 continue ; //trigger should not come from underlying event
3343 //vertex cut in case of mixing
3344 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
3345 if(check == 0) continue;
3346 if(check == -1) return;
3348 //find the leading particles with highest momentum
3349 if ( aodinput->Pt() > ptLeading )
3351 ptLeading = aodinput->Pt() ;
3355 aodinput->SetLeadingParticle(kFALSE);
3357 }//finish searching for leading trigger particle
3359 // Check isolation of leading particle
3360 if(idLeading < 0) return;
3362 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
3363 aodinput->SetLeadingParticle(kTRUE);
3365 // Check isolation only of clusters in fiducial region
3366 if(IsFiducialCutOn())
3368 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
3372 //After cuts, study isolation
3373 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
3374 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
3375 GetReader(), GetCaloPID(),
3376 kTRUE, aodinput, GetAODObjArrayName(),
3377 n,nfrac,coneptsum, isolated);
3379 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
3383 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
3384 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
3389 //_________________________________________________________
3390 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
3392 //Do analysis and fill histograms
3394 //In case of simulated data, fill acceptance histograms
3395 if(IsDataMC()) FillAcceptanceHistograms();
3398 //Loop on stored AOD
3399 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3400 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
3402 for(Int_t iaod = 0; iaod < naod ; iaod++)
3404 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3406 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
3408 // Check isolation only of clusters in fiducial region
3409 if(IsFiducialCutOn())
3411 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
3412 if(! in ) continue ;
3415 Float_t pt = aod->Pt();
3416 //If too small or too large pt, skip
3417 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
3419 Bool_t isolated = aod->IsIsolated();
3420 Bool_t decay = aod->IsTagged();
3421 Float_t energy = aod->E();
3422 Float_t phi = aod->Phi();
3423 Float_t eta = aod->Eta();
3425 // --- In case of redoing isolation from delta AOD ----
3429 //Analysis of multiple IC at same time
3430 MakeSeveralICAnalysis(aod);
3435 //In case a more strict IC is needed in the produced AOD
3437 Int_t n = 0, nfrac = 0;
3438 Float_t coneptsum = 0 ;
3440 //Recover reference arrays with clusters and tracks
3441 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
3442 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
3444 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3445 GetReader(), GetCaloPID(),
3447 n,nfrac,coneptsum, isolated);
3449 fhConeSumPt ->Fill(pt, coneptsum);
3450 fhConeSumPtTrigEtaPhi->Fill(eta,phi,coneptsum);
3452 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
3456 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
3458 FillTrackMatchingShowerShapeControlHistograms(aod,GetCaloPID());
3460 //Fill pt/sum pT distribution of particles in cone or in UE band
3461 Float_t coneptsumCluster = 0;
3462 Float_t coneptsumTrack = 0;
3463 Float_t coneptsumCell = 0;
3464 Float_t etaBandptsumClusterNorm = 0;
3465 Float_t etaBandptsumTrackNorm = 0;
3467 CalculateTrackSignalInCone (aod,coneptsumTrack );
3468 CalculateCaloSignalInCone (aod,coneptsumCluster);
3469 CalculateCaloCellSignalInCone(aod,coneptsumCell );
3471 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
3473 fhConeSumPtClustervsTrack ->Fill(coneptsumCluster,coneptsumTrack);
3474 fhConeSumPtCellvsTrack ->Fill(coneptsumCell, coneptsumTrack);
3475 fhConeSumPtCellTrack ->Fill(pt, coneptsumTrack+coneptsumCell);
3476 fhConeSumPtCellTrackTrigEtaPhi->Fill(eta,phi,coneptsumTrack+coneptsumCell);
3479 fhConeSumPt ->Fill(pt, coneptsumTrack+coneptsumCluster);
3480 fhConeSumPtTrigEtaPhi ->Fill(eta,phi,coneptsumTrack+coneptsumCluster);
3483 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsumTrack+coneptsumCluster);
3485 //normalize phi/eta band per area unit
3486 CalculateNormalizeUEBandPerUnitArea(aod, coneptsumCluster, coneptsumCell, coneptsumTrack, etaBandptsumTrackNorm, etaBandptsumClusterNorm) ;
3488 // printf("Histograms analysis : cluster pt = %f, etaBandTrack = %f, etaBandCluster = %f, isolation = %d\n",aod->Pt(),etaBandptsumTrackNorm,etaBandptsumClusterNorm,aod->IsIsolated());
3492 Int_t mcTag = aod->GetTag() ;
3496 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
3498 // Fill histograms to undertand pile-up before other cuts applied
3499 // Remember to relax time cuts in the reader
3500 FillPileUpHistograms(aod->GetCaloLabel(0));
3502 fhEIso ->Fill(energy);
3504 fhPhiIso ->Fill(pt,phi);
3505 fhEtaIso ->Fill(pt,eta);
3506 fhEtaPhiIso ->Fill(eta,phi);
3508 fhPtNLocMaxIso ->Fill(pt,aod->GetFiducialArea()) ;
3509 fhPtCentralityIso ->Fill(pt,GetEventCentrality()) ;
3510 fhPtEventPlaneIso ->Fill(pt,GetEventPlaneAngle() ) ;
3514 fhPtDecayIso ->Fill(pt);
3515 fhEtaPhiDecayIso->Fill(eta,phi);
3518 if(fFillPileUpHistograms)
3520 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
3521 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
3522 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
3523 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
3524 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
3525 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
3526 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
3532 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
3534 fhPtIsoMCPhoton ->Fill(pt);
3537 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
3539 fhPtIsoPrompt ->Fill(pt);
3540 fhPhiIsoPrompt ->Fill(pt,phi);
3541 fhEtaIsoPrompt ->Fill(pt,eta);
3543 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
3545 fhPtIsoFragmentation ->Fill(pt);
3546 fhPhiIsoFragmentation ->Fill(pt,phi);
3547 fhEtaIsoFragmentation ->Fill(pt,eta);
3549 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
3551 fhPtIsoPi0 ->Fill(pt);
3552 fhPhiIsoPi0 ->Fill(pt,phi);
3553 fhEtaIsoPi0 ->Fill(pt,eta);
3555 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
3557 fhPtIsoPi0Decay ->Fill(pt);
3558 fhPhiIsoPi0Decay ->Fill(pt,phi);
3559 fhEtaIsoPi0Decay ->Fill(pt,eta);
3561 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
3563 fhPtIsoEtaDecay ->Fill(pt);
3564 fhPhiIsoEtaDecay ->Fill(pt,phi);
3565 fhEtaIsoEtaDecay ->Fill(pt,eta);
3567 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
3569 fhPtIsoOtherDecay ->Fill(pt);
3570 fhPhiIsoOtherDecay ->Fill(pt,phi);
3571 fhEtaIsoOtherDecay ->Fill(pt,eta);
3573 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
3575 // fhPtIsoConversion ->Fill(pt);
3576 // fhPhiIsoConversion ->Fill(pt,phi);
3577 // fhEtaIsoConversion ->Fill(pt,eta);
3579 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
3581 fhPtIsoHadron ->Fill(pt);
3582 fhPhiIsoHadron ->Fill(pt,phi);
3583 fhEtaIsoHadron ->Fill(pt,eta);
3585 }//Histograms with MC
3587 }//Isolated histograms
3588 else // NON isolated
3590 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
3592 fhENoIso ->Fill(energy);
3593 fhPtNoIso ->Fill(pt);
3594 fhEtaPhiNoIso ->Fill(eta,phi);
3595 fhPtNLocMaxNoIso->Fill(pt,aod->GetFiducialArea());
3597 if(fFillPileUpHistograms)
3599 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
3600 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
3601 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
3602 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
3603 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
3604 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
3605 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
3610 fhPtDecayNoIso ->Fill(pt);
3611 fhEtaPhiDecayNoIso->Fill(eta,phi);
3616 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
3617 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
3618 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
3619 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
3620 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
3621 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
3622 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
3623 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
3624 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
3631 //___________________________________________
3632 void AliAnaParticleIsolation::FillAcceptanceHistograms()
3634 //Fill acceptance histograms if MC data is available
3636 //Double_t photonY = -100 ;
3637 Double_t photonE = -1 ;
3638 Double_t photonPt = -1 ;
3639 Double_t photonPhi = 100 ;
3640 Double_t photonEta = -1 ;
3645 Bool_t inacceptance = kFALSE;
3647 if(GetReader()->ReadStack())
3649 AliStack * stack = GetMCStack();
3652 for(Int_t i=0 ; i<stack->GetNtrack(); i++)
3654 if(GetReader()->AcceptOnlyHIJINGLabels() && !GetReader()->IsHIJINGLabel(i)) continue ;
3656 TParticle * prim = stack->Particle(i) ;
3657 pdg = prim->GetPdgCode();
3658 //printf("i %d, %s %d %s %d \n",i, stack->Particle(i)->GetName(), stack->Particle(i)->GetPdgCode(),
3659 // prim->GetName(), prim->GetPdgCode());
3663 // Get tag of this particle photon from fragmentation, decay, prompt ...
3664 tag = GetMCAnalysisUtils()->CheckOrigin(i,GetReader());
3666 if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3668 //A conversion photon from a hadron, skip this kind of photon
3669 // printf("AliAnaPhoton::FillAcceptanceHistograms() - not a photon, weird!\n ");
3670 // GetMCAnalysisUtils()->PrintMCTag(tag);
3675 //Get photon kinematics
3676 if(prim->Energy() == TMath::Abs(prim->Pz())) continue ; //Protection against floating point exception
3678 //photonY = 0.5*TMath::Log((prim->Energy()-prim->Pz())/(prim->Energy()+prim->Pz())) ;
3679 photonE = prim->Energy() ;
3680 photonPt = prim->Pt() ;
3681 photonPhi = TMath::RadToDeg()*prim->Phi() ;
3682 if(photonPhi < 0) photonPhi+=TMath::TwoPi();
3683 photonEta = prim->Eta() ;
3685 //Check if photons hit the Calorimeter
3688 inacceptance = kFALSE;
3689 if (fCalorimeter == "PHOS")
3691 if(GetPHOSGeometry() && GetCaloUtils()->IsPHOSGeoMatrixSet())
3695 if(GetPHOSGeometry()->ImpactOnEmc(prim,mod,z,x))
3696 inacceptance = kTRUE;
3697 if(GetDebug() > 2) printf("In %s Real acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3701 if(GetFiducialCut()->IsInFiducialCut(lv,fCalorimeter))
3702 inacceptance = kTRUE ;
3703 if(GetDebug() > 2) printf("In %s fiducial cut acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3706 else if(fCalorimeter == "EMCAL" /*&& GetCaloUtils()->IsEMCALGeoMatrixSet()*/)
3708 // if(GetEMCALGeometry())
3711 // GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(prim->Eta(),prim->Phi(),absID);
3713 // //if( absID >= 0){
3714 // if(GetFiducialCut()->IsInFiducialCut(lv,fCalorimeter))
3715 // inacceptance = kTRUE;
3717 // if(GetDebug() > 2) printf("In %s Real acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3721 if(GetFiducialCut()->IsInFiducialCut(lv,fCalorimeter))
3722 inacceptance = kTRUE ;
3724 if(GetDebug() > 2) printf("In %s fiducial cut acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3730 fhEtaPrimMC[kmcPPhoton]->Fill(photonPt , photonEta) ;
3731 fhEPrimMC [kmcPPhoton]->Fill(photonE) ;
3735 if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt) )
3737 mcIndex = kmcPPrompt;
3739 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation) )
3741 mcIndex = kmcPFragmentation ;
3743 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCISR))
3747 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay))
3749 mcIndex = kmcPPi0Decay;
3751 else if( (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay) ||
3752 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)))
3754 mcIndex = kmcPOtherDecay;
3758 mcIndex = kmcPOther;
3761 // ////////////////////ISO MC/////////////////////////
3762 Double_t sumpt = 0; Double_t dR=0. ;
3763 Int_t nprim = stack->GetNtrack();
3764 for(Int_t ip = 0; ip < nprim ; ip++)
3767 TParticle *mcisop = static_cast<TParticle*>(stack->Particle(ip));
3774 if(mcisop->GetStatusCode()!=1)
3777 if(mcisop->GetMother(0) == i)
3780 if(mcisop->Pt()<0.2)
3783 // TVector3 vmcv(mcisop->Px(),mcisop->Py(), mcisop->Pz());
3784 // if(vmcv.Perp()>1)
3787 dR = GetIsolationCut()->Radius(photonEta, photonPhi, mcisop->Eta(), mcisop->Phi());
3789 //dR = TMath::Sqrt((photonPhi-mcisop->Phi())*(photonPhi-mcisop->Phi())+(photonEta-mcisop->Eta())*(photonEta-mcisop->Eta()));
3791 if(dR > GetIsolationCut()->GetConeSize())
3794 sumpt += mcisop->Pt();
3797 ///////END ISO MC/////////////////////////
3801 fhEtaPrimMC[mcIndex]->Fill(photonPt , photonEta) ;
3802 fhEPrimMC [mcIndex]->Fill(photonE ) ;
3804 if(sumpt < GetIsolationCut()->GetPtThreshold())
3806 fhPtPrimMCiso [mcIndex] ->Fill(photonPt) ;
3807 fhPtPrimMCiso [kmcPPhoton]->Fill(photonPt) ;
3811 }// Primary photon PDG22
3812 }//loop on primaries
3813 }//stack exists and data is MC
3816 else if(GetReader()->ReadAODMCParticles())
3818 TClonesArray * mcparticles = GetReader()->GetAODMCParticles();
3821 Int_t nprim = mcparticles->GetEntriesFast();
3823 for(Int_t i=0; i < nprim; i++)
3825 if(GetReader()->AcceptOnlyHIJINGLabels() && !GetReader()->IsHIJINGLabel(i)) continue ;
3827 AliAODMCParticle * prim = (AliAODMCParticle *) mcparticles->At(i);
3829 pdg = prim->GetPdgCode();
3833 // Get tag of this particle photon from fragmentation, decay, prompt ...
3834 tag = GetMCAnalysisUtils()->CheckOrigin(i,GetReader());
3836 if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3838 //A conversion photon from a hadron, skip this kind of photon
3839 // printf("AliAnaPhoton::FillAcceptanceHistograms() - not a photon, weird!\n ");
3840 // GetMCAnalysisUtils()->PrintMCTag(tag);
3845 //Get photon kinematics
3846 if(prim->E() == TMath::Abs(prim->Pz())) continue ; //Protection against floating point exception
3848 //photonY = 0.5*TMath::Log((prim->E()-prim->Pz())/(prim->E()+prim->Pz())) ;
3849 photonE = prim->E() ;
3850 photonPt = prim->Pt() ;
3851 photonPhi = prim->Phi() ;
3852 if(photonPhi < 0) photonPhi+=TMath::TwoPi();
3853 photonEta = prim->Eta() ;
3855 //Check if photons hit the Calorimeter
3857 lv.SetPxPyPzE(prim->Px(),prim->Py(),prim->Pz(),prim->E());
3858 inacceptance = kFALSE;
3859 if (fCalorimeter == "PHOS")
3861 if(GetPHOSGeometry() && GetCaloUtils()->IsPHOSGeoMatrixSet())
3865 Double_t vtx[]={prim->Xv(),prim->Yv(),prim->Zv()};
3866 if(GetPHOSGeometry()->ImpactOnEmc(vtx, prim->Theta(),prim->Phi(),mod,z,x))
3867 inacceptance = kTRUE;
3868 if(GetDebug() > 2) printf("In %s Real acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3872 if(GetFiducialCut()->IsInFiducialCut(lv,fCalorimeter))
3873 inacceptance = kTRUE ;
3874 if(GetDebug() > 2) printf("In %s fiducial cut acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3877 else if(fCalorimeter == "EMCAL" /*&& GetCaloUtils()->IsEMCALGeoMatrixSet()*/)
3879 // if(GetEMCALGeometry())
3883 // //GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(prim->Eta(),prim->Phi(),absID);
3885 // //if( absID >= 0){
3886 // if(GetFiducialCut()->IsInFiducialCut(lv,fCalorimeter))
3887 // inacceptance = kTRUE;
3889 // if(GetDebug() > 2) printf("In %s Real acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3893 if(GetFiducialCut()->IsInFiducialCut(lv,fCalorimeter))
3894 inacceptance = kTRUE ;
3896 if(GetDebug() > 2) printf("In %s fiducial cut acceptance? %d\n",fCalorimeter.Data(),inacceptance);
3903 fhEtaPrimMC[kmcPPhoton]->Fill(photonPt, photonEta) ;
3904 fhEPrimMC [kmcPPhoton]->Fill(photonE) ;
3908 if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt))
3910 mcIndex = kmcPPrompt;
3912 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation))
3914 mcIndex = kmcPFragmentation ;
3916 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCISR))
3920 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay))
3922 mcIndex = kmcPPi0Decay;
3924 else if( (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay) ||
3925 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)))
3927 mcIndex = kmcPOtherDecay;
3931 mcIndex = kmcPOther;
3934 ////////////////////ISO MC/////////////////////////
3935 Double_t sumpt = 0; Double_t dR=0. ;
3936 for(Int_t ip = 0; ip < nprim ; ip++)
3938 AliAODMCParticle * mcisop = (AliAODMCParticle *) mcparticles->At(ip);
3946 if(mcisop->GetStatus()!=1)
3949 if(mcisop->GetMother() == i)
3952 if(mcisop->Pt()<0.2)
3955 // TVector3 vmcv(mcisop->Px(),mcisop->Py(), mcisop->Pz());
3956 // if(vmcv.Perp()>1)
3959 dR = GetIsolationCut()->Radius(photonEta, photonPhi, mcisop->Eta(), mcisop->Phi());
3961 //dR = TMath::Sqrt((photonPhi-mcisop->Phi())*(photonPhi-mcisop->Phi())+(photonEta-mcisop->Eta())*(photonEta-mcisop->Eta()));
3963 if(dR> GetIsolationCut()->GetConeSize())
3966 sumpt += mcisop->Pt();
3968 ///////////////////END ISO MC/////////////////////////
3972 fhEtaPrimMC[mcIndex]->Fill(photonPt , photonEta) ;
3973 fhEPrimMC [mcIndex]->Fill(photonE) ;
3975 if(sumpt < GetIsolationCut()->GetPtThreshold())
3977 fhPtPrimMCiso [mcIndex] ->Fill(photonPt) ;
3978 fhPtPrimMCiso [kmcPPhoton]->Fill(photonPt) ;
3983 }//loop on primaries
3985 }//kmc array exists and data is MC
3991 //_____________________________________________________________________________________
3992 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
3995 //Isolation Cut Analysis for both methods and different pt cuts and cones
3996 Float_t ptC = ph->Pt();
3997 Float_t etaC = ph->Eta();
3998 Float_t phiC = ph->Phi();
3999 Int_t tag = ph->GetTag();
4000 Bool_t decay = ph->IsTagged();
4002 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
4004 //Keep original setting used when filling AODs, reset at end of analysis
4005 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
4006 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
4007 Float_t rorg = GetIsolationCut()->GetConeSize();
4009 Float_t coneptsum = 0 ;
4010 Int_t n [10][10];//[fNCones][fNPtThresFrac];
4011 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
4012 Bool_t isolated = kFALSE;
4014 Int_t nFracCone = 0;
4016 // Fill hist with all particles before isolation criteria
4017 fhPtNoIso ->Fill(ptC);
4018 fhEtaPhiNoIso->Fill(etaC,phiC);
4022 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
4023 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
4024 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
4025 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
4026 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
4027 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
4028 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
4029 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
4030 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
4035 fhPtDecayNoIso ->Fill(ptC);
4036 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
4038 //Get vertex for photon momentum calculation
4039 Double_t vertex[] = {0,0,0} ; //vertex ;
4040 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
4041 GetReader()->GetVertex(vertex);
4043 //Loop on cone sizes
4044 for(Int_t icone = 0; icone<fNCones; icone++)
4046 //Recover reference arrays with clusters and tracks
4047 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
4048 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
4050 //If too small or too large pt, skip
4051 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
4053 //In case a more strict IC is needed in the produced AOD
4055 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
4057 GetIsolationCut()->SetSumPtThreshold(100);
4058 GetIsolationCut()->SetPtThreshold(100);
4059 GetIsolationCut()->SetPtFraction(100);
4060 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
4061 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
4062 GetReader(), GetCaloPID(),
4064 nCone,nFracCone,coneptsum, isolated);
4066 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
4068 // retreive pt tracks to fill histo vs. pt leading
4069 //Fill pt distribution of particles in cone
4070 //fhPtLeadingPt(),fhPerpSumPtLeadingPt(),fhPerpPtLeadingPt(),
4074 Double_t sumptPerp = 0. ;
4075 TObjArray * trackList = GetCTSTracks() ;
4076 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
4078 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
4079 //fill the histograms at forward range
4082 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
4086 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
4087 Double_t dEta = etaC - track->Eta();
4088 Double_t arg = dPhi*dPhi + dEta*dEta;
4089 if(TMath::Sqrt(arg) < fConeSizes[icone])
4091 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
4092 sumptPerp+=track->Pt();
4095 dPhi = phiC - track->Phi() - TMath::PiOver2();
4096 arg = dPhi*dPhi + dEta*dEta;
4097 if(TMath::Sqrt(arg) < fConeSizes[icone])
4099 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
4100 sumptPerp+=track->Pt();
4104 fhPerpSumPtLeadingPt[icone]->Fill(ptC,sumptPerp);
4108 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
4110 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
4111 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
4112 coneptsum+=track->Pt();
4119 TLorentzVector mom ;
4120 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
4122 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
4123 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
4125 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
4126 coneptsum+=mom.Pt();
4132 //Loop on ptthresholds
4133 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
4136 nfrac[icone][ipt]=0;
4137 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
4138 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
4139 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
4141 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
4142 GetReader(), GetCaloPID(),
4144 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
4146 if(!isolated) continue;
4147 //Normal ptThreshold cut
4149 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - cone size %1.1f, ptThres %1.1f, sumptThresh %1.1f, n %d, nfrac %d, coneptsum %2.2f, isolated %d\n",
4150 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
4151 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
4153 if(n[icone][ipt] == 0)
4155 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
4156 fhPtThresIsolated[icone][ipt]->Fill(ptC);
4157 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
4161 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
4162 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
4167 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
4168 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
4169 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
4170 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
4171 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
4172 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
4173 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
4174 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
4178 // pt in cone fraction
4179 if(nfrac[icone][ipt] == 0)
4181 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
4182 fhPtFracIsolated[icone][ipt]->Fill(ptC);
4183 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
4187 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
4188 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
4193 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
4194 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
4195 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
4196 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
4197 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
4198 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
4199 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
4200 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
4204 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
4206 //Pt threshold on pt cand/ sum in cone histograms
4207 if(coneptsum<fSumPtThresholds[ipt])
4208 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
4209 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
4210 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
4211 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
4214 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
4215 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
4219 // pt sum pt frac method
4220 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
4222 if(coneptsum < fPtFractions[ipt]*ptC)
4224 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
4225 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
4226 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
4230 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
4231 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
4236 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
4237 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
4238 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
4239 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
4240 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
4241 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
4245 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
4246 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
4254 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
4255 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
4256 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
4257 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
4258 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
4259 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
4260 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
4261 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
4266 //Reset original parameters for AOD analysis
4267 GetIsolationCut()->SetPtThreshold(ptthresorg);
4268 GetIsolationCut()->SetPtFraction(ptfracorg);
4269 GetIsolationCut()->SetConeSize(rorg);
4273 //_____________________________________________________________
4274 void AliAnaParticleIsolation::Print(const Option_t * opt) const
4277 //Print some relevant parameters set for the analysis
4281 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4282 AliAnaCaloTrackCorrBaseClass::Print(" ");
4284 printf("ReMake Isolation = %d \n", fReMakeIC) ;
4285 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
4286 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
4290 printf("N Cone Sizes = %d\n", fNCones) ;
4291 printf("Cone Sizes = \n") ;
4292 for(Int_t i = 0; i < fNCones; i++)
4293 printf(" %1.2f;", fConeSizes[i]) ;
4296 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
4297 printf(" pT thresholds = \n") ;
4298 for(Int_t i = 0; i < fNPtThresFrac; i++)
4299 printf(" %2.2f;", fPtThresholds[i]) ;
4303 printf(" pT fractions = \n") ;
4304 for(Int_t i = 0; i < fNPtThresFrac; i++)
4305 printf(" %2.2f;", fPtFractions[i]) ;
4309 printf("sum pT thresholds = \n") ;
4310 for(Int_t i = 0; i < fNPtThresFrac; i++)
4311 printf(" %2.2f;", fSumPtThresholds[i]) ;
4316 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
4317 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);