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 // --- Analysis system ---
37 #include "AliAnaParticleIsolation.h"
38 #include "AliCaloTrackReader.h"
39 #include "AliIsolationCut.h"
40 #include "AliNeutralMesonSelection.h"
41 #include "AliAODPWG4ParticleCorrelation.h"
42 #include "AliMCAnalysisUtils.h"
43 #include "AliVTrack.h"
44 #include "AliVCluster.h"
45 #include "AliESDEvent.h"
46 #include "AliAODEvent.h"
47 #include "AliEMCALGeometry.h"
49 ClassImp(AliAnaParticleIsolation)
51 //______________________________________________________________________________
52 AliAnaParticleIsolation::AliAnaParticleIsolation() :
53 AliAnaCaloTrackCorrBaseClass(), fCalorimeter(""),
54 fReMakeIC(0), fMakeSeveralIC(0),
55 fFillPileUpHistograms(0),
56 fFillTMHisto(0), fFillSSHisto(0),
58 fNCones(0), fNPtThresFrac(0),
59 fConeSizes(), fPtThresholds(),
60 fPtFractions(), fSumPtThresholds(),
62 fhEIso(0), fhPtIso(0),
63 fhPtCentralityIso(0), fhPtEventPlaneIso(0),
65 fhPhiIso(0), fhEtaIso(0), fhEtaPhiIso(0),
67 fhENoIso(0), fhPtNoIso(0), fhPtNLocMaxNoIso(0),
68 fhPtDecayIso(0), fhPtDecayNoIso(0),
69 fhEtaPhiDecayIso(0), fhEtaPhiDecayNoIso(0),
71 fhPtClusterInCone(0), fhPtCellInCone(0), fhPtTrackInCone(0),
72 fhPtTrackInConeOtherBC(0), fhPtTrackInConeOtherBCPileUpSPD(0),
73 fhPtTrackInConeBC0(0), fhPtTrackInConeVtxBC0(0),
74 fhPtTrackInConeBC0PileUpSPD(0),
75 fhPtInConePileUp(), fhPtInConeCent(0),
76 fhPerpConeSumPt(0), fhPtInPerpCone(0),
77 fhEtaBandCluster(0), fhPhiBandCluster(0),
78 fhEtaBandTrack(0), fhPhiBandTrack(0),
79 fhEtaBandCell(0), fhPhiBandCell(0),
80 fhConeSumPt(0), fhConeSumPtCellTrack(0),
81 fhConeSumPtCell(0), fhConeSumPtCluster(0), fhConeSumPtTrack(0),
82 fhConeSumPtEtaBandUECluster(0), fhConeSumPtPhiBandUECluster(0),
83 fhConeSumPtEtaBandUETrack(0), fhConeSumPtPhiBandUETrack(0),
84 fhConeSumPtEtaBandUECell(0), fhConeSumPtPhiBandUECell(0),
85 fhConeSumPtTrigEtaPhi(0),
86 fhConeSumPtCellTrackTrigEtaPhi(0),
87 fhConeSumPtEtaBandUEClusterTrigEtaPhi(0), fhConeSumPtPhiBandUEClusterTrigEtaPhi(0),
88 fhConeSumPtEtaBandUETrackTrigEtaPhi(0), fhConeSumPtPhiBandUETrackTrigEtaPhi(0),
89 fhConeSumPtEtaBandUECellTrigEtaPhi(0), fhConeSumPtPhiBandUECellTrigEtaPhi(0),
90 fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
91 fhConeSumPtEtaUESubTrigEtaPhi(0), fhConeSumPtPhiUESubTrigEtaPhi(0),
92 fhConeSumPtEtaUESubTrackCell(0), fhConeSumPtPhiUESubTrackCell(0),
93 fhConeSumPtEtaUESubTrackCellTrigEtaPhi(0), fhConeSumPtPhiUESubTrackCellTrigEtaPhi(0),
94 fhConeSumPtEtaUESubCluster(0), fhConeSumPtPhiUESubCluster(0),
95 fhConeSumPtEtaUESubClusterTrigEtaPhi(0), fhConeSumPtPhiUESubClusterTrigEtaPhi(0),
96 fhConeSumPtEtaUESubCell(0), fhConeSumPtPhiUESubCell(0),
97 fhConeSumPtEtaUESubCellTrigEtaPhi(0), fhConeSumPtPhiUESubCellTrigEtaPhi(0),
98 fhConeSumPtEtaUESubTrack(0), fhConeSumPtPhiUESubTrack(0),
99 fhConeSumPtEtaUESubTrackTrigEtaPhi(0), fhConeSumPtPhiUESubTrackTrigEtaPhi(0),
100 fhFractionTrackOutConeEta(0), fhFractionTrackOutConeEtaTrigEtaPhi(0),
101 fhFractionClusterOutConeEta(0), fhFractionClusterOutConeEtaTrigEtaPhi(0),
102 fhFractionClusterOutConePhi(0), fhFractionClusterOutConePhiTrigEtaPhi(0),
103 fhFractionCellOutConeEta(0), fhFractionCellOutConeEtaTrigEtaPhi(0),
104 fhFractionCellOutConePhi(0), fhFractionCellOutConePhiTrigEtaPhi(0),
105 fhConeSumPtClustervsTrack(0),
106 fhConeSumPtEtaUESubClustervsTrack(0), fhConeSumPtPhiUESubClustervsTrack(0),
107 fhConeSumPtCellvsTrack(0),
108 fhConeSumPtEtaUESubCellvsTrack(0), fhConeSumPtPhiUESubCellvsTrack(0),
109 fhEtaBandClustervsTrack(0), fhPhiBandClustervsTrack(0),
110 fhEtaBandNormClustervsTrack(0), fhPhiBandNormClustervsTrack(0),
111 fhEtaBandCellvsTrack(0), fhPhiBandCellvsTrack(0),
112 fhEtaBandNormCellvsTrack(0), fhPhiBandNormCellvsTrack(0),
115 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
116 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
117 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
118 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
119 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
120 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
121 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
122 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
123 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
124 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
125 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
126 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
127 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
128 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
129 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
130 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
131 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
132 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
133 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
134 //fhPtNoIsoConversion(0),
135 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
137 fhSumPtLeadingPt(), fhPtLeadingPt(),
138 fhPerpSumPtLeadingPt(), fhPerpPtLeadingPt(),
139 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
140 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
141 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
142 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
143 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
144 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
145 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
146 // Cluster control histograms
147 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
148 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
149 fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
150 fhELambda0TRD(), fhELambda1TRD(),
151 fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
152 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
153 // Number of local maxima in cluster
155 fhELambda0LocMax1(), fhELambda1LocMax1(),
156 fhELambda0LocMax2(), fhELambda1LocMax2(),
157 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
159 fhEIsoPileUp(), fhPtIsoPileUp(),
160 fhENoIsoPileUp(), fhPtNoIsoPileUp(),
161 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
162 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
163 fhTimeNPileUpVertContributors(0),
164 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
165 // Histograms settings
166 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
167 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
171 //Initialize parameters
174 for(Int_t i = 0; i < 5 ; i++)
178 fhPtSumIsolatedPrompt [i] = 0 ;
179 fhPtSumIsolatedFragmentation[i] = 0 ;
180 fhPtSumIsolatedPi0Decay [i] = 0 ;
181 fhPtSumIsolatedPi0 [i] = 0 ;
182 fhPtSumIsolatedEtaDecay [i] = 0 ;
183 fhPtSumIsolatedOtherDecay [i] = 0 ;
184 // fhPtSumIsolatedConversion [i] = 0 ;
185 fhPtSumIsolatedHadron [i] = 0 ;
187 for(Int_t j = 0; j < 5 ; j++)
189 fhPtThresIsolated [i][j] = 0 ;
190 fhPtFracIsolated [i][j] = 0 ;
191 fhPtSumIsolated [i][j] = 0 ;
193 fhEtaPhiPtThresIso [i][j] = 0 ;
194 fhEtaPhiPtThresDecayIso [i][j] = 0 ;
195 fhPtPtThresDecayIso [i][j] = 0 ;
197 fhEtaPhiPtFracIso [i][j] = 0 ;
198 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
199 fhPtPtFracDecayIso [i][j] = 0 ;
200 fhPtPtSumDecayIso [i][j] = 0 ;
201 fhPtSumDensityIso [i][j] = 0 ;
202 fhPtSumDensityDecayIso [i][j] = 0 ;
203 fhEtaPhiSumDensityIso [i][j] = 0 ;
204 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
205 fhPtFracPtSumIso [i][j] = 0 ;
206 fhPtFracPtSumDecayIso [i][j] = 0 ;
207 fhEtaPhiFracPtSumIso [i][j] = 0 ;
208 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
210 fhPtThresIsolatedPrompt [i][j] = 0 ;
211 fhPtThresIsolatedFragmentation[i][j] = 0 ;
212 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
213 fhPtThresIsolatedPi0 [i][j] = 0 ;
214 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
215 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
216 // fhPtThresIsolatedConversion [i][j] = 0 ;
217 fhPtThresIsolatedHadron [ i][j] = 0 ;
219 fhPtFracIsolatedPrompt [i][j] = 0 ;
220 fhPtFracIsolatedFragmentation [i][j] = 0 ;
221 fhPtFracIsolatedPi0 [i][j] = 0 ;
222 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
223 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
224 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
225 // fhPtFracIsolatedConversion [i][j] = 0 ;
226 fhPtFracIsolatedHadron [i][j] = 0 ;
231 for(Int_t i = 0; i < 5 ; i++)
233 fPtFractions [i] = 0 ;
234 fPtThresholds [i] = 0 ;
235 fSumPtThresholds[i] = 0 ;
239 for(Int_t i = 0; i < 2 ; i++)
241 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
242 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
243 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
244 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
246 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
247 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
250 // Number of local maxima in cluster
252 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
253 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
254 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
260 for(Int_t i = 0 ; i < 7 ; i++)
262 fhPtInConePileUp[i] = 0 ;
263 fhEIsoPileUp [i] = 0 ;
264 fhPtIsoPileUp [i] = 0 ;
265 fhENoIsoPileUp [i] = 0 ;
266 fhPtNoIsoPileUp [i] = 0 ;
271 //_______________________________________________________________________________________________
272 void AliAnaParticleIsolation::CalculateCaloUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
273 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
275 // Get the clusters pT or sum of pT in phi/eta bands or at 45 degrees from trigger
277 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
279 Float_t conesize = GetIsolationCut()->GetConeSize();
282 //Select the Calorimeter
283 TObjArray * pl = 0x0;
284 if (fCalorimeter == "PHOS" )
285 pl = GetPHOSClusters();
286 else if (fCalorimeter == "EMCAL")
287 pl = GetEMCALClusters();
291 //Get vertex for cluster momentum calculation
292 Double_t vertex[] = {0,0,0} ; //vertex ;
293 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
294 GetReader()->GetVertex(vertex);
296 Float_t ptTrig = pCandidate->Pt() ;
297 Float_t phiTrig = pCandidate->Phi();
298 Float_t etaTrig = pCandidate->Eta();
300 for(Int_t icluster=0; icluster < pl->GetEntriesFast(); icluster++)
302 AliVCluster* cluster = (AliVCluster *) pl->At(icluster);
306 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Cluster not available?");
310 //Do not count the candidate (photon or pi0) or the daughters of the candidate
311 if(cluster->GetID() == pCandidate->GetCaloLabel(0) ||
312 cluster->GetID() == pCandidate->GetCaloLabel(1) ) continue ;
314 //Remove matched clusters to tracks if Neutral and Track info is used
315 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged &&
316 IsTrackMatched(cluster,GetReader()->GetInputEvent())) continue ;
318 cluster->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
320 //exclude particles in cone
321 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, mom.Eta(), mom.Phi());
322 if(rad < conesize) continue ;
324 //fill histogram for UE in phi band in EMCal acceptance
325 if(mom.Eta() > (etaTrig-conesize) && mom.Eta() < (etaTrig+conesize))
327 phiBandPtSum+=mom.Pt();
328 fhPhiBandCluster->Fill(mom.Eta(),mom.Phi());
331 //fill histogram for UE in eta band in EMCal acceptance
332 if(mom.Phi() > (phiTrig-conesize) && mom.Phi() < (phiTrig+conesize))
334 etaBandPtSum+=mom.Pt();
335 fhEtaBandCluster->Fill(mom.Eta(),mom.Phi());
339 fhConeSumPtEtaBandUECluster ->Fill(ptTrig , etaBandPtSum);
340 fhConeSumPtPhiBandUECluster ->Fill(ptTrig , phiBandPtSum);
341 fhConeSumPtEtaBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
342 fhConeSumPtPhiBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
346 //_______________________________________________________________________________________________
347 void AliAnaParticleIsolation::CalculateCaloCellUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
348 Float_t & etaBandPtSumCells, Float_t & phiBandPtSumCells)
350 // Get the cells amplitude or sum of amplitude in phi/eta bands or at 45 degrees from trigger
352 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
354 Float_t conesize = GetIsolationCut()->GetConeSize();
356 Float_t phiTrig = pCandidate->Phi();
357 Float_t etaTrig = pCandidate->Eta();
359 Int_t etamin = TMath::Nint(etaTrig-conesize);
360 Int_t etamax = TMath::Nint(etaTrig+conesize);
361 Int_t phimin = TMath::Nint(phiTrig-conesize);
362 Int_t phimax = TMath::Nint(phiTrig+conesize);
364 AliEMCALGeometry * eGeom = GetEMCALGeometry();
365 AliVCaloCells * cells = GetEMCALCells();
368 for(Int_t ieta=etamin; ieta<etamax; ieta++)
370 for(Int_t iphi=100*TMath::DegToRad(); iphi<180*TMath::DegToRad(); iphi++)
373 eGeom->GetAbsCellIdFromEtaPhi(ieta,iphi,absId);
375 //exclude cells in cone
376 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, ieta, iphi);
377 if(rad < conesize) continue ;
379 etaBandPtSumCells += cells->GetCellAmplitude(absId);
384 for(Int_t iphi=phimin; iphi<phimax; iphi++)
386 for(Int_t ieta=-0.7; ieta<0.7; ieta++)
389 eGeom->GetAbsCellIdFromEtaPhi(ieta,iphi,absId);
391 //exclude cells in cone
392 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, ieta, iphi);
393 if(rad < conesize) continue ;
395 phiBandPtSumCells += cells->GetCellAmplitude(absId);
399 Float_t ptTrig = pCandidate->Pt();
401 fhConeSumPtEtaBandUECell ->Fill(ptTrig , etaBandPtSumCells);
402 fhConeSumPtPhiBandUECell ->Fill(ptTrig , phiBandPtSumCells);
403 fhConeSumPtEtaBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSumCells);
404 fhConeSumPtPhiBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSumCells);
408 //________________________________________________________________________________________________
409 void AliAnaParticleIsolation::CalculateTrackUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
410 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
412 // Get the track pT or sum of pT in phi/eta bands or at 45 degrees from trigger
414 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
416 Float_t conesize = GetIsolationCut()->GetConeSize();
418 Double_t sumptPerp= 0. ;
419 Float_t ptTrig = pCandidate->Pt() ;
420 Float_t phiTrig = pCandidate->Phi();
421 Float_t etaTrig = pCandidate->Eta();
423 TObjArray * trackList = GetCTSTracks() ;
424 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
426 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
430 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
434 //Do not count the candidate (pion, conversion photon) or the daughters of the candidate
435 if(track->GetID() == pCandidate->GetTrackLabel(0) || track->GetID() == pCandidate->GetTrackLabel(1) ||
436 track->GetID() == pCandidate->GetTrackLabel(2) || track->GetID() == pCandidate->GetTrackLabel(3) ) continue ;
438 //exclude particles in cone
439 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, track->Eta(), track->Phi());
440 if(rad < conesize) continue ;
442 //fill histogram for UE in phi band
443 if(track->Eta() > (etaTrig-conesize) && track->Eta() < (etaTrig+conesize))
445 phiBandPtSum+=track->Pt();
446 fhPhiBandTrack->Fill(track->Eta(),track->Phi());
449 //fill histogram for UE in eta band in EMCal acceptance
450 if(track->Phi() > (phiTrig-conesize) && track->Phi() < (phiTrig+conesize))
452 etaBandPtSum+=track->Pt();
453 fhEtaBandTrack->Fill(track->Eta(),track->Phi());
456 //fill the histograms at +-45 degrees in phi from trigger particle, perpedicular to trigger axis in phi
457 Double_t dPhi = phiTrig - track->Phi() + TMath::PiOver2();
458 Double_t dEta = etaTrig - track->Eta();
459 Double_t arg = dPhi*dPhi + dEta*dEta;
460 if(TMath::Sqrt(arg) < conesize)
462 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
463 sumptPerp+=track->Pt();
466 dPhi = phiTrig - track->Phi() - TMath::PiOver2();
467 arg = dPhi*dPhi + dEta*dEta;
468 if(TMath::Sqrt(arg) < conesize)
470 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
471 sumptPerp+=track->Pt();
475 fhPerpConeSumPt ->Fill(ptTrig , sumptPerp );
476 fhConeSumPtEtaBandUETrack ->Fill(ptTrig , etaBandPtSum);
477 fhConeSumPtPhiBandUETrack ->Fill(ptTrig , phiBandPtSum);
478 fhConeSumPtEtaBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
479 fhConeSumPtPhiBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
484 //________________________________________________________________________________________________________
485 Float_t AliAnaParticleIsolation::CalculateExcessAreaFraction(const Float_t excess, const Float_t conesize)
487 // Area of a circunference segment segment 1/2 R^2 (angle-sin(angle)), angle = 2*ACos((R-excess)/R)
490 Float_t angle = 2*TMath::ACos( (conesize-excess) / conesize );
492 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
494 Float_t excessA = conesize*conesize / 2 * (angle-TMath::Sin(angle));
496 if(coneA > excessA) return coneA / (coneA-excessA);
499 printf("AliAnaParticleIsolation::CalculateExcessAreaFraction() - Please Check : Excess Track %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",
500 excess,coneA, excessA, angle*TMath::RadToDeg(), coneA / (coneA-excessA));
505 //___________________________________________________________________________________________________________________________________
506 void AliAnaParticleIsolation::CalculateNormalizeUEBandPerUnitArea(AliAODPWG4ParticleCorrelation * pCandidate,
507 const Float_t coneptsumCluster, const Float_t coneptsumCell, const Float_t coneptsumTrack)
509 //normalize phi/eta band per area unit
511 Float_t etaUEptsumTrack = 0 ;
512 Float_t phiUEptsumTrack = 0 ;
513 Float_t etaUEptsumCluster = 0 ;
514 Float_t phiUEptsumCluster = 0 ;
515 Float_t etaUEptsumCell = 0 ;
516 Float_t phiUEptsumCell = 0 ;
518 Int_t partTypeInCone = GetIsolationCut()->GetParticleTypeInCone();
520 // Sum the pT in the phi or eta band for clusters or tracks
522 CalculateTrackUEBand (pCandidate,etaUEptsumTrack ,phiUEptsumTrack );
523 CalculateCaloUEBand (pCandidate,etaUEptsumCluster,phiUEptsumCluster);
524 CalculateCaloCellUEBand(pCandidate,etaUEptsumCell ,phiUEptsumCell );
526 // Do the normalization
528 Float_t conesize = GetIsolationCut()->GetConeSize();
529 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
530 Float_t ptTrig = pCandidate->Pt() ;
531 Float_t phiTrig = pCandidate->Phi();
532 Float_t etaTrig = pCandidate->Eta();
537 Float_t phiUEptsumTrackNorm = 0 ;
538 Float_t etaUEptsumTrackNorm = 0 ;
539 Float_t coneptsumTrackSubPhi = 0 ;
540 Float_t coneptsumTrackSubEta = 0 ;
541 if( partTypeInCone!=AliIsolationCut::kOnlyNeutral )
543 // Get the cut used for the TPC tracks in the reader, +-0.8, +-0.9 ...
544 // Only valid in simple fidutial cut case and if the cut is applied, careful!
545 Float_t tpcEtaSize = GetReader()->GetFiducialCut()->GetCTSFidCutMaxEtaArray()->At(0) -
546 GetReader()->GetFiducialCut()->GetCTSFidCutMinEtaArray()->At(0) ;
547 Float_t tpcPhiSize = TMath::TwoPi();
549 //printf("tracks eta fiducial acceptance %f\n",tpcEtaSize);
551 phiUEptsumTrackNorm = phiUEptsumTrack*(coneA / ((2*conesize*tpcPhiSize)-coneA)); // pi * R^2 / (2 R * 2 pi) - trigger cone
552 etaUEptsumTrackNorm = etaUEptsumTrack*(coneA / ((2*conesize*tpcEtaSize)-coneA)); // pi * R^2 / (2 R * 1.6) - trigger cone
554 // Need to correct coneptsumTrack by the fraction of the cone out of track cut acceptance!
555 Float_t correctConeSumTrack = 1;
556 if(TMath::Abs(etaTrig)+conesize > tpcEtaSize/2.)
558 Float_t excess = TMath::Abs(etaTrig) + conesize - tpcEtaSize/2.;
559 correctConeSumTrack = CalculateExcessAreaFraction(excess,conesize);
560 //printf("Excess Track %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",excess,coneA, excessA, angle*TMath::RadToDeg(), correctConeSumTrack);
563 coneptsumTrackSubPhi = coneptsumTrack*correctConeSumTrack - phiUEptsumTrackNorm;
564 coneptsumTrackSubEta = coneptsumTrack*correctConeSumTrack - etaUEptsumTrackNorm;
566 fhConeSumPtPhiUESubTrack ->Fill(ptTrig , coneptsumTrackSubPhi);
567 fhConeSumPtPhiUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubPhi);
568 fhConeSumPtEtaUESubTrack ->Fill(ptTrig , coneptsumTrackSubEta);
569 fhConeSumPtEtaUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubEta);
571 fhFractionTrackOutConeEta ->Fill(ptTrig , correctConeSumTrack-1);
572 fhFractionTrackOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig,correctConeSumTrack-1);
575 // ------------------------ //
576 // EMCal Clusters and cells //
577 // ------------------------ //
578 Float_t phiUEptsumClusterNorm = 0 ;
579 Float_t etaUEptsumClusterNorm = 0 ;
580 Float_t coneptsumClusterSubPhi = 0 ;
581 Float_t coneptsumClusterSubEta = 0 ;
582 Float_t phiUEptsumCellNorm = 0 ;
583 Float_t etaUEptsumCellNorm = 0 ;
584 Float_t coneptsumCellSubPhi = 0 ;
585 Float_t coneptsumCellSubEta = 0 ;
587 if( partTypeInCone!=AliIsolationCut::kOnlyCharged )
589 //Careful here if EMCal limits changed .. 2010 (4 SM) to 2011-12 (10 SM), for the moment consider 100 deg in phi
590 Float_t emcEtaSize = 0.7*2;
591 Float_t emcPhiSize = TMath::DegToRad()*100;
597 phiUEptsumClusterNorm = phiUEptsumCluster*(coneA / ((2*conesize*emcPhiSize)-coneA)); // pi * R^2 / (2 R * 2 100 deg) - trigger cone
598 etaUEptsumClusterNorm = etaUEptsumCluster*(coneA / ((2*conesize*emcEtaSize)-coneA)); // pi * R^2 / (2 R * 2*1.7) - trigger cone
600 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
602 Float_t correctConeSumClusterEta = 1;
603 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
605 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
606 correctConeSumClusterEta = CalculateExcessAreaFraction(excess,conesize);
607 //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);
610 Float_t correctConeSumClusterPhi = 1;
611 //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() );
612 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
613 (phiTrig-conesize < 80*TMath::DegToRad()))
616 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
617 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
619 correctConeSumClusterPhi = CalculateExcessAreaFraction(excess,conesize);
620 //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);
623 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
625 coneptsumClusterSubPhi = coneptsumCluster*correctConeSumClusterEta*correctConeSumClusterPhi - phiUEptsumClusterNorm;
626 coneptsumClusterSubEta = coneptsumCluster*correctConeSumClusterEta*correctConeSumClusterPhi - etaUEptsumClusterNorm;
628 fhConeSumPtPhiUESubCluster ->Fill(ptTrig , coneptsumClusterSubPhi);
629 fhConeSumPtPhiUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubPhi);
630 fhConeSumPtEtaUESubCluster ->Fill(ptTrig , coneptsumClusterSubEta);
631 fhConeSumPtEtaUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubEta);
633 fhFractionClusterOutConeEta ->Fill(ptTrig , correctConeSumClusterEta-1);
634 fhFractionClusterOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterEta-1);
635 fhFractionClusterOutConePhi ->Fill(ptTrig , correctConeSumClusterPhi-1);
636 fhFractionClusterOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterPhi-1);
642 phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*conesize*emcPhiSize)-coneA));
643 etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*conesize*emcEtaSize)-coneA));
645 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
647 Float_t correctConeSumCellEta = 1;
648 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
650 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
651 correctConeSumCellEta = CalculateExcessAreaFraction(excess,conesize);
652 //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);
655 Float_t correctConeSumCellPhi = 1;
656 //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() );
657 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
658 (phiTrig-conesize < 80*TMath::DegToRad()))
661 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
662 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
664 correctConeSumCellPhi = CalculateExcessAreaFraction(excess,conesize);
665 //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);
668 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
669 coneptsumCellSubPhi = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - phiUEptsumCellNorm;
670 coneptsumCellSubEta = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - etaUEptsumCellNorm;
672 fhConeSumPtPhiUESubCell ->Fill(ptTrig , coneptsumCellSubPhi);
673 fhConeSumPtPhiUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubPhi);
674 fhConeSumPtEtaUESubCell ->Fill(ptTrig , coneptsumCellSubEta);
675 fhConeSumPtEtaUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubEta);
677 fhFractionCellOutConeEta ->Fill(ptTrig , correctConeSumCellEta-1);
678 fhFractionCellOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellEta-1);
679 fhFractionCellOutConePhi ->Fill(ptTrig , correctConeSumCellPhi-1);
680 fhFractionCellOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellPhi-1);
684 if( partTypeInCone==AliIsolationCut::kNeutralAndCharged )
687 // --------------------------- //
688 // Tracks and clusters in cone //
689 // --------------------------- //
691 Double_t sumPhiUESub = coneptsumClusterSubPhi + coneptsumTrackSubPhi;
692 Double_t sumEtaUESub = coneptsumClusterSubEta + coneptsumTrackSubEta;
694 fhConeSumPtPhiUESub ->Fill(ptTrig , sumPhiUESub);
695 fhConeSumPtPhiUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESub);
696 fhConeSumPtEtaUESub ->Fill(ptTrig , sumEtaUESub);
697 fhConeSumPtEtaUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESub);
699 fhEtaBandClustervsTrack ->Fill(etaUEptsumCluster ,etaUEptsumTrack );
700 fhPhiBandClustervsTrack ->Fill(phiUEptsumCluster ,phiUEptsumTrack );
701 fhEtaBandNormClustervsTrack->Fill(etaUEptsumClusterNorm,etaUEptsumTrackNorm);
702 fhPhiBandNormClustervsTrack->Fill(phiUEptsumClusterNorm,phiUEptsumTrackNorm);
704 fhConeSumPtEtaUESubClustervsTrack->Fill(coneptsumClusterSubEta,coneptsumTrackSubEta);
705 fhConeSumPtPhiUESubClustervsTrack->Fill(coneptsumClusterSubPhi,coneptsumTrackSubPhi);
707 // ------------------------ //
708 // Tracks and cells in cone //
709 // ------------------------ //
711 Double_t sumPhiUESubTrackCell = coneptsumCellSubPhi + coneptsumTrackSubPhi;
712 Double_t sumEtaUESubTrackCell = coneptsumCellSubEta + coneptsumTrackSubEta;
714 fhConeSumPtPhiUESubTrackCell ->Fill(ptTrig , sumPhiUESubTrackCell);
715 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESubTrackCell);
716 fhConeSumPtEtaUESubTrackCell ->Fill(ptTrig , sumEtaUESubTrackCell);
717 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESubTrackCell);
719 fhEtaBandCellvsTrack ->Fill(etaUEptsumCell ,etaUEptsumTrack );
720 fhPhiBandCellvsTrack ->Fill(phiUEptsumCell ,phiUEptsumTrack );
721 fhEtaBandNormCellvsTrack->Fill(etaUEptsumCellNorm,etaUEptsumTrackNorm);
722 fhPhiBandNormCellvsTrack->Fill(phiUEptsumCellNorm,phiUEptsumTrackNorm);
724 fhConeSumPtEtaUESubCellvsTrack->Fill(coneptsumCellSubEta,coneptsumTrackSubEta);
725 fhConeSumPtPhiUESubCellvsTrack->Fill(coneptsumCellSubPhi,coneptsumTrackSubPhi);
732 //__________________________________________________________________________________________________
733 void AliAnaParticleIsolation::CalculateCaloSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
734 Float_t & coneptsumCluster)
736 // Get the cluster pT or sum of pT in isolation cone
738 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
740 //Recover reference arrays with clusters and tracks
741 TObjArray * refclusters = aodParticle->GetObjArray(GetAODObjArrayName()+"Clusters");
742 if(!refclusters) return ;
744 Float_t ptTrig = aodParticle->Pt();
746 //Get vertex for cluster momentum calculation
747 Double_t vertex[] = {0,0,0} ; //vertex ;
748 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
749 GetReader()->GetVertex(vertex);
752 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
754 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
755 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
757 fhPtInCone ->Fill(ptTrig, mom.Pt());
758 fhPtClusterInCone->Fill(ptTrig, mom.Pt());
760 if(fFillPileUpHistograms)
762 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(ptTrig,mom.Pt());
763 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,mom.Pt());
764 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,mom.Pt());
765 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,mom.Pt());
766 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,mom.Pt());
767 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,mom.Pt());
768 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,mom.Pt());
771 fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
772 coneptsumCluster+=mom.Pt();
775 fhConeSumPtCluster ->Fill(ptTrig, coneptsumCluster);
778 //__________________________________________________________________________________________________
779 void AliAnaParticleIsolation::CalculateCaloCellSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
780 Float_t & coneptsumCell)
783 // Get the cell amplityde or sum of amplitude in isolation cone
785 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
787 Float_t conesize = GetIsolationCut()->GetConeSize();
789 Float_t ptTrig = aodParticle->Pt();
790 Float_t phiTrig = aodParticle->Phi();
791 Float_t etaTrig = aodParticle->Eta();
794 Int_t etamin = TMath::Nint(etaTrig-conesize);
795 Int_t etamax = TMath::Nint(etaTrig+conesize);
796 Int_t phimin = TMath::Nint(phiTrig-conesize);
797 Int_t phimax = TMath::Nint(phiTrig+conesize);
799 AliEMCALGeometry * eGeom = GetEMCALGeometry();
800 AliVCaloCells * cells = GetEMCALCells();
802 for(Int_t ieta=etamin; ieta<etamax; ieta++)
804 for(Int_t iphi=phimin; iphi<phimax; iphi++)
807 eGeom->GetAbsCellIdFromEtaPhi(ieta,iphi,absId);
809 //exclude cells in cone
810 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, ieta, iphi);
811 if(rad > conesize) continue ;
813 fhPtCellInCone->Fill(ptTrig, cells->GetCellAmplitude(absId));
814 coneptsumCell += cells->GetCellAmplitude(absId);
818 fhConeSumPtCell->Fill(ptTrig,coneptsumCell);
822 //___________________________________________________________________________________________________
823 void AliAnaParticleIsolation::CalculateTrackSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
824 Float_t & coneptsumTrack)
826 // Get the track pT or sum of pT in isolation cone
828 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
830 //Recover reference arrays with clusters and tracks
831 TObjArray * reftracks = aodParticle->GetObjArray(GetAODObjArrayName()+"Tracks");
832 if(!reftracks) return ;
834 Float_t ptTrig = aodParticle->Pt();
835 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
837 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
839 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
840 Float_t pTtrack = track->Pt();
842 fhPtInCone ->Fill(ptTrig,pTtrack);
843 fhPtTrackInCone->Fill(ptTrig,pTtrack);
845 if(fFillPileUpHistograms)
847 ULong_t status = track->GetStatus();
848 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
849 //Double32_t tof = track->GetTOFsignal()*1e-3;
850 Int_t trackBC = track->GetTOFBunchCrossing(bz);
852 if ( okTOF && trackBC!=0 ) fhPtTrackInConeOtherBC->Fill(ptTrig,pTtrack);
853 else if( okTOF && trackBC==0 ) fhPtTrackInConeBC0 ->Fill(ptTrig,pTtrack);
855 Int_t vtxBC = GetReader()->GetVertexBC();
856 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtTrackInConeVtxBC0->Fill(ptTrig,pTtrack);
858 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(ptTrig,pTtrack);
859 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(ptTrig,pTtrack);
860 if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(ptTrig,pTtrack); }
861 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,pTtrack);
862 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,pTtrack);
863 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,pTtrack);
864 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,pTtrack);
865 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,pTtrack);
866 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,pTtrack);
869 fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
870 coneptsumTrack+=pTtrack;
873 fhConeSumPtTrack->Fill(ptTrig, coneptsumTrack);
877 //_________________________________________________________________
878 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
880 // Fill some histograms to understand pile-up
881 if(!fFillPileUpHistograms) return;
885 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
890 TObjArray* clusters = 0x0;
891 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
892 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
895 Float_t time = -1000;
899 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
900 energy = cluster->E();
901 time = cluster->GetTOF()*1e9;
904 //printf("E %f, time %f\n",energy,time);
905 AliVEvent * event = GetReader()->GetInputEvent();
907 fhTimeENoCut->Fill(energy,time);
908 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
909 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
911 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
913 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
914 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
916 // N pile up vertices
917 Int_t nVerticesSPD = -1;
918 Int_t nVerticesTracks = -1;
922 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
923 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
928 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
929 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
932 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
933 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
935 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
936 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
939 Float_t z1 = -1, z2 = -1;
941 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
945 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
946 ncont=pv->GetNContributors();
947 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
949 diamZ = esdEv->GetDiamondZ();
953 AliAODVertex *pv=aodEv->GetVertex(iVert);
954 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
955 ncont=pv->GetNContributors();
956 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
958 diamZ = aodEv->GetDiamondZ();
961 Double_t distZ = TMath::Abs(z2-z1);
962 diamZ = TMath::Abs(z2-diamZ);
964 fhTimeNPileUpVertContributors ->Fill(time,ncont);
965 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
966 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
971 //_____________________________________________________________________________________________________________________
972 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation *pCandidate,
973 const AliCaloTrackReader * reader,
974 const AliCaloPID * pid)
976 // Fill Track matching and Shower Shape control histograms
977 if(!fFillTMHisto && !fFillSSHisto) return;
979 Int_t clusterID = pCandidate->GetCaloLabel(0) ;
980 Int_t nMaxima = pCandidate->GetFiducialArea(); // bad name, just place holder for the moment
981 Int_t mcTag = pCandidate->GetTag() ;
982 Bool_t isolated = pCandidate->IsIsolated();
986 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
991 TObjArray* clusters = 0x0;
992 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
993 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
997 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
998 Float_t energy = cluster->E();
1002 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
1003 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
1007 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
1008 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
1009 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
1010 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
1011 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
1012 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
1014 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
1015 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
1019 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
1021 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
1022 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
1025 fhNLocMax[isolated]->Fill(energy,nMaxima);
1026 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
1027 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
1028 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
1032 //Analyse non-isolated events
1035 Bool_t iso = kFALSE ;
1036 Float_t coneptsum = 0 ;
1038 TObjArray * plNe = pCandidate->GetObjArray(GetAODObjArrayName()+"Clusters");
1039 TObjArray * plCTS = pCandidate->GetObjArray(GetAODObjArrayName()+"Tracks");
1041 GetIsolationCut()->SetPtThresholdMax(1.);
1042 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
1044 kFALSE, pCandidate, "",
1045 n,nfrac,coneptsum, iso);
1047 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
1049 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1052 GetIsolationCut()->SetPtThresholdMax(10000.);
1059 Float_t dZ = cluster->GetTrackDz();
1060 Float_t dR = cluster->GetTrackDx();
1062 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1064 dR = 2000., dZ = 2000.;
1065 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1068 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
1069 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
1071 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
1072 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
1073 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
1076 // Check dEdx and E/p of matched clusters
1078 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1081 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
1085 Float_t dEdx = track->GetTPCsignal();
1086 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
1088 Float_t eOverp = cluster->E()/track->P();
1089 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
1092 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
1097 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
1099 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1100 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
1101 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
1102 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
1103 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
1108 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1109 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
1110 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
1111 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
1112 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
1121 } // clusters array available
1125 //______________________________________________________
1126 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
1128 //Save parameters used for analysis
1129 TString parList ; //this will be list of parameters used for this analysis.
1130 const Int_t buffersize = 255;
1131 char onePar[buffersize] ;
1133 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
1135 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
1137 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
1139 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
1141 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
1143 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
1148 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
1150 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
1153 for(Int_t icone = 0; icone < fNCones ; icone++)
1155 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
1158 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1160 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
1163 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1165 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
1168 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1170 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
1175 //Get parameters set in base class.
1176 parList += GetBaseParametersList() ;
1178 //Get parameters set in IC class.
1179 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
1181 return new TObjString(parList) ;
1185 //________________________________________________________
1186 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
1188 // Create histograms to be saved in output file and
1189 // store them in outputContainer
1190 TList * outputContainer = new TList() ;
1191 outputContainer->SetName("IsolatedParticleHistos") ;
1193 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
1194 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
1195 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
1196 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
1197 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
1198 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
1199 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
1200 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
1201 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
1202 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
1203 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
1204 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
1205 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
1206 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
1207 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
1209 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
1210 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
1211 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
1212 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
1213 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
1214 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
1216 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
1217 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
1218 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
1219 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
1220 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
1221 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
1223 Int_t nptsumbins = fHistoNPtSumBins;
1224 Float_t ptsummax = fHistoPtSumMax;
1225 Float_t ptsummin = fHistoPtSumMin;
1226 Int_t nptinconebins = fHistoNPtInConeBins;
1227 Float_t ptinconemax = fHistoPtInConeMax;
1228 Float_t ptinconemin = fHistoPtInConeMin;
1230 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
1231 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
1232 Float_t r = GetIsolationCut()->GetConeSize();
1234 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
1238 TString hName [] = {"NoIso",""};
1239 TString hTitle[] = {"Not isolated" ,"isolated"};
1241 fhEIso = new TH1F("hE",
1242 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1243 nptbins,ptmin,ptmax);
1244 fhEIso->SetYTitle("dN / dE");
1245 fhEIso->SetXTitle("E (GeV/c)");
1246 outputContainer->Add(fhEIso) ;
1248 fhPtIso = new TH1F("hPt",
1249 Form("Number of isolated particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1250 nptbins,ptmin,ptmax);
1251 fhPtIso->SetYTitle("dN / p_{T}");
1252 fhPtIso->SetXTitle("p_{T} (GeV/c)");
1253 outputContainer->Add(fhPtIso) ;
1255 fhPtCentralityIso = new TH2F("hPtCentrality","centrality vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,100);
1256 fhPtCentralityIso->SetYTitle("centrality");
1257 fhPtCentralityIso->SetXTitle("p_{T}(GeV/c)");
1258 outputContainer->Add(fhPtCentralityIso) ;
1260 fhPtEventPlaneIso = new TH2F("hPtEventPlane","event plane angle vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1261 fhPtEventPlaneIso->SetYTitle("Event plane angle (rad)");
1262 fhPtEventPlaneIso->SetXTitle("p_{T} (GeV/c)");
1263 outputContainer->Add(fhPtEventPlaneIso) ;
1266 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
1267 Form("Number of isolated particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f vs NLM, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1268 nptbins,ptmin,ptmax,10,0,10);
1269 fhPtNLocMaxIso->SetYTitle("NLM");
1270 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
1271 outputContainer->Add(fhPtNLocMaxIso) ;
1273 fhPhiIso = new TH2F("hPhi",
1274 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1275 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1276 fhPhiIso->SetYTitle("#phi");
1277 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
1278 outputContainer->Add(fhPhiIso) ;
1280 fhEtaIso = new TH2F("hEta",
1281 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1282 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1283 fhEtaIso->SetYTitle("#eta");
1284 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
1285 outputContainer->Add(fhEtaIso) ;
1287 fhEtaPhiIso = new TH2F("hEtaPhiIso",
1288 Form("Number of isolated particles #eta vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1289 netabins,etamin,etamax,nphibins,phimin,phimax);
1290 fhEtaPhiIso->SetXTitle("#eta");
1291 fhEtaPhiIso->SetYTitle("#phi");
1292 outputContainer->Add(fhEtaPhiIso) ;
1294 fhPtDecayIso = new TH1F("hPtDecayIso",
1295 Form("Number of isolated #pi^{0} decay particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1296 nptbins,ptmin,ptmax);
1297 fhPtDecayIso->SetYTitle("N");
1298 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
1299 outputContainer->Add(fhPtDecayIso) ;
1301 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
1302 Form("Number of isolated Pi0 decay particles #eta vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1303 netabins,etamin,etamax,nphibins,phimin,phimax);
1304 fhEtaPhiDecayIso->SetXTitle("#eta");
1305 fhEtaPhiDecayIso->SetYTitle("#phi");
1306 outputContainer->Add(fhEtaPhiDecayIso) ;
1308 fhConeSumPt = new TH2F("hConePtSum",
1309 Form("Track and Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1310 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1311 fhConeSumPt->SetYTitle("#Sigma p_{T}");
1312 fhConeSumPt->SetXTitle("p_{T, trigger} (GeV/c)");
1313 outputContainer->Add(fhConeSumPt) ;
1315 fhConeSumPtTrigEtaPhi = new TH2F("hConePtSumTrigEtaPhi",
1316 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
1317 netabins,etamin,etamax,nphibins,phimin,phimax);
1318 fhConeSumPtTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1319 fhConeSumPtTrigEtaPhi->SetXTitle("#eta_{trigger}");
1320 fhConeSumPtTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1321 outputContainer->Add(fhConeSumPtTrigEtaPhi) ;
1323 fhPtInCone = new TH2F("hPtInCone",
1324 Form("p_{T} of clusters and tracks in isolation cone for R = %2.2f",r),
1325 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1326 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
1327 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
1328 outputContainer->Add(fhPtInCone) ;
1330 fhPtInConeCent = new TH2F("hPtInConeCent",
1331 Form("p_{T} in isolation cone for R = %2.2f",r),
1332 100,0,100,nptinconebins,ptinconemin,ptinconemax);
1333 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
1334 fhPtInConeCent->SetXTitle("centrality");
1335 outputContainer->Add(fhPtInConeCent) ;
1337 // Cluster only histograms
1338 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyCharged)
1340 fhConeSumPtCluster = new TH2F("hConePtSumCluster",
1341 Form("Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1342 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1343 fhConeSumPtCluster->SetYTitle("#Sigma p_{T}");
1344 fhConeSumPtCluster->SetXTitle("p_{T, trigger} (GeV/c)");
1345 outputContainer->Add(fhConeSumPtCluster) ;
1347 fhConeSumPtCell = new TH2F("hConePtSumCell",
1348 Form("Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
1349 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1350 fhConeSumPtCell->SetYTitle("#Sigma p_{T}");
1351 fhConeSumPtCell->SetXTitle("p_{T, trigger} (GeV/c)");
1352 outputContainer->Add(fhConeSumPtCell) ;
1354 fhConeSumPtEtaBandUECluster = new TH2F("hConePtSumEtaBandUECluster",
1355 "#Sigma cluster p_{T} in UE Eta Band",
1356 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1357 fhConeSumPtEtaBandUECluster->SetYTitle("#Sigma p_{T}");
1358 fhConeSumPtEtaBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1359 outputContainer->Add(fhConeSumPtEtaBandUECluster) ;
1361 fhConeSumPtPhiBandUECluster = new TH2F("hConePtSumPhiBandUECluster",
1362 "#Sigma cluster p_{T} UE Phi Band",
1363 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1364 fhConeSumPtPhiBandUECluster->SetYTitle("#Sigma p_{T}");
1365 fhConeSumPtPhiBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1366 outputContainer->Add(fhConeSumPtPhiBandUECluster) ;
1368 fhConeSumPtEtaBandUEClusterTrigEtaPhi = new TH2F("hConePtSumEtaBandUEClusterTrigEtaPhi",
1369 "Trigger #eta vs #phi, #Sigma cluster p_{T} in UE Eta Band",
1370 netabins,etamin,etamax,nphibins,phimin,phimax);
1371 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1372 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1373 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1374 outputContainer->Add(fhConeSumPtEtaBandUEClusterTrigEtaPhi) ;
1376 fhConeSumPtPhiBandUEClusterTrigEtaPhi = new TH2F("hConePtSumPhiBandUEClusterTrigEtaPhi",
1377 "Trigger #eta vs #phi, #Sigma cluster p_{T} UE Phi Band",
1378 netabins,etamin,etamax,nphibins,phimin,phimax);
1379 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1380 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1381 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1382 outputContainer->Add(fhConeSumPtPhiBandUEClusterTrigEtaPhi) ;
1385 fhConeSumPtEtaBandUECell = new TH2F("hConePtSumEtaBandUECell",
1386 "#Sigma cell p_{T} in UE Eta Band",
1387 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1388 fhConeSumPtEtaBandUECell->SetYTitle("#Sigma p_{T}");
1389 fhConeSumPtEtaBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1390 outputContainer->Add(fhConeSumPtEtaBandUECell) ;
1392 fhConeSumPtPhiBandUECell = new TH2F("hConePtSumPhiBandUECell",
1393 "#Sigma cell p_{T} UE Phi Band",
1394 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1395 fhConeSumPtPhiBandUECell->SetYTitle("#Sigma p_{T}");
1396 fhConeSumPtPhiBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1397 outputContainer->Add(fhConeSumPtPhiBandUECell) ;
1399 fhConeSumPtEtaBandUECellTrigEtaPhi = new TH2F("hConePtSumEtaBandUECellTrigEtaPhi",
1400 "Trigger #eta vs #phi, #Sigma cell p_{T} in UE Eta Band",
1401 netabins,etamin,etamax,nphibins,phimin,phimax);
1402 fhConeSumPtEtaBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1403 fhConeSumPtEtaBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1404 fhConeSumPtEtaBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1405 outputContainer->Add(fhConeSumPtEtaBandUECellTrigEtaPhi) ;
1407 fhConeSumPtPhiBandUECellTrigEtaPhi = new TH2F("hConePtSumPhiBandUECellTrigEtaPhi",
1408 "Trigger #eta vs #phi, #Sigma cell p_{T} UE Phi Band",
1409 netabins,etamin,etamax,nphibins,phimin,phimax);
1410 fhConeSumPtPhiBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1411 fhConeSumPtPhiBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1412 fhConeSumPtPhiBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1413 outputContainer->Add(fhConeSumPtPhiBandUECellTrigEtaPhi) ;
1416 fhPtClusterInCone = new TH2F("hPtClusterInCone",
1417 Form("p_{T} of clusters in isolation cone for R = %2.2f",r),
1418 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1419 fhPtClusterInCone->SetYTitle("p_{T in cone} (GeV/c)");
1420 fhPtClusterInCone->SetXTitle("p_{T} (GeV/c)");
1421 outputContainer->Add(fhPtClusterInCone) ;
1423 fhEtaBandCluster = new TH2F("hEtaBandCluster",
1424 Form("#eta vs #phi of clusters in #eta band isolation cone for R = %2.2f",r),
1425 netabins,-1,1,nphibins,0,TMath::TwoPi());
1426 fhEtaBandCluster->SetXTitle("#eta");
1427 fhEtaBandCluster->SetYTitle("#phi");
1428 outputContainer->Add(fhEtaBandCluster) ;
1430 fhPhiBandCluster = new TH2F("hPhiBandCluster",
1431 Form("#eta vs #phi of clusters in #phi band isolation cone for R = %2.2f",r),
1432 netabins,-1,1,nphibins,0,TMath::TwoPi());
1433 fhPhiBandCluster->SetXTitle("#eta");
1434 fhPhiBandCluster->SetYTitle("#phi");
1435 outputContainer->Add(fhPhiBandCluster) ;
1437 fhPtCellInCone = new TH2F("hPtCellInCone",
1438 Form("p_{T} of cells in isolation cone for R = %2.2f",r),
1439 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1440 fhPtCellInCone->SetYTitle("p_{T in cone} (GeV/c)");
1441 fhPtCellInCone->SetXTitle("p_{T} (GeV/c)");
1442 outputContainer->Add(fhPtCellInCone) ;
1444 fhEtaBandCell = new TH2F("hEtaBandCell",
1445 Form("#eta vs #phi of cells in #eta band isolation cone for R = %2.2f",r),
1446 netabins,-1,1,nphibins,0,TMath::TwoPi());
1447 fhEtaBandCell->SetXTitle("#eta");
1448 fhEtaBandCell->SetYTitle("#phi");
1449 outputContainer->Add(fhEtaBandCell) ;
1451 fhPhiBandCell = new TH2F("hPhiBandCell",
1452 Form("#eta vs #phi of cells in #phi band isolation cone for R = %2.2f",r),
1453 netabins,-1,1,nphibins,0,TMath::TwoPi());
1454 fhPhiBandCell->SetXTitle("#eta");
1455 fhPhiBandCell->SetYTitle("#phi");
1456 outputContainer->Add(fhPhiBandCell) ;
1458 fhConeSumPtEtaUESubCluster = new TH2F("hConeSumPtEtaUESubCluster",
1459 Form("Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1460 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1461 fhConeSumPtEtaUESubCluster->SetYTitle("#Sigma p_{T}");
1462 fhConeSumPtEtaUESubCluster->SetXTitle("p_{T} (GeV/c)");
1463 outputContainer->Add(fhConeSumPtEtaUESubCluster) ;
1465 fhConeSumPtPhiUESubCluster = new TH2F("hConeSumPtPhiUESubCluster",
1466 Form("Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1467 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1468 fhConeSumPtPhiUESubCluster->SetYTitle("#Sigma p_{T}");
1469 fhConeSumPtPhiUESubCluster->SetXTitle("p_{T} (GeV/c)");
1470 outputContainer->Add(fhConeSumPtPhiUESubCluster) ;
1472 fhConeSumPtEtaUESubClusterTrigEtaPhi = new TH2F("hConeSumPtEtaUESubClusterTrigEtaPhi",
1473 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1474 netabins,etamin,etamax,nphibins,phimin,phimax);
1475 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1476 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1477 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1478 outputContainer->Add(fhConeSumPtEtaUESubClusterTrigEtaPhi) ;
1480 fhConeSumPtPhiUESubClusterTrigEtaPhi = new TH2F("hConeSumPtPhiUESubClusterTrigEtaPhi",
1481 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1482 netabins,etamin,etamax,nphibins,phimin,phimax);
1483 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1484 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1485 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1486 outputContainer->Add(fhConeSumPtPhiUESubClusterTrigEtaPhi) ;
1489 fhConeSumPtEtaUESubCell = new TH2F("hConeSumPtEtaUESubCell",
1490 Form("Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1491 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1492 fhConeSumPtEtaUESubCell->SetYTitle("#Sigma p_{T}");
1493 fhConeSumPtEtaUESubCell->SetXTitle("p_{T} (GeV/c)");
1494 outputContainer->Add(fhConeSumPtEtaUESubCell) ;
1496 fhConeSumPtPhiUESubCell = new TH2F("hConeSumPtPhiUESubCell",
1497 Form("Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1498 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1499 fhConeSumPtPhiUESubCell->SetYTitle("#Sigma p_{T}");
1500 fhConeSumPtPhiUESubCell->SetXTitle("p_{T} (GeV/c)");
1501 outputContainer->Add(fhConeSumPtPhiUESubCell) ;
1503 fhConeSumPtEtaUESubCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubCellTrigEtaPhi",
1504 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1505 netabins,etamin,etamax,nphibins,phimin,phimax);
1506 fhConeSumPtEtaUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1507 fhConeSumPtEtaUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1508 fhConeSumPtEtaUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1509 outputContainer->Add(fhConeSumPtEtaUESubCellTrigEtaPhi) ;
1511 fhConeSumPtPhiUESubCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubCellTrigEtaPhi",
1512 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1513 netabins,etamin,etamax,nphibins,phimin,phimax);
1514 fhConeSumPtPhiUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1515 fhConeSumPtPhiUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1516 fhConeSumPtPhiUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1517 outputContainer->Add(fhConeSumPtPhiUESubCellTrigEtaPhi) ;
1520 fhFractionClusterOutConeEta = new TH2F("hFractionClusterOutConeEta",
1521 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance",r),
1522 nptbins,ptmin,ptmax,100,0,1);
1523 fhFractionClusterOutConeEta->SetYTitle("fraction");
1524 fhFractionClusterOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1525 outputContainer->Add(fhFractionClusterOutConeEta) ;
1527 fhFractionClusterOutConeEtaTrigEtaPhi = new TH2F("hFractionClusterOutConeEtaTrigEtaPhi",
1528 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance, in trigger #eta-#phi ",r),
1529 netabins,etamin,etamax,nphibins,phimin,phimax);
1530 fhFractionClusterOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1531 fhFractionClusterOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1532 fhFractionClusterOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1533 outputContainer->Add(fhFractionClusterOutConeEtaTrigEtaPhi) ;
1535 fhFractionClusterOutConePhi = new TH2F("hFractionClusterOutConePhi",
1536 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance",r),
1537 nptbins,ptmin,ptmax,100,0,1);
1538 fhFractionClusterOutConePhi->SetYTitle("fraction");
1539 fhFractionClusterOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1540 outputContainer->Add(fhFractionClusterOutConePhi) ;
1542 fhFractionClusterOutConePhiTrigEtaPhi = new TH2F("hFractionClusterOutConePhiTrigEtaPhi",
1543 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance, in trigger #eta-#phi ",r),
1544 netabins,etamin,etamax,nphibins,phimin,phimax);
1545 fhFractionClusterOutConePhiTrigEtaPhi->SetZTitle("fraction");
1546 fhFractionClusterOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1547 fhFractionClusterOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1548 outputContainer->Add(fhFractionClusterOutConePhiTrigEtaPhi) ;
1550 fhFractionCellOutConeEta = new TH2F("hFractionCellOutConeEta",
1551 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance",r),
1552 nptbins,ptmin,ptmax,100,0,1);
1553 fhFractionCellOutConeEta->SetYTitle("fraction");
1554 fhFractionCellOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1555 outputContainer->Add(fhFractionCellOutConeEta) ;
1557 fhFractionCellOutConeEtaTrigEtaPhi = new TH2F("hFractionCellOutConeEtaTrigEtaPhi",
1558 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance, in trigger #eta-#phi ",r),
1559 netabins,etamin,etamax,nphibins,phimin,phimax);
1560 fhFractionCellOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1561 fhFractionCellOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1562 fhFractionCellOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1563 outputContainer->Add(fhFractionCellOutConeEtaTrigEtaPhi) ;
1565 fhFractionCellOutConePhi = new TH2F("hFractionCellOutConePhi",
1566 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance",r),
1567 nptbins,ptmin,ptmax,100,0,1);
1568 fhFractionCellOutConePhi->SetYTitle("fraction");
1569 fhFractionCellOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1570 outputContainer->Add(fhFractionCellOutConePhi) ;
1572 fhFractionCellOutConePhiTrigEtaPhi = new TH2F("hFractionCellOutConePhiTrigEtaPhi",
1573 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance, in trigger #eta-#phi ",r),
1574 netabins,etamin,etamax,nphibins,phimin,phimax);
1575 fhFractionCellOutConePhiTrigEtaPhi->SetZTitle("fraction");
1576 fhFractionCellOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1577 fhFractionCellOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1578 outputContainer->Add(fhFractionCellOutConePhiTrigEtaPhi) ;
1581 // Track only histograms
1582 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
1584 fhConeSumPtTrack = new TH2F("hConePtSumTrack",
1585 Form("Track #Sigma p_{T} in isolation cone for R = %2.2f",r),
1586 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1587 fhConeSumPtTrack->SetYTitle("#Sigma p_{T}");
1588 fhConeSumPtTrack->SetXTitle("p_{T, trigger} (GeV/c)");
1589 outputContainer->Add(fhConeSumPtTrack) ;
1592 fhConeSumPtEtaBandUETrack = new TH2F("hConePtSumEtaBandUETrack",
1593 "#Sigma track p_{T} in UE Eta Band",
1594 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1595 fhConeSumPtEtaBandUETrack->SetYTitle("#Sigma p_{T}");
1596 fhConeSumPtEtaBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1597 outputContainer->Add(fhConeSumPtEtaBandUETrack) ;
1599 fhConeSumPtPhiBandUETrack = new TH2F("hConePtSumPhiBandUETrack",
1600 "#Sigma track p_{T} in UE Phi Band",
1601 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax*8);
1602 fhConeSumPtPhiBandUETrack->SetYTitle("#Sigma p_{T}");
1603 fhConeSumPtPhiBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1604 outputContainer->Add(fhConeSumPtPhiBandUETrack) ;
1607 fhConeSumPtEtaBandUETrackTrigEtaPhi = new TH2F("hConePtSumEtaBandUETrackTrigEtaPhi",
1608 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Eta Band",
1609 netabins,etamin,etamax,nphibins,phimin,phimax);
1610 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1611 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1612 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1613 outputContainer->Add(fhConeSumPtEtaBandUETrackTrigEtaPhi) ;
1615 fhConeSumPtPhiBandUETrackTrigEtaPhi = new TH2F("hConePtSumPhiBandUETrackTrigEtaPhi",
1616 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Phi Band",
1617 netabins,etamin,etamax,nphibins,phimin,phimax);
1618 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1619 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1620 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1621 outputContainer->Add(fhConeSumPtPhiBandUETrackTrigEtaPhi) ;
1624 fhPtTrackInCone = new TH2F("hPtTrackInCone",
1625 Form("p_{T} of tracks in isolation cone for R = %2.2f",r),
1626 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1627 fhPtTrackInCone->SetYTitle("p_{T in cone} (GeV/c)");
1628 fhPtTrackInCone->SetXTitle("p_{T} (GeV/c)");
1629 outputContainer->Add(fhPtTrackInCone) ;
1632 fhEtaBandTrack = new TH2F("hEtaBandTrack",
1633 Form("#eta vs #phi of tracks in #eta band isolation cone for R = %2.2f",r),
1634 netabins,-1,1,nphibins,0,TMath::TwoPi());
1635 fhEtaBandTrack->SetXTitle("#eta");
1636 fhEtaBandTrack->SetYTitle("#phi");
1637 outputContainer->Add(fhEtaBandTrack) ;
1639 fhPhiBandTrack = new TH2F("hPhiBandTrack",
1640 Form("#eta vs #phi of tracks in #phi band isolation cone for R = %2.2f",r),
1641 netabins,-1,1,nphibins,0,TMath::TwoPi());
1642 fhPhiBandTrack->SetXTitle("#eta");
1643 fhPhiBandTrack->SetYTitle("#phi");
1644 outputContainer->Add(fhPhiBandTrack) ;
1647 fhConeSumPtEtaUESubTrack = new TH2F("hConeSumPtEtaUESubTrack",
1648 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1649 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1650 fhConeSumPtEtaUESubTrack->SetYTitle("#Sigma p_{T}");
1651 fhConeSumPtEtaUESubTrack->SetXTitle("p_{T} (GeV/c)");
1652 outputContainer->Add(fhConeSumPtEtaUESubTrack) ;
1654 fhConeSumPtPhiUESubTrack = new TH2F("hConeSumPtPhiUESubTrack",
1655 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1656 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1657 fhConeSumPtPhiUESubTrack->SetYTitle("#Sigma p_{T}");
1658 fhConeSumPtPhiUESubTrack->SetXTitle("p_{T} (GeV/c)");
1659 outputContainer->Add(fhConeSumPtPhiUESubTrack) ;
1661 fhConeSumPtEtaUESubTrackTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackTrigEtaPhi",
1662 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1663 netabins,etamin,etamax,nphibins,phimin,phimax);
1664 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1665 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1666 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1667 outputContainer->Add(fhConeSumPtEtaUESubTrackTrigEtaPhi) ;
1669 fhConeSumPtPhiUESubTrackTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackTrigEtaPhi",
1670 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1671 netabins,etamin,etamax,nphibins,phimin,phimax);
1672 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1673 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1674 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1675 outputContainer->Add(fhConeSumPtPhiUESubTrackTrigEtaPhi) ;
1677 fhFractionTrackOutConeEta = new TH2F("hFractionTrackOutConeEta",
1678 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance",r),
1679 nptbins,ptmin,ptmax,100,0,1);
1680 fhFractionTrackOutConeEta->SetYTitle("fraction");
1681 fhFractionTrackOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1682 outputContainer->Add(fhFractionTrackOutConeEta) ;
1684 fhFractionTrackOutConeEtaTrigEtaPhi = new TH2F("hFractionTrackOutConeEtaTrigEtaPhi",
1685 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance, in trigger #eta-#phi ",r),
1686 netabins,etamin,etamax,nphibins,phimin,phimax);
1687 fhFractionTrackOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1688 fhFractionTrackOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1689 fhFractionTrackOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1690 outputContainer->Add(fhFractionTrackOutConeEtaTrigEtaPhi) ;
1692 // UE in perpendicular cone
1693 fhPerpConeSumPt = new TH2F("hPerpConePtSum",
1694 Form("#Sigma p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
1695 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1696 fhPerpConeSumPt->SetYTitle("#Sigma p_{T}");
1697 fhPerpConeSumPt->SetXTitle("p_{T} (GeV/c)");
1698 outputContainer->Add(fhPerpConeSumPt) ;
1700 fhPtInPerpCone = new TH2F("hPtInPerpCone",
1701 Form("p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
1702 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1703 fhPtInPerpCone->SetYTitle("p_{T in cone} (GeV/c)");
1704 fhPtInPerpCone->SetXTitle("p_{T} (GeV/c)");
1705 outputContainer->Add(fhPtInPerpCone) ;
1708 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
1710 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
1711 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1712 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1713 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
1714 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
1715 outputContainer->Add(fhConeSumPtEtaUESub) ;
1717 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
1718 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1719 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1720 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
1721 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
1722 outputContainer->Add(fhConeSumPtPhiUESub) ;
1724 fhConeSumPtEtaUESubTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrigEtaPhi",
1725 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1726 netabins,etamin,etamax,nphibins,phimin,phimax);
1727 fhConeSumPtEtaUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1728 fhConeSumPtEtaUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
1729 fhConeSumPtEtaUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1730 outputContainer->Add(fhConeSumPtEtaUESubTrigEtaPhi) ;
1732 fhConeSumPtPhiUESubTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrigEtaPhi",
1733 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1734 netabins,etamin,etamax,nphibins,phimin,phimax);
1735 fhConeSumPtPhiUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1736 fhConeSumPtPhiUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
1737 fhConeSumPtPhiUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1738 outputContainer->Add(fhConeSumPtPhiUESubTrigEtaPhi) ;
1740 fhConeSumPtClustervsTrack = new TH2F("hConePtSumClustervsTrack",
1741 Form("Track vs Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1742 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1743 fhConeSumPtClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1744 fhConeSumPtClustervsTrack->SetYTitle("#Sigma p_{T} track");
1745 outputContainer->Add(fhConeSumPtClustervsTrack) ;
1747 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
1748 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
1749 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1750 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1751 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1752 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
1754 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
1755 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
1756 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1757 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1758 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1759 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
1761 fhEtaBandClustervsTrack = new TH2F("hEtaBandClustervsTrack",
1762 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
1763 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1764 fhEtaBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1765 fhEtaBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
1766 outputContainer->Add(fhEtaBandClustervsTrack) ;
1768 fhPhiBandClustervsTrack = new TH2F("hPhiBandClustervsTrack",
1769 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
1770 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
1771 fhPhiBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1772 fhPhiBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
1773 outputContainer->Add(fhPhiBandClustervsTrack) ;
1775 fhEtaBandNormClustervsTrack = new TH2F("hEtaBandNormClustervsTrack",
1776 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
1777 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1778 fhEtaBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1779 fhEtaBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
1780 outputContainer->Add(fhEtaBandNormClustervsTrack) ;
1782 fhPhiBandNormClustervsTrack = new TH2F("hPhiBandNormClustervsTrack",
1783 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
1784 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1785 fhPhiBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1786 fhPhiBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
1787 outputContainer->Add(fhPhiBandNormClustervsTrack) ;
1791 fhConeSumPtCellTrack = new TH2F("hConePtSumCellTrack",
1792 Form("Track and Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
1793 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1794 fhConeSumPtCellTrack->SetYTitle("#Sigma p_{T}");
1795 fhConeSumPtCellTrack->SetXTitle("p_{T, trigger} (GeV/c)");
1796 outputContainer->Add(fhConeSumPtCellTrack) ;
1798 fhConeSumPtCellTrackTrigEtaPhi = new TH2F("hConePtSumCellTrackTrigEtaPhi",
1799 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
1800 netabins,etamin,etamax,nphibins,phimin,phimax);
1801 fhConeSumPtCellTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1802 fhConeSumPtCellTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1803 fhConeSumPtCellTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1804 outputContainer->Add(fhConeSumPtCellTrackTrigEtaPhi) ;
1807 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
1808 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
1809 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1810 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1811 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1812 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
1814 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
1815 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
1816 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1817 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1818 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1819 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
1821 fhConeSumPtCellvsTrack = new TH2F("hConePtSumCellvsTrack",
1822 Form("Track vs cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
1823 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1824 fhConeSumPtCellvsTrack->SetXTitle("#Sigma p_{T} cell");
1825 fhConeSumPtCellvsTrack->SetYTitle("#Sigma p_{T} track");
1826 outputContainer->Add(fhConeSumPtCellvsTrack) ;
1828 fhConeSumPtEtaUESubCellvsTrack = new TH2F("hConePtSumEtaUESubCellvsTrack",
1829 Form("Track vs Cell #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
1830 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1831 fhConeSumPtEtaUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
1832 fhConeSumPtEtaUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
1833 outputContainer->Add(fhConeSumPtEtaUESubCellvsTrack) ;
1835 fhConeSumPtPhiUESubCellvsTrack = new TH2F("hConePhiUESubPtSumCellvsTrack",
1836 Form("Track vs Cell #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
1837 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1838 fhConeSumPtPhiUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
1839 fhConeSumPtPhiUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
1840 outputContainer->Add(fhConeSumPtPhiUESubCellvsTrack) ;
1842 fhEtaBandCellvsTrack = new TH2F("hEtaBandCellvsTrack",
1843 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
1844 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1845 fhEtaBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
1846 fhEtaBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
1847 outputContainer->Add(fhEtaBandCellvsTrack) ;
1849 fhPhiBandCellvsTrack = new TH2F("hPhiBandCellvsTrack",
1850 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
1851 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
1852 fhPhiBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
1853 fhPhiBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
1854 outputContainer->Add(fhPhiBandCellvsTrack) ;
1856 fhEtaBandNormCellvsTrack = new TH2F("hEtaBandNormCellvsTrack",
1857 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
1858 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1859 fhEtaBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
1860 fhEtaBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
1861 outputContainer->Add(fhEtaBandNormCellvsTrack) ;
1863 fhPhiBandNormCellvsTrack = new TH2F("hPhiBandNormCellvsTrack",
1864 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
1865 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1866 fhPhiBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
1867 fhPhiBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
1868 outputContainer->Add(fhPhiBandNormCellvsTrack) ;
1870 fhConeSumPtEtaUESubTrackCell = new TH2F("hConeSumPtEtaUESubTrackCell",
1871 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1872 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1873 fhConeSumPtEtaUESubTrackCell->SetYTitle("#Sigma p_{T}");
1874 fhConeSumPtEtaUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
1875 outputContainer->Add(fhConeSumPtEtaUESubTrackCell) ;
1877 fhConeSumPtPhiUESubTrackCell = new TH2F("hConeSumPtPhiUESubTrackCell",
1878 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1879 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1880 fhConeSumPtPhiUESubTrackCell->SetYTitle("#Sigma p_{T}");
1881 fhConeSumPtPhiUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
1882 outputContainer->Add(fhConeSumPtPhiUESubTrackCell) ;
1884 fhConeSumPtEtaUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackCellTrigEtaPhi",
1885 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1886 netabins,etamin,etamax,nphibins,phimin,phimax);
1887 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1888 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1889 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1890 outputContainer->Add(fhConeSumPtEtaUESubTrackCellTrigEtaPhi) ;
1892 fhConeSumPtPhiUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackCellTrigEtaPhi",
1893 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1894 netabins,etamin,etamax,nphibins,phimin,phimax);
1895 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1896 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1897 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1898 outputContainer->Add(fhConeSumPtPhiUESubTrackCellTrigEtaPhi) ;
1904 fhELambda0SSBkg = new TH2F
1905 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1906 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
1907 fhELambda0SSBkg->SetXTitle("E (GeV)");
1908 outputContainer->Add(fhELambda0SSBkg) ;
1911 for(Int_t iso = 0; iso < 2; iso++)
1915 fhTrackMatchedDEta[iso] = new TH2F
1916 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
1917 Form("%s - d#eta of cluster-track vs cluster energy for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
1918 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1919 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
1920 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
1922 fhTrackMatchedDPhi[iso] = new TH2F
1923 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
1924 Form("%s - d#phi of cluster-track vs cluster energy for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
1925 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1926 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
1927 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
1929 fhTrackMatchedDEtaDPhi[iso] = new TH2F
1930 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
1931 Form("%s - d#eta vs d#phi of cluster-track for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
1932 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1933 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
1934 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
1936 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
1937 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
1938 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
1940 fhdEdx[iso] = new TH2F
1941 (Form("hdEdx%s",hName[iso].Data()),
1942 Form("%s - Matched track <dE/dx> vs cluster E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
1943 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
1944 fhdEdx[iso]->SetXTitle("E (GeV)");
1945 fhdEdx[iso]->SetYTitle("<dE/dx>");
1946 outputContainer->Add(fhdEdx[iso]);
1948 fhEOverP[iso] = new TH2F
1949 (Form("hEOverP%s",hName[iso].Data()),
1950 Form("%s - Matched track E/p vs cluster E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
1951 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
1952 fhEOverP[iso]->SetXTitle("E (GeV)");
1953 fhEOverP[iso]->SetYTitle("E/p");
1954 outputContainer->Add(fhEOverP[iso]);
1958 fhTrackMatchedMCParticle[iso] = new TH2F
1959 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
1960 Form("%s - Origin of particle vs energy vs cluster E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",hTitle[iso].Data(),r,ptthre,ptfrac),
1961 nptbins,ptmin,ptmax,8,0,8);
1962 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
1963 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
1965 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
1966 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
1967 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
1968 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
1969 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
1970 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
1971 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
1972 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
1974 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
1980 fhELambda0[iso] = new TH2F
1981 (Form("hELambda0%s",hName[iso].Data()),
1982 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1983 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
1984 fhELambda0[iso]->SetXTitle("E (GeV)");
1985 outputContainer->Add(fhELambda0[iso]) ;
1989 fhELambda0MCPhoton[iso] = new TH2F
1990 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
1991 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1992 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
1993 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
1994 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
1996 fhELambda0MCPi0[iso] = new TH2F
1997 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
1998 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1999 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
2000 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
2001 outputContainer->Add(fhELambda0MCPi0[iso]) ;
2003 fhELambda0MCPi0Decay[iso] = new TH2F
2004 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
2005 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2006 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
2007 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
2008 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
2010 fhELambda0MCEtaDecay[iso] = new TH2F
2011 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
2012 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2013 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2014 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
2015 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
2017 fhELambda0MCOtherDecay[iso] = new TH2F
2018 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
2019 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2020 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2021 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
2022 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
2024 fhELambda0MCHadron[iso] = new TH2F
2025 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
2026 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2027 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
2028 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
2029 outputContainer->Add(fhELambda0MCHadron[iso]) ;
2032 fhELambda1[iso] = new TH2F
2033 (Form("hELambda1%s",hName[iso].Data()),
2034 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2035 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
2036 fhELambda1[iso]->SetXTitle("E (GeV)");
2037 outputContainer->Add(fhELambda1[iso]) ;
2039 if(fCalorimeter=="EMCAL")
2041 fhELambda0TRD[iso] = new TH2F
2042 (Form("hELambda0TRD%s",hName[iso].Data()),
2043 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2044 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
2045 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
2046 outputContainer->Add(fhELambda0TRD[iso]) ;
2048 fhELambda1TRD[iso] = new TH2F
2049 (Form("hELambda1TRD%s",hName[iso].Data()),
2050 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2051 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
2052 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
2053 outputContainer->Add(fhELambda1TRD[iso]) ;
2056 fhNLocMax[iso] = new TH2F
2057 (Form("hNLocMax%s",hName[iso].Data()),
2058 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
2059 nptbins,ptmin,ptmax,10,0,10);
2060 fhNLocMax[iso]->SetYTitle("N maxima");
2061 fhNLocMax[iso]->SetXTitle("E (GeV)");
2062 outputContainer->Add(fhNLocMax[iso]) ;
2064 fhELambda0LocMax1[iso] = new TH2F
2065 (Form("hELambda0LocMax1%s",hName[iso].Data()),
2066 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2067 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
2068 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
2069 outputContainer->Add(fhELambda0LocMax1[iso]) ;
2071 fhELambda1LocMax1[iso] = new TH2F
2072 (Form("hELambda1LocMax1%s",hName[iso].Data()),
2073 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2074 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
2075 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
2076 outputContainer->Add(fhELambda1LocMax1[iso]) ;
2078 fhELambda0LocMax2[iso] = new TH2F
2079 (Form("hELambda0LocMax2%s",hName[iso].Data()),
2080 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2081 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
2082 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
2083 outputContainer->Add(fhELambda0LocMax2[iso]) ;
2085 fhELambda1LocMax2[iso] = new TH2F
2086 (Form("hELambda1LocMax2%s",hName[iso].Data()),
2087 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2088 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
2089 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
2090 outputContainer->Add(fhELambda1LocMax2[iso]) ;
2092 fhELambda0LocMaxN[iso] = new TH2F
2093 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
2094 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2095 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
2096 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
2097 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
2099 fhELambda1LocMaxN[iso] = new TH2F
2100 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
2101 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2102 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
2103 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
2104 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
2107 } // control histograms for isolated and non isolated objects
2110 if(fFillPileUpHistograms)
2112 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
2113 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0",r),
2114 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2115 fhPtTrackInConeOtherBC->SetYTitle("p_{T in cone} (GeV/c)");
2116 fhPtTrackInConeOtherBC->SetXTitle("p_{T} (GeV/c)");
2117 outputContainer->Add(fhPtTrackInConeOtherBC) ;
2119 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
2120 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0, pile-up from SPD",r),
2121 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2122 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2123 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("p_{T} (GeV/c)");
2124 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
2126 fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0",
2127 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2128 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2129 fhPtTrackInConeBC0->SetYTitle("p_{T in cone} (GeV/c)");
2130 fhPtTrackInConeBC0->SetXTitle("p_{T} (GeV/c)");
2131 outputContainer->Add(fhPtTrackInConeBC0) ;
2133 fhPtTrackInConeVtxBC0 = new TH2F("hPtTrackInConeVtxBC0",
2134 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2135 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2136 fhPtTrackInConeVtxBC0->SetYTitle("p_{T in cone} (GeV/c)");
2137 fhPtTrackInConeVtxBC0->SetXTitle("p_{T} (GeV/c)");
2138 outputContainer->Add(fhPtTrackInConeVtxBC0) ;
2141 fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD",
2142 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0, pile-up from SPD",r),
2143 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2144 fhPtTrackInConeBC0PileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2145 fhPtTrackInConeBC0PileUpSPD->SetXTitle("p_{T} (GeV/c)");
2146 outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ;
2149 for (Int_t i = 0; i < 7 ; i++)
2151 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
2152 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
2153 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2154 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/c)");
2155 fhPtInConePileUp[i]->SetXTitle("p_{T} (GeV/c)");
2156 outputContainer->Add(fhPtInConePileUp[i]) ;
2162 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
2163 fhPtIsoPrompt->SetYTitle("N");
2164 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
2165 outputContainer->Add(fhPtIsoPrompt) ;
2167 fhPhiIsoPrompt = new TH2F
2168 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2169 fhPhiIsoPrompt->SetYTitle("#phi");
2170 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2171 outputContainer->Add(fhPhiIsoPrompt) ;
2173 fhEtaIsoPrompt = new TH2F
2174 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2175 fhEtaIsoPrompt->SetYTitle("#eta");
2176 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2177 outputContainer->Add(fhEtaIsoPrompt) ;
2179 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
2180 fhPtIsoFragmentation->SetYTitle("N");
2181 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
2182 outputContainer->Add(fhPtIsoFragmentation) ;
2184 fhPhiIsoFragmentation = new TH2F
2185 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2186 fhPhiIsoFragmentation->SetYTitle("#phi");
2187 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2188 outputContainer->Add(fhPhiIsoFragmentation) ;
2190 fhEtaIsoFragmentation = new TH2F
2191 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2192 fhEtaIsoFragmentation->SetYTitle("#eta");
2193 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2194 outputContainer->Add(fhEtaIsoFragmentation) ;
2196 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2197 fhPtIsoPi0->SetYTitle("N");
2198 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
2199 outputContainer->Add(fhPtIsoPi0) ;
2201 fhPhiIsoPi0 = new TH2F
2202 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2203 fhPhiIsoPi0->SetYTitle("#phi");
2204 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2205 outputContainer->Add(fhPhiIsoPi0) ;
2207 fhEtaIsoPi0 = new TH2F
2208 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2209 fhEtaIsoPi0->SetYTitle("#eta");
2210 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2211 outputContainer->Add(fhEtaIsoPi0) ;
2213 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2214 fhPtIsoPi0Decay->SetYTitle("N");
2215 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
2216 outputContainer->Add(fhPtIsoPi0Decay) ;
2218 fhPhiIsoPi0Decay = new TH2F
2219 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2220 fhPhiIsoPi0Decay->SetYTitle("#phi");
2221 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2222 outputContainer->Add(fhPhiIsoPi0Decay) ;
2224 fhEtaIsoPi0Decay = new TH2F
2225 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2226 fhEtaIsoPi0Decay->SetYTitle("#eta");
2227 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2228 outputContainer->Add(fhEtaIsoPi0Decay) ;
2230 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
2231 fhPtIsoEtaDecay->SetYTitle("N");
2232 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2233 outputContainer->Add(fhPtIsoEtaDecay) ;
2235 fhPhiIsoEtaDecay = new TH2F
2236 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2237 fhPhiIsoEtaDecay->SetYTitle("#phi");
2238 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2239 outputContainer->Add(fhPhiIsoEtaDecay) ;
2241 fhEtaIsoEtaDecay = new TH2F
2242 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2243 fhEtaIsoEtaDecay->SetYTitle("#eta");
2244 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2245 outputContainer->Add(fhEtaIsoEtaDecay) ;
2247 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
2248 fhPtIsoOtherDecay->SetYTitle("N");
2249 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2250 outputContainer->Add(fhPtIsoOtherDecay) ;
2252 fhPhiIsoOtherDecay = new TH2F
2253 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2254 fhPhiIsoOtherDecay->SetYTitle("#phi");
2255 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2256 outputContainer->Add(fhPhiIsoOtherDecay) ;
2258 fhEtaIsoOtherDecay = new TH2F
2259 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2260 fhEtaIsoOtherDecay->SetYTitle("#eta");
2261 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2262 outputContainer->Add(fhEtaIsoOtherDecay) ;
2264 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
2265 // fhPtIsoConversion->SetYTitle("N");
2266 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
2267 // outputContainer->Add(fhPtIsoConversion) ;
2269 // fhPhiIsoConversion = new TH2F
2270 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2271 // fhPhiIsoConversion->SetYTitle("#phi");
2272 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2273 // outputContainer->Add(fhPhiIsoConversion) ;
2275 // fhEtaIsoConversion = new TH2F
2276 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2277 // fhEtaIsoConversion->SetYTitle("#eta");
2278 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2279 // outputContainer->Add(fhEtaIsoConversion) ;
2281 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
2282 fhPtIsoHadron->SetYTitle("N");
2283 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
2284 outputContainer->Add(fhPtIsoHadron) ;
2287 fhPhiIsoHadron = new TH2F
2288 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2289 fhPhiIsoHadron->SetYTitle("#phi");
2290 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
2291 outputContainer->Add(fhPhiIsoHadron) ;
2293 fhEtaIsoHadron = new TH2F
2294 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2295 fhEtaIsoHadron->SetYTitle("#eta");
2296 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
2297 outputContainer->Add(fhEtaIsoHadron) ;
2303 // Not Isolated histograms, reference histograms
2305 fhENoIso = new TH1F("hENoIso",
2306 Form("Number of not isolated leading particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2307 nptbins,ptmin,ptmax);
2308 fhENoIso->SetYTitle("N");
2309 fhENoIso->SetXTitle("E (GeV/c)");
2310 outputContainer->Add(fhENoIso) ;
2312 fhPtNoIso = new TH1F("hPtNoIso",
2313 Form("Number of not isolated leading particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2314 nptbins,ptmin,ptmax);
2315 fhPtNoIso->SetYTitle("N");
2316 fhPtNoIso->SetXTitle("p_{T} (GeV/c)");
2317 outputContainer->Add(fhPtNoIso) ;
2319 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
2320 Form("Number of not isolated particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f vs NLM, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2321 nptbins,ptmin,ptmax,10,0,10);
2322 fhPtNLocMaxNoIso->SetYTitle("NLM");
2323 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
2324 outputContainer->Add(fhPtNLocMaxNoIso) ;
2326 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
2327 Form("Number of not isolated leading particles #eta vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2328 netabins,etamin,etamax,nphibins,phimin,phimax);
2329 fhEtaPhiNoIso->SetXTitle("#eta");
2330 fhEtaPhiNoIso->SetYTitle("#phi");
2331 outputContainer->Add(fhEtaPhiNoIso) ;
2333 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
2334 Form("Number of not isolated leading pi0 decay particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2335 nptbins,ptmin,ptmax);
2336 fhPtDecayNoIso->SetYTitle("N");
2337 fhPtDecayNoIso->SetXTitle("p_{T} (GeV/c)");
2338 outputContainer->Add(fhPtDecayNoIso) ;
2340 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
2341 Form("Number of not isolated leading Pi0 decay particles #eta vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
2342 netabins,etamin,etamax,nphibins,phimin,phimax);
2343 fhEtaPhiDecayNoIso->SetXTitle("#eta");
2344 fhEtaPhiDecayNoIso->SetYTitle("#phi");
2345 outputContainer->Add(fhEtaPhiDecayNoIso) ;
2350 fhPtNoIsoPi0 = new TH1F
2351 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2352 fhPtNoIsoPi0->SetYTitle("N");
2353 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
2354 outputContainer->Add(fhPtNoIsoPi0) ;
2356 fhPtNoIsoPi0Decay = new TH1F
2357 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2358 fhPtNoIsoPi0Decay->SetYTitle("N");
2359 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
2360 outputContainer->Add(fhPtNoIsoPi0Decay) ;
2362 fhPtNoIsoEtaDecay = new TH1F
2363 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
2364 fhPtNoIsoEtaDecay->SetYTitle("N");
2365 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
2366 outputContainer->Add(fhPtNoIsoEtaDecay) ;
2368 fhPtNoIsoOtherDecay = new TH1F
2369 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
2370 fhPtNoIsoOtherDecay->SetYTitle("N");
2371 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
2372 outputContainer->Add(fhPtNoIsoOtherDecay) ;
2374 fhPtNoIsoPrompt = new TH1F
2375 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
2376 fhPtNoIsoPrompt->SetYTitle("N");
2377 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
2378 outputContainer->Add(fhPtNoIsoPrompt) ;
2380 fhPtIsoMCPhoton = new TH1F
2381 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
2382 fhPtIsoMCPhoton->SetYTitle("N");
2383 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2384 outputContainer->Add(fhPtIsoMCPhoton) ;
2386 fhPtNoIsoMCPhoton = new TH1F
2387 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
2388 fhPtNoIsoMCPhoton->SetYTitle("N");
2389 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2390 outputContainer->Add(fhPtNoIsoMCPhoton) ;
2392 // fhPtNoIsoConversion = new TH1F
2393 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
2394 // fhPtNoIsoConversion->SetYTitle("N");
2395 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
2396 // outputContainer->Add(fhPtNoIsoConversion) ;
2398 fhPtNoIsoFragmentation = new TH1F
2399 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
2400 fhPtNoIsoFragmentation->SetYTitle("N");
2401 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
2402 outputContainer->Add(fhPtNoIsoFragmentation) ;
2404 fhPtNoIsoHadron = new TH1F
2405 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
2406 fhPtNoIsoHadron->SetYTitle("N");
2407 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
2408 outputContainer->Add(fhPtNoIsoHadron) ;
2415 const Int_t buffersize = 255;
2416 char name[buffersize];
2417 char title[buffersize];
2418 for(Int_t icone = 0; icone<fNCones; icone++)
2420 // sum pt in cone vs. pt leading
2421 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
2422 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2423 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2424 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2425 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2426 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
2428 // pt in cone vs. pt leading
2429 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
2430 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2431 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2432 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2433 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2434 outputContainer->Add(fhPtLeadingPt[icone]) ;
2436 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
2437 snprintf(name, buffersize,"hPerpSumPtLeadingPt_Cone_%d",icone);
2438 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2439 fhPerpSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2440 fhPerpSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2441 fhPerpSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2442 outputContainer->Add(fhPerpSumPtLeadingPt[icone]) ;
2444 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
2445 snprintf(name, buffersize,"hPerpPtLeadingPt_Cone_%d",icone);
2446 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2447 fhPerpPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2448 fhPerpPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2449 fhPerpPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2450 outputContainer->Add(fhPerpPtLeadingPt[icone]) ;
2455 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
2456 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2457 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2458 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2459 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
2460 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
2462 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
2463 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
2464 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2465 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2466 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
2467 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
2469 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
2470 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2471 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2472 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2473 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
2474 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
2476 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
2477 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2478 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2479 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2480 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
2481 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
2483 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
2484 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2485 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2486 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2487 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2488 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
2490 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
2491 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2492 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2493 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2494 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2495 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
2497 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
2498 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2499 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2500 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2501 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
2502 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
2504 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
2505 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2506 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2507 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2508 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
2509 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
2513 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
2516 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
2517 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2518 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2519 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2520 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
2522 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
2523 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2524 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2525 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2526 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
2529 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
2530 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2531 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2532 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2533 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2534 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
2536 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
2537 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for density in R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2538 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2539 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2540 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2541 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
2543 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
2544 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for PtFracPtSum in R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2545 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2546 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2547 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2548 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
2550 // pt decays isolated
2551 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2552 snprintf(title, buffersize,"Isolated decay candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2553 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2554 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2555 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
2557 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2558 snprintf(title, buffersize,"Isolated decay candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2559 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2560 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2561 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
2563 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2564 snprintf(title, buffersize,"Isolated decay candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2565 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2566 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2567 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2568 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
2570 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2571 snprintf(title, buffersize,"Isolated decay candidate p_{T} distribution for density in R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2572 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2573 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2574 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2575 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
2577 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2578 snprintf(title, buffersize,"Isolated decay candidate p_{T} distribution for PtFracPtSum in R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2579 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2580 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2581 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2582 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
2586 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
2587 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2588 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2589 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
2590 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
2591 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
2593 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
2594 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2595 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2596 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
2597 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
2598 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
2600 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
2601 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2602 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2603 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
2604 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
2605 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
2607 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
2608 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for density R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2609 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2610 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
2611 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
2612 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
2614 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
2615 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for FracPtSum R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2616 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2617 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
2618 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
2619 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
2622 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2623 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2624 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2625 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
2626 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
2627 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
2629 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2630 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2631 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2632 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
2633 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
2634 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
2637 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2638 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2639 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2640 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2641 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2642 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
2644 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2645 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for density R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2646 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2647 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
2648 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
2649 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
2651 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2652 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for FracPtSum R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2653 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2654 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2655 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2656 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
2661 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
2662 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2663 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2664 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2665 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
2667 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
2668 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2669 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2670 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2671 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
2673 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
2674 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2675 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2676 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2677 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
2679 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
2680 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2681 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2682 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2683 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
2685 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
2686 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2687 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2688 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2689 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
2691 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
2692 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2693 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2694 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2695 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
2697 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
2698 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2699 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2700 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2701 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
2703 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
2704 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2705 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2706 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2707 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
2709 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
2710 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2711 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2712 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2713 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
2715 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
2716 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2717 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2718 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2719 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
2722 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
2723 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2724 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2725 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2726 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
2728 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
2729 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2730 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2731 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2732 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
2734 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
2735 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2736 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2737 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2738 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
2740 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
2741 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2742 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2743 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2744 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
2746 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
2747 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2748 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2749 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2750 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
2752 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
2753 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2754 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2755 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2756 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
2763 if(fFillPileUpHistograms)
2765 for (Int_t i = 0; i < 7 ; i++)
2767 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
2768 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f, pile-up event by %s",r,ptthre,ptfrac,pileUpName[i].Data()),
2769 nptbins,ptmin,ptmax);
2770 fhEIsoPileUp[i]->SetYTitle("dN / dE");
2771 fhEIsoPileUp[i]->SetXTitle("E (GeV)");
2772 outputContainer->Add(fhEIsoPileUp[i]) ;
2774 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
2775 Form("Number of isolated particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr}= %2.2f, pile-up event by %s ",r,ptthre,ptfrac,pileUpName[i].Data()),
2776 nptbins,ptmin,ptmax);
2777 fhPtIsoPileUp[i]->SetYTitle("dN / p_{T}");
2778 fhPtIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
2779 outputContainer->Add(fhPtIsoPileUp[i]) ;
2781 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
2782 Form("Number of not isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f, pile-up event by %s",r,ptthre,ptfrac,pileUpName[i].Data()),
2783 nptbins,ptmin,ptmax);
2784 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
2785 fhENoIsoPileUp[i]->SetXTitle("E (GeV)");
2786 outputContainer->Add(fhENoIsoPileUp[i]) ;
2788 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
2789 Form("Number of not isolated particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr}= %2.2f, pile-up event by %s ",r,ptthre,ptfrac,pileUpName[i].Data()),
2790 nptbins,ptmin,ptmax);
2791 fhPtNoIsoPileUp[i]->SetYTitle("dN / p_{T}");
2792 fhPtNoIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
2793 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
2796 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2797 fhTimeENoCut->SetXTitle("E (GeV)");
2798 fhTimeENoCut->SetYTitle("time (ns)");
2799 outputContainer->Add(fhTimeENoCut);
2801 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2802 fhTimeESPD->SetXTitle("E (GeV)");
2803 fhTimeESPD->SetYTitle("time (ns)");
2804 outputContainer->Add(fhTimeESPD);
2806 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
2807 fhTimeESPDMulti->SetXTitle("E (GeV)");
2808 fhTimeESPDMulti->SetYTitle("time (ns)");
2809 outputContainer->Add(fhTimeESPDMulti);
2811 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
2812 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
2813 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
2814 outputContainer->Add(fhTimeNPileUpVertSPD);
2816 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
2817 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
2818 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
2819 outputContainer->Add(fhTimeNPileUpVertTrack);
2821 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
2822 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
2823 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
2824 outputContainer->Add(fhTimeNPileUpVertContributors);
2826 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);
2827 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
2828 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
2829 outputContainer->Add(fhTimePileUpMainVertexZDistance);
2831 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
2832 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
2833 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
2834 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
2837 return outputContainer ;
2841 //__________________________________
2842 void AliAnaParticleIsolation::Init()
2844 // Do some checks and init stuff
2846 // In case of several cone and thresholds analysis, open the cuts for the filling of the
2847 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
2848 // The different cones, thresholds are tested for this list of tracks, clusters.
2851 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
2852 GetIsolationCut()->SetPtThreshold(100);
2853 GetIsolationCut()->SetPtFraction(100);
2854 GetIsolationCut()->SetConeSize(1);
2858 //____________________________________________
2859 void AliAnaParticleIsolation::InitParameters()
2862 //Initialize the parameters of the analysis.
2863 SetInputAODName("PWG4Particle");
2864 SetAODObjArrayName("IsolationCone");
2865 AddToHistogramsName("AnaIsolation_");
2867 fCalorimeter = "PHOS" ;
2868 fReMakeIC = kFALSE ;
2869 fMakeSeveralIC = kFALSE ;
2871 //----------- Several IC-----------------
2874 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
2875 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
2876 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
2877 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
2879 //------------- Histograms settings -------
2880 fHistoNPtSumBins = 100 ;
2881 fHistoPtSumMax = 50 ;
2882 fHistoPtSumMin = 0. ;
2884 fHistoNPtInConeBins = 100 ;
2885 fHistoPtInConeMax = 50 ;
2886 fHistoPtInConeMin = 0. ;
2890 //__________________________________________________
2891 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
2893 //Do analysis and fill aods
2894 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
2896 if(!GetInputAODBranch())
2898 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
2902 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
2904 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Wrong type of AOD object, change AOD class name in input AOD: It should be <AliAODPWG4ParticleCorrelation> and not <%s> \n",GetInputAODBranch()->GetClass()->GetName());
2908 Int_t n = 0, nfrac = 0;
2909 Bool_t isolated = kFALSE ;
2910 Float_t coneptsum = 0 ;
2911 TObjArray * pl = 0x0; ;
2913 //Select the calorimeter for candidate isolation with neutral particles
2914 if (fCalorimeter == "PHOS" )
2915 pl = GetPHOSClusters();
2916 else if (fCalorimeter == "EMCAL")
2917 pl = GetEMCALClusters();
2919 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
2920 Double_t ptLeading = 0. ;
2921 Int_t idLeading = -1 ;
2922 TLorentzVector mom ;
2923 Int_t naod = GetInputAODBranch()->GetEntriesFast();
2924 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
2926 for(Int_t iaod = 0; iaod < naod; iaod++)
2928 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
2930 //If too small or too large pt, skip
2931 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
2933 //check if it is low pt trigger particle
2934 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
2935 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
2938 continue ; //trigger should not come from underlying event
2941 //vertex cut in case of mixing
2942 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
2943 if(check == 0) continue;
2944 if(check == -1) return;
2946 //find the leading particles with highest momentum
2947 if ( aodinput->Pt() > ptLeading )
2949 ptLeading = aodinput->Pt() ;
2953 aodinput->SetLeadingParticle(kFALSE);
2955 }//finish searching for leading trigger particle
2957 // Check isolation of leading particle
2958 if(idLeading < 0) return;
2960 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
2961 aodinput->SetLeadingParticle(kTRUE);
2963 // Check isolation only of clusters in fiducial region
2964 if(IsFiducialCutOn())
2966 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
2970 //After cuts, study isolation
2971 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
2972 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
2973 GetReader(), GetCaloPID(),
2974 kTRUE, aodinput, GetAODObjArrayName(),
2975 n,nfrac,coneptsum, isolated);
2977 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
2981 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
2982 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
2987 //_________________________________________________________
2988 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
2990 //Do analysis and fill histograms
2992 //Loop on stored AOD
2993 Int_t naod = GetInputAODBranch()->GetEntriesFast();
2994 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
2996 for(Int_t iaod = 0; iaod < naod ; iaod++)
2998 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3000 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
3002 // Check isolation only of clusters in fiducial region
3003 if(IsFiducialCutOn())
3005 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
3006 if(! in ) continue ;
3009 Float_t pt = aod->Pt();
3010 //If too small or too large pt, skip
3011 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
3013 Bool_t isolated = aod->IsIsolated();
3014 Bool_t decay = aod->IsTagged();
3015 Float_t energy = aod->E();
3016 Float_t phi = aod->Phi();
3017 Float_t eta = aod->Eta();
3019 // --- In case of redoing isolation from delta AOD ----
3023 //Analysis of multiple IC at same time
3024 MakeSeveralICAnalysis(aod);
3029 //In case a more strict IC is needed in the produced AOD
3031 Int_t n = 0, nfrac = 0;
3032 Float_t coneptsum = 0 ;
3034 //Recover reference arrays with clusters and tracks
3035 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
3036 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
3038 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3039 GetReader(), GetCaloPID(),
3041 n,nfrac,coneptsum, isolated);
3043 fhConeSumPt ->Fill(pt, coneptsum);
3044 fhConeSumPtTrigEtaPhi->Fill(eta,phi,coneptsum);
3046 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
3050 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
3052 FillTrackMatchingShowerShapeControlHistograms(aod,GetReader(), GetCaloPID());
3054 //Fill pt/sum pT distribution of particles in cone or in UE band
3055 Float_t coneptsumCluster = 0;
3056 Float_t coneptsumTrack = 0;
3057 Float_t coneptsumCell = 0;
3059 CalculateTrackSignalInCone (aod,coneptsumTrack );
3060 CalculateCaloSignalInCone (aod,coneptsumCluster);
3061 CalculateCaloCellSignalInCone(aod,coneptsumCell );
3063 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
3065 fhConeSumPtClustervsTrack ->Fill(coneptsumCluster,coneptsumTrack);
3066 fhConeSumPtCellvsTrack ->Fill(coneptsumCell, coneptsumTrack);
3067 fhConeSumPtCellTrack ->Fill(pt, coneptsumTrack+coneptsumCell);
3068 fhConeSumPtCellTrackTrigEtaPhi->Fill(eta,phi,coneptsumTrack+coneptsumCell);
3071 fhConeSumPt ->Fill(pt, coneptsumTrack+coneptsumCluster);
3072 fhConeSumPtTrigEtaPhi ->Fill(eta,phi,coneptsumTrack+coneptsumCluster);
3075 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsumTrack+coneptsumCluster);
3077 //normalize phi/eta band per area unit
3078 CalculateNormalizeUEBandPerUnitArea(aod, coneptsumCluster, coneptsumCell, coneptsumTrack) ;
3081 Int_t mcTag = aod->GetTag() ;
3085 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
3087 // Fill histograms to undertand pile-up before other cuts applied
3088 // Remember to relax time cuts in the reader
3089 FillPileUpHistograms(aod->GetCaloLabel(0));
3091 fhEIso ->Fill(energy);
3093 fhPhiIso ->Fill(pt,phi);
3094 fhEtaIso ->Fill(pt,eta);
3095 fhEtaPhiIso ->Fill(eta,phi);
3097 fhPtNLocMaxIso ->Fill(pt,aod->GetFiducialArea()) ;
3098 fhPtCentralityIso ->Fill(pt,GetEventCentrality()) ;
3099 fhPtEventPlaneIso ->Fill(pt,GetEventPlaneAngle() ) ;
3103 fhPtDecayIso ->Fill(pt);
3104 fhEtaPhiDecayIso->Fill(eta,phi);
3107 if(fFillPileUpHistograms)
3109 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
3110 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
3111 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
3112 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
3113 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
3114 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
3115 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
3121 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
3123 fhPtIsoMCPhoton ->Fill(pt);
3126 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
3128 fhPtIsoPrompt ->Fill(pt);
3129 fhPhiIsoPrompt ->Fill(pt,phi);
3130 fhEtaIsoPrompt ->Fill(pt,eta);
3132 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
3134 fhPtIsoFragmentation ->Fill(pt);
3135 fhPhiIsoFragmentation ->Fill(pt,phi);
3136 fhEtaIsoFragmentation ->Fill(pt,eta);
3138 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
3140 fhPtIsoPi0 ->Fill(pt);
3141 fhPhiIsoPi0 ->Fill(pt,phi);
3142 fhEtaIsoPi0 ->Fill(pt,eta);
3144 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
3146 fhPtIsoPi0Decay ->Fill(pt);
3147 fhPhiIsoPi0Decay ->Fill(pt,phi);
3148 fhEtaIsoPi0Decay ->Fill(pt,eta);
3150 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
3152 fhPtIsoEtaDecay ->Fill(pt);
3153 fhPhiIsoEtaDecay ->Fill(pt,phi);
3154 fhEtaIsoEtaDecay ->Fill(pt,eta);
3156 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
3158 fhPtIsoOtherDecay ->Fill(pt);
3159 fhPhiIsoOtherDecay ->Fill(pt,phi);
3160 fhEtaIsoOtherDecay ->Fill(pt,eta);
3162 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
3164 // fhPtIsoConversion ->Fill(pt);
3165 // fhPhiIsoConversion ->Fill(pt,phi);
3166 // fhEtaIsoConversion ->Fill(pt,eta);
3168 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
3170 fhPtIsoHadron ->Fill(pt);
3171 fhPhiIsoHadron ->Fill(pt,phi);
3172 fhEtaIsoHadron ->Fill(pt,eta);
3174 }//Histograms with MC
3176 }//Isolated histograms
3177 else // NON isolated
3179 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
3181 fhENoIso ->Fill(energy);
3182 fhPtNoIso ->Fill(pt);
3183 fhEtaPhiNoIso ->Fill(eta,phi);
3184 fhPtNLocMaxNoIso->Fill(pt,aod->GetFiducialArea());
3186 if(fFillPileUpHistograms)
3188 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
3189 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
3190 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
3191 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
3192 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
3193 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
3194 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
3199 fhPtDecayNoIso ->Fill(pt);
3200 fhEtaPhiDecayNoIso->Fill(eta,phi);
3205 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
3206 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
3207 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
3208 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
3209 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
3210 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
3211 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
3212 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
3213 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
3220 //_____________________________________________________________________________________
3221 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
3224 //Isolation Cut Analysis for both methods and different pt cuts and cones
3225 Float_t ptC = ph->Pt();
3226 Float_t etaC = ph->Eta();
3227 Float_t phiC = ph->Phi();
3228 Int_t tag = ph->GetTag();
3229 Bool_t decay = ph->IsTagged();
3231 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
3233 //Keep original setting used when filling AODs, reset at end of analysis
3234 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
3235 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
3236 Float_t rorg = GetIsolationCut()->GetConeSize();
3238 Float_t coneptsum = 0 ;
3239 Int_t n [10][10];//[fNCones][fNPtThresFrac];
3240 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
3241 Bool_t isolated = kFALSE;
3243 Int_t nFracCone = 0;
3245 // fill hist with all particles before isolation criteria
3246 fhPtNoIso ->Fill(ptC);
3247 fhEtaPhiNoIso->Fill(etaC,phiC);
3251 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
3252 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
3253 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
3254 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
3255 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
3256 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
3257 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
3258 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
3259 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
3264 fhPtDecayNoIso ->Fill(ptC);
3265 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
3267 //Get vertex for photon momentum calculation
3268 Double_t vertex[] = {0,0,0} ; //vertex ;
3269 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
3270 GetReader()->GetVertex(vertex);
3272 //Loop on cone sizes
3273 for(Int_t icone = 0; icone<fNCones; icone++)
3275 //Recover reference arrays with clusters and tracks
3276 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
3277 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
3279 //If too small or too large pt, skip
3280 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
3282 //In case a more strict IC is needed in the produced AOD
3284 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
3286 GetIsolationCut()->SetSumPtThreshold(100);
3287 GetIsolationCut()->SetPtThreshold(100);
3288 GetIsolationCut()->SetPtFraction(100);
3289 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
3290 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3291 GetReader(), GetCaloPID(),
3293 nCone,nFracCone,coneptsum, isolated);
3296 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
3298 // retreive pt tracks to fill histo vs. pt leading
3299 //Fill pt distribution of particles in cone
3300 //fhPtLeadingPt(),fhPerpSumPtLeadingPt(),fhPerpPtLeadingPt(),
3304 Double_t sumptPerp = 0. ;
3305 TObjArray * trackList = GetCTSTracks() ;
3306 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
3308 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
3309 //fill the histograms at forward range
3312 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
3316 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
3317 Double_t dEta = etaC - track->Eta();
3318 Double_t arg = dPhi*dPhi + dEta*dEta;
3319 if(TMath::Sqrt(arg) < fConeSizes[icone])
3321 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3322 sumptPerp+=track->Pt();
3325 dPhi = phiC - track->Phi() - TMath::PiOver2();
3326 arg = dPhi*dPhi + dEta*dEta;
3327 if(TMath::Sqrt(arg) < fConeSizes[icone])
3329 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3330 sumptPerp+=track->Pt();
3334 fhPerpSumPtLeadingPt[icone]->Fill(ptC,sumptPerp);
3338 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
3340 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
3341 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3342 coneptsum+=track->Pt();
3349 TLorentzVector mom ;
3350 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
3352 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
3353 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
3355 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
3356 coneptsum+=mom.Pt();
3362 //Loop on ptthresholds
3363 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
3366 nfrac[icone][ipt]=0;
3367 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
3368 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
3369 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
3371 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3372 GetReader(), GetCaloPID(),
3374 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3376 if(!isolated) continue;
3377 //Normal ptThreshold cut
3379 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",
3380 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3381 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
3383 if(n[icone][ipt] == 0)
3385 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
3386 fhPtThresIsolated[icone][ipt]->Fill(ptC);
3387 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
3391 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
3392 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
3397 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3398 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3399 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3400 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3401 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3402 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3403 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3404 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
3408 // pt in cone fraction
3409 if(nfrac[icone][ipt] == 0)
3411 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
3412 fhPtFracIsolated[icone][ipt]->Fill(ptC);
3413 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
3417 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
3418 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
3423 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3424 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3425 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3426 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3427 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3428 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3429 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3430 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
3434 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
3436 //Pt threshold on pt cand/ sum in cone histograms
3437 if(coneptsum<fSumPtThresholds[ipt])
3438 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
3439 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
3440 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
3441 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
3444 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
3445 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
3449 // pt sum pt frac method
3450 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
3452 if(coneptsum < fPtFractions[ipt]*ptC)
3454 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
3455 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
3456 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
3460 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
3461 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
3466 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
3467 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
3468 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
3469 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
3470 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
3471 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
3475 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
3476 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
3484 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
3485 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
3486 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
3487 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
3488 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
3489 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
3490 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
3491 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
3496 //Reset original parameters for AOD analysis
3497 GetIsolationCut()->SetPtThreshold(ptthresorg);
3498 GetIsolationCut()->SetPtFraction(ptfracorg);
3499 GetIsolationCut()->SetConeSize(rorg);
3503 //_____________________________________________________________
3504 void AliAnaParticleIsolation::Print(const Option_t * opt) const
3507 //Print some relevant parameters set for the analysis
3511 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3512 AliAnaCaloTrackCorrBaseClass::Print(" ");
3514 printf("ReMake Isolation = %d \n", fReMakeIC) ;
3515 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
3516 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
3520 printf("N Cone Sizes = %d\n", fNCones) ;
3521 printf("Cone Sizes = \n") ;
3522 for(Int_t i = 0; i < fNCones; i++)
3523 printf(" %1.2f;", fConeSizes[i]) ;
3526 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
3527 printf(" pT thresholds = \n") ;
3528 for(Int_t i = 0; i < fNPtThresFrac; i++)
3529 printf(" %2.2f;", fPtThresholds[i]) ;
3533 printf(" pT fractions = \n") ;
3534 for(Int_t i = 0; i < fNPtThresFrac; i++)
3535 printf(" %2.2f;", fPtFractions[i]) ;
3539 printf("sum pT thresholds = \n") ;
3540 for(Int_t i = 0; i < fNPtThresFrac; i++)
3541 printf(" %2.2f;", fSumPtThresholds[i]) ;
3546 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
3547 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);