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),
113 fhConeSumPtSubvsConeSumPtTotPhiTrack(0), fhConeSumPtSubNormvsConeSumPtTotPhiTrack(0),
114 fhConeSumPtSubvsConeSumPtTotEtaTrack(0), fhConeSumPtSubNormvsConeSumPtTotEtaTrack(0),
115 fhConeSumPtSubvsConeSumPtTotPhiCluster(0), fhConeSumPtSubNormvsConeSumPtTotPhiCluster(0),
116 fhConeSumPtSubvsConeSumPtTotEtaCluster(0), fhConeSumPtSubNormvsConeSumPtTotEtaCluster(0),
117 fhConeSumPtSubvsConeSumPtTotPhiCell(0), fhConeSumPtSubNormvsConeSumPtTotPhiCell(0),
118 fhConeSumPtSubvsConeSumPtTotEtaCell(0), fhConeSumPtSubNormvsConeSumPtTotEtaCell(0),
120 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
121 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
122 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
123 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
124 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
125 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
126 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
127 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
128 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
129 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
130 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
131 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
132 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
133 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
134 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
135 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
136 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
137 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
138 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
139 //fhPtNoIsoConversion(0),
140 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
142 fhSumPtLeadingPt(), fhPtLeadingPt(),
143 fhPerpSumPtLeadingPt(), fhPerpPtLeadingPt(),
144 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
145 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
146 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
147 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
148 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
149 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
150 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
151 // Cluster control histograms
152 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
153 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
154 fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
155 fhELambda0TRD(), fhELambda1TRD(),
156 fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
157 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
158 // Number of local maxima in cluster
160 fhELambda0LocMax1(), fhELambda1LocMax1(),
161 fhELambda0LocMax2(), fhELambda1LocMax2(),
162 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
164 fhEIsoPileUp(), fhPtIsoPileUp(),
165 fhENoIsoPileUp(), fhPtNoIsoPileUp(),
166 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
167 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
168 fhTimeNPileUpVertContributors(0),
169 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
170 // Histograms settings
171 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
172 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
176 //Initialize parameters
179 for(Int_t i = 0; i < 5 ; i++)
183 fhPtSumIsolatedPrompt [i] = 0 ;
184 fhPtSumIsolatedFragmentation[i] = 0 ;
185 fhPtSumIsolatedPi0Decay [i] = 0 ;
186 fhPtSumIsolatedPi0 [i] = 0 ;
187 fhPtSumIsolatedEtaDecay [i] = 0 ;
188 fhPtSumIsolatedOtherDecay [i] = 0 ;
189 // fhPtSumIsolatedConversion [i] = 0 ;
190 fhPtSumIsolatedHadron [i] = 0 ;
192 for(Int_t j = 0; j < 5 ; j++)
194 fhPtThresIsolated [i][j] = 0 ;
195 fhPtFracIsolated [i][j] = 0 ;
196 fhPtSumIsolated [i][j] = 0 ;
198 fhEtaPhiPtThresIso [i][j] = 0 ;
199 fhEtaPhiPtThresDecayIso [i][j] = 0 ;
200 fhPtPtThresDecayIso [i][j] = 0 ;
202 fhEtaPhiPtFracIso [i][j] = 0 ;
203 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
204 fhPtPtFracDecayIso [i][j] = 0 ;
205 fhPtPtSumDecayIso [i][j] = 0 ;
206 fhPtSumDensityIso [i][j] = 0 ;
207 fhPtSumDensityDecayIso [i][j] = 0 ;
208 fhEtaPhiSumDensityIso [i][j] = 0 ;
209 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
210 fhPtFracPtSumIso [i][j] = 0 ;
211 fhPtFracPtSumDecayIso [i][j] = 0 ;
212 fhEtaPhiFracPtSumIso [i][j] = 0 ;
213 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
215 fhPtThresIsolatedPrompt [i][j] = 0 ;
216 fhPtThresIsolatedFragmentation[i][j] = 0 ;
217 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
218 fhPtThresIsolatedPi0 [i][j] = 0 ;
219 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
220 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
221 // fhPtThresIsolatedConversion [i][j] = 0 ;
222 fhPtThresIsolatedHadron [ i][j] = 0 ;
224 fhPtFracIsolatedPrompt [i][j] = 0 ;
225 fhPtFracIsolatedFragmentation [i][j] = 0 ;
226 fhPtFracIsolatedPi0 [i][j] = 0 ;
227 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
228 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
229 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
230 // fhPtFracIsolatedConversion [i][j] = 0 ;
231 fhPtFracIsolatedHadron [i][j] = 0 ;
236 for(Int_t i = 0; i < 5 ; i++)
238 fPtFractions [i] = 0 ;
239 fPtThresholds [i] = 0 ;
240 fSumPtThresholds[i] = 0 ;
244 for(Int_t i = 0; i < 2 ; i++)
246 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
247 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
248 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
249 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
251 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
252 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
255 // Number of local maxima in cluster
257 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
258 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
259 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
265 for(Int_t i = 0 ; i < 7 ; i++)
267 fhPtInConePileUp[i] = 0 ;
268 fhEIsoPileUp [i] = 0 ;
269 fhPtIsoPileUp [i] = 0 ;
270 fhENoIsoPileUp [i] = 0 ;
271 fhPtNoIsoPileUp [i] = 0 ;
276 //_______________________________________________________________________________________________
277 void AliAnaParticleIsolation::CalculateCaloUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
278 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
280 // Get the clusters pT or sum of pT in phi/eta bands or at 45 degrees from trigger
282 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
284 Float_t conesize = GetIsolationCut()->GetConeSize();
287 //Select the Calorimeter
288 TObjArray * pl = 0x0;
289 if (fCalorimeter == "PHOS" )
290 pl = GetPHOSClusters();
291 else if (fCalorimeter == "EMCAL")
292 pl = GetEMCALClusters();
296 //Get vertex for cluster momentum calculation
297 Double_t vertex[] = {0,0,0} ; //vertex ;
298 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
299 GetReader()->GetVertex(vertex);
301 Float_t ptTrig = pCandidate->Pt() ;
302 Float_t phiTrig = pCandidate->Phi();
303 Float_t etaTrig = pCandidate->Eta();
305 for(Int_t icluster=0; icluster < pl->GetEntriesFast(); icluster++)
307 AliVCluster* cluster = (AliVCluster *) pl->At(icluster);
311 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Cluster not available?");
315 //Do not count the candidate (photon or pi0) or the daughters of the candidate
316 if(cluster->GetID() == pCandidate->GetCaloLabel(0) ||
317 cluster->GetID() == pCandidate->GetCaloLabel(1) ) continue ;
319 //Remove matched clusters to tracks if Neutral and Track info is used
320 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged &&
321 IsTrackMatched(cluster,GetReader()->GetInputEvent())) continue ;
323 cluster->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
325 //exclude particles in cone
326 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, mom.Eta(), mom.Phi());
327 if(rad < conesize) continue ;
329 //fill histogram for UE in phi band in EMCal acceptance
330 if(mom.Eta() > (etaTrig-conesize) && mom.Eta() < (etaTrig+conesize))
332 phiBandPtSum+=mom.Pt();
333 fhPhiBandCluster->Fill(mom.Eta(),mom.Phi());
336 //fill histogram for UE in eta band in EMCal acceptance
337 if(mom.Phi() > (phiTrig-conesize) && mom.Phi() < (phiTrig+conesize))
339 etaBandPtSum+=mom.Pt();
340 fhEtaBandCluster->Fill(mom.Eta(),mom.Phi());
344 fhConeSumPtEtaBandUECluster ->Fill(ptTrig , etaBandPtSum);
345 fhConeSumPtPhiBandUECluster ->Fill(ptTrig , phiBandPtSum);
346 fhConeSumPtEtaBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
347 fhConeSumPtPhiBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
351 //________________________________________________________________________________________________
352 void AliAnaParticleIsolation::CalculateCaloCellUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
353 Float_t & etaBandPtSumCells, Float_t & phiBandPtSumCells)
355 // Get the cells amplitude or sum of amplitude in phi/eta bands or at 45 degrees from trigger
357 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
359 Float_t conesize = GetIsolationCut()->GetConeSize();
361 Float_t phiTrig = pCandidate->Phi();
362 if(phiTrig<0) phiTrig += TMath::TwoPi();
363 Float_t etaTrig = pCandidate->Eta();
365 if(pCandidate->GetDetector()=="EMCAL")
367 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
370 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
372 if(!eGeom->CheckAbsCellId(absId)) return ;
374 // Get absolute (col,row) of trigger particle
375 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
377 Int_t imEta=-1, imPhi=-1;
378 Int_t ieta =-1, iphi =-1;
380 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
382 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
384 Int_t colTrig = ieta;
385 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + ieta ;
386 Int_t rowTrig = iphi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
388 Int_t sqrSize = int(conesize/0.0143);
390 AliVCaloCells * cells = GetEMCALCells();
392 Int_t nTotalRows = AliEMCALGeoParams::fgkEMCALRows*int(10+2./3.) ; // 10 SM + 2 third SM
394 // Loop on cells in eta band
395 for(Int_t irow = rowTrig-sqrSize; irow < rowTrig+sqrSize; irow++)
397 for(Int_t icol = 0; icol < 2*AliEMCALGeoParams::fgkEMCALCols; icol++)
399 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
402 if(icol < AliEMCALGeoParams::fgkEMCALCols)
404 inSupMod = inSector + 1;
407 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
410 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
413 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
415 // Exclude cells in cone
416 if(TMath::Abs(icol-colTrig) < sqrSize) continue ;
417 if(TMath::Abs(irow-rowTrig) < sqrSize) continue ;
419 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
420 if(!eGeom->CheckAbsCellId(iabsId)) continue;
421 etaBandPtSumCells += cells->GetCellAmplitude(iabsId);
425 // Loop on cells in phi band
426 for(Int_t icol = colTrig-sqrSize; icol < colTrig+sqrSize; icol++)
428 for(Int_t irow = 0; irow < nTotalRows; irow++)
430 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
433 if(icol < AliEMCALGeoParams::fgkEMCALCols)
435 inSupMod = inSector + 1;
438 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
441 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
444 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
446 // Exclude cells in cone
447 if(TMath::Abs(icol-colTrig) < sqrSize) continue ;
448 if(TMath::Abs(irow-rowTrig) < sqrSize) continue ;
450 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
451 if(!eGeom->CheckAbsCellId(iabsId)) continue;
452 phiBandPtSumCells += cells->GetCellAmplitude(iabsId);
459 Float_t ptTrig = pCandidate->Pt();
461 fhConeSumPtEtaBandUECell ->Fill(ptTrig , etaBandPtSumCells);
462 fhConeSumPtPhiBandUECell ->Fill(ptTrig , phiBandPtSumCells);
463 fhConeSumPtEtaBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSumCells);
464 fhConeSumPtPhiBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSumCells);
468 //________________________________________________________________________________________________
469 void AliAnaParticleIsolation::CalculateTrackUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
470 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
472 // Get the track pT or sum of pT in phi/eta bands or at 45 degrees from trigger
474 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
476 Float_t conesize = GetIsolationCut()->GetConeSize();
478 Double_t sumptPerp= 0. ;
479 Float_t ptTrig = pCandidate->Pt() ;
480 Float_t phiTrig = pCandidate->Phi();
481 Float_t etaTrig = pCandidate->Eta();
483 TObjArray * trackList = GetCTSTracks() ;
484 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
486 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
490 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
494 //Do not count the candidate (pion, conversion photon) or the daughters of the candidate
495 if(track->GetID() == pCandidate->GetTrackLabel(0) || track->GetID() == pCandidate->GetTrackLabel(1) ||
496 track->GetID() == pCandidate->GetTrackLabel(2) || track->GetID() == pCandidate->GetTrackLabel(3) ) continue ;
498 //exclude particles in cone
499 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, track->Eta(), track->Phi());
500 if(rad < conesize) continue ;
502 //fill histogram for UE in phi band
503 if(track->Eta() > (etaTrig-conesize) && track->Eta() < (etaTrig+conesize))
505 phiBandPtSum+=track->Pt();
506 fhPhiBandTrack->Fill(track->Eta(),track->Phi());
509 //fill histogram for UE in eta band in EMCal acceptance
510 if(track->Phi() > (phiTrig-conesize) && track->Phi() < (phiTrig+conesize))
512 etaBandPtSum+=track->Pt();
513 fhEtaBandTrack->Fill(track->Eta(),track->Phi());
516 //fill the histograms at +-45 degrees in phi from trigger particle, perpedicular to trigger axis in phi
517 Double_t dPhi = phiTrig - track->Phi() + TMath::PiOver2();
518 Double_t dEta = etaTrig - track->Eta();
519 Double_t arg = dPhi*dPhi + dEta*dEta;
520 if(TMath::Sqrt(arg) < conesize)
522 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
523 sumptPerp+=track->Pt();
526 dPhi = phiTrig - track->Phi() - TMath::PiOver2();
527 arg = dPhi*dPhi + dEta*dEta;
528 if(TMath::Sqrt(arg) < conesize)
530 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
531 sumptPerp+=track->Pt();
535 fhPerpConeSumPt ->Fill(ptTrig , sumptPerp );
536 fhConeSumPtEtaBandUETrack ->Fill(ptTrig , etaBandPtSum);
537 fhConeSumPtPhiBandUETrack ->Fill(ptTrig , phiBandPtSum);
538 fhConeSumPtEtaBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
539 fhConeSumPtPhiBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
544 //________________________________________________________________________________________________________
545 Float_t AliAnaParticleIsolation::CalculateExcessAreaFraction(const Float_t excess, const Float_t conesize)
547 // Area of a circunference segment segment 1/2 R^2 (angle-sin(angle)), angle = 2*ACos((R-excess)/R)
550 Float_t angle = 2*TMath::ACos( (conesize-excess) / conesize );
552 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
554 Float_t excessA = conesize*conesize / 2 * (angle-TMath::Sin(angle));
556 if(coneA > excessA) return coneA / (coneA-excessA);
559 printf("AliAnaParticleIsolation::CalculateExcessAreaFraction() - Please Check : Excess Track %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",
560 excess,coneA, excessA, angle*TMath::RadToDeg(), coneA / (coneA-excessA));
565 //___________________________________________________________________________________________________________________________________
566 void AliAnaParticleIsolation::CalculateNormalizeUEBandPerUnitArea(AliAODPWG4ParticleCorrelation * pCandidate,
567 const Float_t coneptsumCluster, const Float_t coneptsumCell, const Float_t coneptsumTrack)
569 //normalize phi/eta band per area unit
571 Float_t etaUEptsumTrack = 0 ;
572 Float_t phiUEptsumTrack = 0 ;
573 Float_t etaUEptsumCluster = 0 ;
574 Float_t phiUEptsumCluster = 0 ;
575 Float_t etaUEptsumCell = 0 ;
576 Float_t phiUEptsumCell = 0 ;
578 Int_t partTypeInCone = GetIsolationCut()->GetParticleTypeInCone();
580 // Sum the pT in the phi or eta band for clusters or tracks
582 CalculateTrackUEBand (pCandidate,etaUEptsumTrack ,phiUEptsumTrack );
583 CalculateCaloUEBand (pCandidate,etaUEptsumCluster,phiUEptsumCluster);
584 CalculateCaloCellUEBand(pCandidate,etaUEptsumCell ,phiUEptsumCell );
586 // Do the normalization
588 Float_t conesize = GetIsolationCut()->GetConeSize();
589 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
590 Float_t ptTrig = pCandidate->Pt() ;
591 Float_t phiTrig = pCandidate->Phi();
592 Float_t etaTrig = pCandidate->Eta();
597 Float_t phiUEptsumTrackNorm = 0 ;
598 Float_t etaUEptsumTrackNorm = 0 ;
599 Float_t coneptsumTrackSubPhi = 0 ;
600 Float_t coneptsumTrackSubEta = 0 ;
601 Float_t coneptsumTrackSubPhiNorm = 0 ;
602 Float_t coneptsumTrackSubEtaNorm = 0 ;
604 if( partTypeInCone!=AliIsolationCut::kOnlyNeutral )
606 // Get the cut used for the TPC tracks in the reader, +-0.8, +-0.9 ...
607 // Only valid in simple fidutial cut case and if the cut is applied, careful!
608 Float_t tpcEtaSize = GetReader()->GetFiducialCut()->GetCTSFidCutMaxEtaArray()->At(0) -
609 GetReader()->GetFiducialCut()->GetCTSFidCutMinEtaArray()->At(0) ;
610 Float_t tpcPhiSize = TMath::TwoPi();
612 //printf("tracks eta fiducial acceptance %f\n",tpcEtaSize);
614 phiUEptsumTrackNorm = phiUEptsumTrack*(coneA / ((2*conesize*tpcPhiSize)-coneA)); // pi * R^2 / (2 R * 2 pi) - trigger cone
615 etaUEptsumTrackNorm = etaUEptsumTrack*(coneA / ((2*conesize*tpcEtaSize)-coneA)); // pi * R^2 / (2 R * 1.6) - trigger cone
617 // Need to correct coneptsumTrack by the fraction of the cone out of track cut acceptance!
618 Float_t correctConeSumTrack = 1;
619 if(TMath::Abs(etaTrig)+conesize > tpcEtaSize/2.)
621 Float_t excess = TMath::Abs(etaTrig) + conesize - tpcEtaSize/2.;
622 correctConeSumTrack = CalculateExcessAreaFraction(excess,conesize);
623 //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);
625 // Need to correct phi band surface if part of the cone falls out of track cut acceptance! Not sure this will happen.
626 phiUEptsumTrackNorm = phiUEptsumTrack*(coneA / ((2*(conesize-excess)*tpcPhiSize)-(coneA-correctConeSumTrack)));
629 coneptsumTrackSubPhi = coneptsumTrack*correctConeSumTrack - phiUEptsumTrackNorm;
630 coneptsumTrackSubEta = coneptsumTrack*correctConeSumTrack - etaUEptsumTrackNorm;
632 fhConeSumPtPhiUESubTrack ->Fill(ptTrig , coneptsumTrackSubPhi);
633 fhConeSumPtPhiUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubPhi);
634 fhConeSumPtEtaUESubTrack ->Fill(ptTrig , coneptsumTrackSubEta);
635 fhConeSumPtEtaUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubEta);
637 fhFractionTrackOutConeEta ->Fill(ptTrig , correctConeSumTrack-1);
638 fhFractionTrackOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig,correctConeSumTrack-1);
640 coneptsumTrackSubPhiNorm = coneptsumTrackSubPhi/coneptsumTrack;
641 coneptsumTrackSubEtaNorm = coneptsumTrackSubEta/coneptsumTrack;
643 fhConeSumPtSubvsConeSumPtTotPhiTrack ->Fill(coneptsumTrack,coneptsumTrackSubPhi);
644 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->Fill(coneptsumTrack,coneptsumTrackSubPhiNorm);
645 fhConeSumPtSubvsConeSumPtTotEtaTrack ->Fill(coneptsumTrack,coneptsumTrackSubEta);
646 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->Fill(coneptsumTrack,coneptsumTrackSubEtaNorm);
650 // ------------------------ //
651 // EMCal Clusters and cells //
652 // ------------------------ //
653 Float_t phiUEptsumClusterNorm = 0 ;
654 Float_t etaUEptsumClusterNorm = 0 ;
655 Float_t coneptsumClusterSubPhi = 0 ;
656 Float_t coneptsumClusterSubEta = 0 ;
657 Float_t coneptsumClusterSubPhiNorm = 0 ;
658 Float_t coneptsumClusterSubEtaNorm = 0 ;
659 Float_t phiUEptsumCellNorm = 0 ;
660 Float_t etaUEptsumCellNorm = 0 ;
661 Float_t coneptsumCellSubPhi = 0 ;
662 Float_t coneptsumCellSubEta = 0 ;
663 Float_t coneptsumCellSubPhiNorm = 0 ;
664 Float_t coneptsumCellSubEtaNorm = 0 ;
666 if( partTypeInCone!=AliIsolationCut::kOnlyCharged )
668 //Careful here if EMCal limits changed .. 2010 (4 SM) to 2011-12 (10 SM), for the moment consider 100 deg in phi
669 Float_t emcEtaSize = 0.7*2;
670 Float_t emcPhiSize = TMath::DegToRad()*100;
673 // !! WARNING !! -> If fiducial cut is applied, we need to change properly the EMCal limits !!!!!!!!!!!!!
680 phiUEptsumClusterNorm = phiUEptsumCluster*(coneA / ((2*conesize*emcPhiSize)-coneA)); // pi * R^2 / (2 R * 2 100 deg) - trigger cone
681 etaUEptsumClusterNorm = etaUEptsumCluster*(coneA / ((2*conesize*emcEtaSize)-coneA)); // pi * R^2 / (2 R * 2*1.7) - trigger cone
683 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
685 Float_t correctConeSumClusterEta = 1;
686 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
688 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
689 correctConeSumClusterEta = CalculateExcessAreaFraction(excess,conesize);
690 //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);
692 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
693 phiUEptsumClusterNorm = phiUEptsumCluster*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumClusterEta)));
696 Float_t correctConeSumClusterPhi = 1;
697 //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() );
698 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
699 (phiTrig-conesize < 80*TMath::DegToRad()))
702 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
703 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
705 correctConeSumClusterPhi = CalculateExcessAreaFraction(excess,conesize);
706 //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);
708 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
709 etaUEptsumClusterNorm = etaUEptsumCluster*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumClusterPhi)));
712 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
714 coneptsumClusterSubPhi = coneptsumCluster*correctConeSumClusterEta*correctConeSumClusterPhi - phiUEptsumClusterNorm;
715 coneptsumClusterSubEta = coneptsumCluster*correctConeSumClusterEta*correctConeSumClusterPhi - etaUEptsumClusterNorm;
717 fhConeSumPtPhiUESubCluster ->Fill(ptTrig , coneptsumClusterSubPhi);
718 fhConeSumPtPhiUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubPhi);
719 fhConeSumPtEtaUESubCluster ->Fill(ptTrig , coneptsumClusterSubEta);
720 fhConeSumPtEtaUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubEta);
722 fhFractionClusterOutConeEta ->Fill(ptTrig , correctConeSumClusterEta-1);
723 fhFractionClusterOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterEta-1);
724 fhFractionClusterOutConePhi ->Fill(ptTrig , correctConeSumClusterPhi-1);
725 fhFractionClusterOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterPhi-1);
727 coneptsumClusterSubPhiNorm = coneptsumClusterSubPhi/coneptsumCluster;
728 coneptsumClusterSubEtaNorm = coneptsumClusterSubEta/coneptsumCluster;
730 fhConeSumPtSubvsConeSumPtTotPhiCluster ->Fill(coneptsumCluster,coneptsumClusterSubPhi);
731 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->Fill(coneptsumCluster,coneptsumClusterSubPhiNorm);
732 fhConeSumPtSubvsConeSumPtTotEtaCluster ->Fill(coneptsumCluster,coneptsumClusterSubEta);
733 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->Fill(coneptsumCluster,coneptsumClusterSubEtaNorm);
739 phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*conesize*emcPhiSize)-coneA));
740 etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*conesize*emcEtaSize)-coneA));
742 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
744 Float_t correctConeSumCellEta = 1;
745 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
747 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
748 correctConeSumCellEta = CalculateExcessAreaFraction(excess,conesize);
749 //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);
750 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
751 phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta)));
754 Float_t correctConeSumCellPhi = 1;
755 //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() );
756 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
757 (phiTrig-conesize < 80*TMath::DegToRad()))
760 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
761 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
763 correctConeSumCellPhi = CalculateExcessAreaFraction(excess,conesize);
764 //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);
766 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
767 etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi)));
771 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
772 coneptsumCellSubPhi = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - phiUEptsumCellNorm;
773 coneptsumCellSubEta = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - etaUEptsumCellNorm;
775 fhConeSumPtPhiUESubCell ->Fill(ptTrig , coneptsumCellSubPhi);
776 fhConeSumPtPhiUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubPhi);
777 fhConeSumPtEtaUESubCell ->Fill(ptTrig , coneptsumCellSubEta);
778 fhConeSumPtEtaUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubEta);
780 fhFractionCellOutConeEta ->Fill(ptTrig , correctConeSumCellEta-1);
781 fhFractionCellOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellEta-1);
782 fhFractionCellOutConePhi ->Fill(ptTrig , correctConeSumCellPhi-1);
783 fhFractionCellOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellPhi-1);
785 coneptsumCellSubPhiNorm = coneptsumCellSubPhi/coneptsumCell;
786 coneptsumCellSubEtaNorm = coneptsumCellSubEta/coneptsumCell;
788 fhConeSumPtSubvsConeSumPtTotPhiCell ->Fill(coneptsumCell,coneptsumCellSubPhi);
789 fhConeSumPtSubNormvsConeSumPtTotPhiCell->Fill(coneptsumCell,coneptsumCellSubPhiNorm);
790 fhConeSumPtSubvsConeSumPtTotEtaCell ->Fill(coneptsumCell,coneptsumCellSubEta);
791 fhConeSumPtSubNormvsConeSumPtTotEtaCell->Fill(coneptsumCell,coneptsumCellSubEtaNorm);
795 if( partTypeInCone==AliIsolationCut::kNeutralAndCharged )
798 // --------------------------- //
799 // Tracks and clusters in cone //
800 // --------------------------- //
802 Double_t sumPhiUESub = coneptsumClusterSubPhi + coneptsumTrackSubPhi;
803 Double_t sumEtaUESub = coneptsumClusterSubEta + coneptsumTrackSubEta;
805 fhConeSumPtPhiUESub ->Fill(ptTrig , sumPhiUESub);
806 fhConeSumPtPhiUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESub);
807 fhConeSumPtEtaUESub ->Fill(ptTrig , sumEtaUESub);
808 fhConeSumPtEtaUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESub);
810 fhEtaBandClustervsTrack ->Fill(etaUEptsumCluster ,etaUEptsumTrack );
811 fhPhiBandClustervsTrack ->Fill(phiUEptsumCluster ,phiUEptsumTrack );
812 fhEtaBandNormClustervsTrack->Fill(etaUEptsumClusterNorm,etaUEptsumTrackNorm);
813 fhPhiBandNormClustervsTrack->Fill(phiUEptsumClusterNorm,phiUEptsumTrackNorm);
815 fhConeSumPtEtaUESubClustervsTrack->Fill(coneptsumClusterSubEta,coneptsumTrackSubEta);
816 fhConeSumPtPhiUESubClustervsTrack->Fill(coneptsumClusterSubPhi,coneptsumTrackSubPhi);
818 // ------------------------ //
819 // Tracks and cells in cone //
820 // ------------------------ //
822 Double_t sumPhiUESubTrackCell = coneptsumCellSubPhi + coneptsumTrackSubPhi;
823 Double_t sumEtaUESubTrackCell = coneptsumCellSubEta + coneptsumTrackSubEta;
825 fhConeSumPtPhiUESubTrackCell ->Fill(ptTrig , sumPhiUESubTrackCell);
826 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESubTrackCell);
827 fhConeSumPtEtaUESubTrackCell ->Fill(ptTrig , sumEtaUESubTrackCell);
828 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESubTrackCell);
830 fhEtaBandCellvsTrack ->Fill(etaUEptsumCell ,etaUEptsumTrack );
831 fhPhiBandCellvsTrack ->Fill(phiUEptsumCell ,phiUEptsumTrack );
832 fhEtaBandNormCellvsTrack->Fill(etaUEptsumCellNorm,etaUEptsumTrackNorm);
833 fhPhiBandNormCellvsTrack->Fill(phiUEptsumCellNorm,phiUEptsumTrackNorm);
835 fhConeSumPtEtaUESubCellvsTrack->Fill(coneptsumCellSubEta,coneptsumTrackSubEta);
836 fhConeSumPtPhiUESubCellvsTrack->Fill(coneptsumCellSubPhi,coneptsumTrackSubPhi);
843 //__________________________________________________________________________________________________
844 void AliAnaParticleIsolation::CalculateCaloSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
845 Float_t & coneptsumCluster)
847 // Get the cluster pT or sum of pT in isolation cone
849 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
851 //Recover reference arrays with clusters and tracks
852 TObjArray * refclusters = aodParticle->GetObjArray(GetAODObjArrayName()+"Clusters");
853 if(!refclusters) return ;
855 Float_t ptTrig = aodParticle->Pt();
857 //Get vertex for cluster momentum calculation
858 Double_t vertex[] = {0,0,0} ; //vertex ;
859 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
860 GetReader()->GetVertex(vertex);
863 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
865 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
866 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
868 fhPtInCone ->Fill(ptTrig, mom.Pt());
869 fhPtClusterInCone->Fill(ptTrig, mom.Pt());
871 if(fFillPileUpHistograms)
873 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(ptTrig,mom.Pt());
874 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,mom.Pt());
875 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,mom.Pt());
876 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,mom.Pt());
877 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,mom.Pt());
878 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,mom.Pt());
879 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,mom.Pt());
882 fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
883 coneptsumCluster+=mom.Pt();
886 fhConeSumPtCluster ->Fill(ptTrig, coneptsumCluster);
889 //__________________________________________________________________________________________________
890 void AliAnaParticleIsolation::CalculateCaloCellSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
891 Float_t & coneptsumCell)
893 // Get the cell amplityde or sum of amplitudes in isolation cone
894 // Mising: Remove signal cells in cone in case the trigger is a cluster!
896 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
898 Float_t conesize = GetIsolationCut()->GetConeSize();
900 Float_t ptTrig = aodParticle->Pt();
901 Float_t phiTrig = aodParticle->Phi();
902 if(phiTrig<0) phiTrig += TMath::TwoPi();
903 Float_t etaTrig = aodParticle->Eta();
905 if(aodParticle->GetDetector()=="EMCAL")
907 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
910 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
912 if(!eGeom->CheckAbsCellId(absId)) return ;
914 // Get absolute (col,row) of trigger particle
915 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
917 Int_t imEta=-1, imPhi=-1;
918 Int_t ieta =-1, iphi =-1;
920 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
922 Int_t iEta=-1, iPhi=-1;
923 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
925 Int_t colTrig = iEta;
926 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + iEta ;
927 Int_t rowTrig = iPhi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
929 Int_t sqrSize = int(conesize/0.0143);
931 AliVCaloCells * cells = GetEMCALCells();
933 // Loop on cells in cone
934 for(Int_t irow = rowTrig-sqrSize; irow < rowTrig+sqrSize; irow++)
936 for(Int_t icol = colTrig-sqrSize; icol < rowTrig+sqrSize; icol++)
938 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
941 if(icol < AliEMCALGeoParams::fgkEMCALCols)
943 inSupMod = inSector + 1;
946 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
949 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
952 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
954 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
955 if(!eGeom->CheckAbsCellId(iabsId)) continue;
957 fhPtCellInCone->Fill(ptTrig, cells->GetCellAmplitude(iabsId));
958 coneptsumCell += cells->GetCellAmplitude(iabsId);
965 fhConeSumPtCell->Fill(ptTrig,coneptsumCell);
969 //___________________________________________________________________________________________________
970 void AliAnaParticleIsolation::CalculateTrackSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
971 Float_t & coneptsumTrack)
973 // Get the track pT or sum of pT in isolation cone
975 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
977 //Recover reference arrays with clusters and tracks
978 TObjArray * reftracks = aodParticle->GetObjArray(GetAODObjArrayName()+"Tracks");
979 if(!reftracks) return ;
981 Float_t ptTrig = aodParticle->Pt();
982 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
984 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
986 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
987 Float_t pTtrack = track->Pt();
989 fhPtInCone ->Fill(ptTrig,pTtrack);
990 fhPtTrackInCone->Fill(ptTrig,pTtrack);
992 if(fFillPileUpHistograms)
994 ULong_t status = track->GetStatus();
995 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
996 //Double32_t tof = track->GetTOFsignal()*1e-3;
997 Int_t trackBC = track->GetTOFBunchCrossing(bz);
999 if ( okTOF && trackBC!=0 ) fhPtTrackInConeOtherBC->Fill(ptTrig,pTtrack);
1000 else if( okTOF && trackBC==0 ) fhPtTrackInConeBC0 ->Fill(ptTrig,pTtrack);
1002 Int_t vtxBC = GetReader()->GetVertexBC();
1003 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtTrackInConeVtxBC0->Fill(ptTrig,pTtrack);
1005 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(ptTrig,pTtrack);
1006 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(ptTrig,pTtrack);
1007 if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(ptTrig,pTtrack); }
1008 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,pTtrack);
1009 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,pTtrack);
1010 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,pTtrack);
1011 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,pTtrack);
1012 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,pTtrack);
1013 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,pTtrack);
1016 fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1017 coneptsumTrack+=pTtrack;
1020 fhConeSumPtTrack->Fill(ptTrig, coneptsumTrack);
1024 //_________________________________________________________________
1025 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
1027 // Fill some histograms to understand pile-up
1028 if(!fFillPileUpHistograms) return;
1032 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
1037 TObjArray* clusters = 0x0;
1038 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1039 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1042 Float_t time = -1000;
1046 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1047 energy = cluster->E();
1048 time = cluster->GetTOF()*1e9;
1051 //printf("E %f, time %f\n",energy,time);
1052 AliVEvent * event = GetReader()->GetInputEvent();
1054 fhTimeENoCut->Fill(energy,time);
1055 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
1056 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
1058 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
1060 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
1061 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
1063 // N pile up vertices
1064 Int_t nVerticesSPD = -1;
1065 Int_t nVerticesTracks = -1;
1069 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
1070 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
1075 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
1076 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
1079 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
1080 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
1082 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
1083 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
1086 Float_t z1 = -1, z2 = -1;
1088 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
1092 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
1093 ncont=pv->GetNContributors();
1094 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
1096 diamZ = esdEv->GetDiamondZ();
1100 AliAODVertex *pv=aodEv->GetVertex(iVert);
1101 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
1102 ncont=pv->GetNContributors();
1103 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
1105 diamZ = aodEv->GetDiamondZ();
1108 Double_t distZ = TMath::Abs(z2-z1);
1109 diamZ = TMath::Abs(z2-diamZ);
1111 fhTimeNPileUpVertContributors ->Fill(time,ncont);
1112 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
1113 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
1118 //_____________________________________________________________________________________________________________________
1119 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation *pCandidate,
1120 const AliCaloTrackReader * reader,
1121 const AliCaloPID * pid)
1123 // Fill Track matching and Shower Shape control histograms
1124 if(!fFillTMHisto && !fFillSSHisto) return;
1126 Int_t clusterID = pCandidate->GetCaloLabel(0) ;
1127 Int_t nMaxima = pCandidate->GetFiducialArea(); // bad name, just place holder for the moment
1128 Int_t mcTag = pCandidate->GetTag() ;
1129 Bool_t isolated = pCandidate->IsIsolated();
1133 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
1138 TObjArray* clusters = 0x0;
1139 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1140 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1144 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1145 Float_t energy = cluster->E();
1149 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
1150 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
1154 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
1155 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
1156 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
1157 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
1158 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
1159 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
1161 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
1162 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
1166 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
1168 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
1169 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
1172 fhNLocMax[isolated]->Fill(energy,nMaxima);
1173 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
1174 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
1175 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
1179 //Analyse non-isolated events
1182 Bool_t iso = kFALSE ;
1183 Float_t coneptsum = 0 ;
1185 TObjArray * plNe = pCandidate->GetObjArray(GetAODObjArrayName()+"Clusters");
1186 TObjArray * plCTS = pCandidate->GetObjArray(GetAODObjArrayName()+"Tracks");
1188 GetIsolationCut()->SetPtThresholdMax(1.);
1189 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
1191 kFALSE, pCandidate, "",
1192 n,nfrac,coneptsum, iso);
1194 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
1196 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1199 GetIsolationCut()->SetPtThresholdMax(10000.);
1206 Float_t dZ = cluster->GetTrackDz();
1207 Float_t dR = cluster->GetTrackDx();
1209 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1211 dR = 2000., dZ = 2000.;
1212 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1215 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
1216 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
1218 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
1219 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
1220 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
1223 // Check dEdx and E/p of matched clusters
1225 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1228 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
1232 Float_t dEdx = track->GetTPCsignal();
1233 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
1235 Float_t eOverp = cluster->E()/track->P();
1236 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
1239 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
1244 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
1246 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1247 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
1248 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
1249 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
1250 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
1255 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1256 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
1257 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
1258 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
1259 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
1268 } // clusters array available
1272 //______________________________________________________
1273 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
1275 //Save parameters used for analysis
1276 TString parList ; //this will be list of parameters used for this analysis.
1277 const Int_t buffersize = 255;
1278 char onePar[buffersize] ;
1280 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
1282 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
1284 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
1286 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
1288 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
1290 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
1295 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
1297 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
1300 for(Int_t icone = 0; icone < fNCones ; icone++)
1302 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
1305 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1307 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
1310 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1312 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
1315 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1317 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
1322 //Get parameters set in base class.
1323 parList += GetBaseParametersList() ;
1325 //Get parameters set in IC class.
1326 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
1328 return new TObjString(parList) ;
1332 //________________________________________________________
1333 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
1335 // Create histograms to be saved in output file and
1336 // store them in outputContainer
1337 TList * outputContainer = new TList() ;
1338 outputContainer->SetName("IsolatedParticleHistos") ;
1340 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
1341 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
1342 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
1343 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
1344 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
1345 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
1346 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
1347 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
1348 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
1349 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
1350 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
1351 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
1352 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
1353 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
1354 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
1356 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
1357 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
1358 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
1359 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
1360 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
1361 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
1363 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
1364 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
1365 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
1366 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
1367 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
1368 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
1370 Int_t nptsumbins = fHistoNPtSumBins;
1371 Float_t ptsummax = fHistoPtSumMax;
1372 Float_t ptsummin = fHistoPtSumMin;
1373 Int_t nptinconebins = fHistoNPtInConeBins;
1374 Float_t ptinconemax = fHistoPtInConeMax;
1375 Float_t ptinconemin = fHistoPtInConeMin;
1377 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
1378 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
1379 Float_t r = GetIsolationCut()->GetConeSize();
1381 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
1385 TString hName [] = {"NoIso",""};
1386 TString hTitle[] = {"Not isolated" ,"isolated"};
1388 fhEIso = new TH1F("hE",
1389 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1390 nptbins,ptmin,ptmax);
1391 fhEIso->SetYTitle("dN / dE");
1392 fhEIso->SetXTitle("E (GeV/c)");
1393 outputContainer->Add(fhEIso) ;
1395 fhPtIso = new TH1F("hPt",
1396 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),
1397 nptbins,ptmin,ptmax);
1398 fhPtIso->SetYTitle("dN / p_{T}");
1399 fhPtIso->SetXTitle("p_{T} (GeV/c)");
1400 outputContainer->Add(fhPtIso) ;
1402 fhPtCentralityIso = new TH2F("hPtCentrality","centrality vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,100);
1403 fhPtCentralityIso->SetYTitle("centrality");
1404 fhPtCentralityIso->SetXTitle("p_{T}(GeV/c)");
1405 outputContainer->Add(fhPtCentralityIso) ;
1407 fhPtEventPlaneIso = new TH2F("hPtEventPlane","event plane angle vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1408 fhPtEventPlaneIso->SetYTitle("Event plane angle (rad)");
1409 fhPtEventPlaneIso->SetXTitle("p_{T} (GeV/c)");
1410 outputContainer->Add(fhPtEventPlaneIso) ;
1413 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
1414 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),
1415 nptbins,ptmin,ptmax,10,0,10);
1416 fhPtNLocMaxIso->SetYTitle("NLM");
1417 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
1418 outputContainer->Add(fhPtNLocMaxIso) ;
1420 fhPhiIso = new TH2F("hPhi",
1421 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1422 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1423 fhPhiIso->SetYTitle("#phi");
1424 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
1425 outputContainer->Add(fhPhiIso) ;
1427 fhEtaIso = new TH2F("hEta",
1428 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1429 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1430 fhEtaIso->SetYTitle("#eta");
1431 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
1432 outputContainer->Add(fhEtaIso) ;
1434 fhEtaPhiIso = new TH2F("hEtaPhiIso",
1435 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),
1436 netabins,etamin,etamax,nphibins,phimin,phimax);
1437 fhEtaPhiIso->SetXTitle("#eta");
1438 fhEtaPhiIso->SetYTitle("#phi");
1439 outputContainer->Add(fhEtaPhiIso) ;
1441 fhPtDecayIso = new TH1F("hPtDecayIso",
1442 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),
1443 nptbins,ptmin,ptmax);
1444 fhPtDecayIso->SetYTitle("N");
1445 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
1446 outputContainer->Add(fhPtDecayIso) ;
1448 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
1449 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),
1450 netabins,etamin,etamax,nphibins,phimin,phimax);
1451 fhEtaPhiDecayIso->SetXTitle("#eta");
1452 fhEtaPhiDecayIso->SetYTitle("#phi");
1453 outputContainer->Add(fhEtaPhiDecayIso) ;
1455 fhConeSumPt = new TH2F("hConePtSum",
1456 Form("Track and Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1457 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1458 fhConeSumPt->SetYTitle("#Sigma p_{T}");
1459 fhConeSumPt->SetXTitle("p_{T, trigger} (GeV/c)");
1460 outputContainer->Add(fhConeSumPt) ;
1462 fhConeSumPtTrigEtaPhi = new TH2F("hConePtSumTrigEtaPhi",
1463 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
1464 netabins,etamin,etamax,nphibins,phimin,phimax);
1465 fhConeSumPtTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1466 fhConeSumPtTrigEtaPhi->SetXTitle("#eta_{trigger}");
1467 fhConeSumPtTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1468 outputContainer->Add(fhConeSumPtTrigEtaPhi) ;
1470 fhPtInCone = new TH2F("hPtInCone",
1471 Form("p_{T} of clusters and tracks in isolation cone for R = %2.2f",r),
1472 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1473 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
1474 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
1475 outputContainer->Add(fhPtInCone) ;
1477 fhPtInConeCent = new TH2F("hPtInConeCent",
1478 Form("p_{T} in isolation cone for R = %2.2f",r),
1479 100,0,100,nptinconebins,ptinconemin,ptinconemax);
1480 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
1481 fhPtInConeCent->SetXTitle("centrality");
1482 outputContainer->Add(fhPtInConeCent) ;
1484 // Cluster only histograms
1485 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyCharged)
1487 fhConeSumPtCluster = new TH2F("hConePtSumCluster",
1488 Form("Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1489 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1490 fhConeSumPtCluster->SetYTitle("#Sigma p_{T}");
1491 fhConeSumPtCluster->SetXTitle("p_{T, trigger} (GeV/c)");
1492 outputContainer->Add(fhConeSumPtCluster) ;
1494 fhConeSumPtCell = new TH2F("hConePtSumCell",
1495 Form("Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
1496 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1497 fhConeSumPtCell->SetYTitle("#Sigma p_{T}");
1498 fhConeSumPtCell->SetXTitle("p_{T, trigger} (GeV/c)");
1499 outputContainer->Add(fhConeSumPtCell) ;
1501 fhConeSumPtEtaBandUECluster = new TH2F("hConePtSumEtaBandUECluster",
1502 "#Sigma cluster p_{T} in UE Eta Band",
1503 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1504 fhConeSumPtEtaBandUECluster->SetYTitle("#Sigma p_{T}");
1505 fhConeSumPtEtaBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1506 outputContainer->Add(fhConeSumPtEtaBandUECluster) ;
1508 fhConeSumPtPhiBandUECluster = new TH2F("hConePtSumPhiBandUECluster",
1509 "#Sigma cluster p_{T} UE Phi Band",
1510 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1511 fhConeSumPtPhiBandUECluster->SetYTitle("#Sigma p_{T}");
1512 fhConeSumPtPhiBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1513 outputContainer->Add(fhConeSumPtPhiBandUECluster) ;
1515 fhConeSumPtEtaBandUEClusterTrigEtaPhi = new TH2F("hConePtSumEtaBandUEClusterTrigEtaPhi",
1516 "Trigger #eta vs #phi, #Sigma cluster p_{T} in UE Eta Band",
1517 netabins,etamin,etamax,nphibins,phimin,phimax);
1518 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1519 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1520 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1521 outputContainer->Add(fhConeSumPtEtaBandUEClusterTrigEtaPhi) ;
1523 fhConeSumPtPhiBandUEClusterTrigEtaPhi = new TH2F("hConePtSumPhiBandUEClusterTrigEtaPhi",
1524 "Trigger #eta vs #phi, #Sigma cluster p_{T} UE Phi Band",
1525 netabins,etamin,etamax,nphibins,phimin,phimax);
1526 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1527 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1528 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1529 outputContainer->Add(fhConeSumPtPhiBandUEClusterTrigEtaPhi) ;
1532 fhConeSumPtEtaBandUECell = new TH2F("hConePtSumEtaBandUECell",
1533 "#Sigma cell p_{T} in UE Eta Band",
1534 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1535 fhConeSumPtEtaBandUECell->SetYTitle("#Sigma p_{T}");
1536 fhConeSumPtEtaBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1537 outputContainer->Add(fhConeSumPtEtaBandUECell) ;
1539 fhConeSumPtPhiBandUECell = new TH2F("hConePtSumPhiBandUECell",
1540 "#Sigma cell p_{T} UE Phi Band",
1541 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1542 fhConeSumPtPhiBandUECell->SetYTitle("#Sigma p_{T}");
1543 fhConeSumPtPhiBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1544 outputContainer->Add(fhConeSumPtPhiBandUECell) ;
1546 fhConeSumPtEtaBandUECellTrigEtaPhi = new TH2F("hConePtSumEtaBandUECellTrigEtaPhi",
1547 "Trigger #eta vs #phi, #Sigma cell p_{T} in UE Eta Band",
1548 netabins,etamin,etamax,nphibins,phimin,phimax);
1549 fhConeSumPtEtaBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1550 fhConeSumPtEtaBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1551 fhConeSumPtEtaBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1552 outputContainer->Add(fhConeSumPtEtaBandUECellTrigEtaPhi) ;
1554 fhConeSumPtPhiBandUECellTrigEtaPhi = new TH2F("hConePtSumPhiBandUECellTrigEtaPhi",
1555 "Trigger #eta vs #phi, #Sigma cell p_{T} UE Phi Band",
1556 netabins,etamin,etamax,nphibins,phimin,phimax);
1557 fhConeSumPtPhiBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1558 fhConeSumPtPhiBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1559 fhConeSumPtPhiBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1560 outputContainer->Add(fhConeSumPtPhiBandUECellTrigEtaPhi) ;
1563 fhPtClusterInCone = new TH2F("hPtClusterInCone",
1564 Form("p_{T} of clusters in isolation cone for R = %2.2f",r),
1565 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1566 fhPtClusterInCone->SetYTitle("p_{T in cone} (GeV/c)");
1567 fhPtClusterInCone->SetXTitle("p_{T} (GeV/c)");
1568 outputContainer->Add(fhPtClusterInCone) ;
1570 fhEtaBandCluster = new TH2F("hEtaBandCluster",
1571 Form("#eta vs #phi of clusters in #eta band isolation cone for R = %2.2f",r),
1572 netabins,-1,1,nphibins,0,TMath::TwoPi());
1573 fhEtaBandCluster->SetXTitle("#eta");
1574 fhEtaBandCluster->SetYTitle("#phi");
1575 outputContainer->Add(fhEtaBandCluster) ;
1577 fhPhiBandCluster = new TH2F("hPhiBandCluster",
1578 Form("#eta vs #phi of clusters in #phi band isolation cone for R = %2.2f",r),
1579 netabins,-1,1,nphibins,0,TMath::TwoPi());
1580 fhPhiBandCluster->SetXTitle("#eta");
1581 fhPhiBandCluster->SetYTitle("#phi");
1582 outputContainer->Add(fhPhiBandCluster) ;
1584 fhPtCellInCone = new TH2F("hPtCellInCone",
1585 Form("p_{T} of cells in isolation cone for R = %2.2f",r),
1586 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1587 fhPtCellInCone->SetYTitle("p_{T in cone} (GeV/c)");
1588 fhPtCellInCone->SetXTitle("p_{T} (GeV/c)");
1589 outputContainer->Add(fhPtCellInCone) ;
1591 fhEtaBandCell = new TH2F("hEtaBandCell",
1592 Form("#eta vs #phi of cells in #eta band isolation cone for R = %2.2f",r),
1593 netabins,-1,1,nphibins,0,TMath::TwoPi());
1594 fhEtaBandCell->SetXTitle("#eta");
1595 fhEtaBandCell->SetYTitle("#phi");
1596 outputContainer->Add(fhEtaBandCell) ;
1598 fhPhiBandCell = new TH2F("hPhiBandCell",
1599 Form("#eta vs #phi of cells in #phi band isolation cone for R = %2.2f",r),
1600 netabins,-1,1,nphibins,0,TMath::TwoPi());
1601 fhPhiBandCell->SetXTitle("#eta");
1602 fhPhiBandCell->SetYTitle("#phi");
1603 outputContainer->Add(fhPhiBandCell) ;
1605 fhConeSumPtEtaUESubCluster = new TH2F("hConeSumPtEtaUESubCluster",
1606 Form("Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1607 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1608 fhConeSumPtEtaUESubCluster->SetYTitle("#Sigma p_{T}");
1609 fhConeSumPtEtaUESubCluster->SetXTitle("p_{T} (GeV/c)");
1610 outputContainer->Add(fhConeSumPtEtaUESubCluster) ;
1612 fhConeSumPtPhiUESubCluster = new TH2F("hConeSumPtPhiUESubCluster",
1613 Form("Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1614 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1615 fhConeSumPtPhiUESubCluster->SetYTitle("#Sigma p_{T}");
1616 fhConeSumPtPhiUESubCluster->SetXTitle("p_{T} (GeV/c)");
1617 outputContainer->Add(fhConeSumPtPhiUESubCluster) ;
1619 fhConeSumPtEtaUESubClusterTrigEtaPhi = new TH2F("hConeSumPtEtaUESubClusterTrigEtaPhi",
1620 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1621 netabins,etamin,etamax,nphibins,phimin,phimax);
1622 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1623 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1624 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1625 outputContainer->Add(fhConeSumPtEtaUESubClusterTrigEtaPhi) ;
1627 fhConeSumPtPhiUESubClusterTrigEtaPhi = new TH2F("hConeSumPtPhiUESubClusterTrigEtaPhi",
1628 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1629 netabins,etamin,etamax,nphibins,phimin,phimax);
1630 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1631 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1632 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1633 outputContainer->Add(fhConeSumPtPhiUESubClusterTrigEtaPhi) ;
1636 fhConeSumPtEtaUESubCell = new TH2F("hConeSumPtEtaUESubCell",
1637 Form("Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1638 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1639 fhConeSumPtEtaUESubCell->SetYTitle("#Sigma p_{T}");
1640 fhConeSumPtEtaUESubCell->SetXTitle("p_{T} (GeV/c)");
1641 outputContainer->Add(fhConeSumPtEtaUESubCell) ;
1643 fhConeSumPtPhiUESubCell = new TH2F("hConeSumPtPhiUESubCell",
1644 Form("Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1645 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1646 fhConeSumPtPhiUESubCell->SetYTitle("#Sigma p_{T}");
1647 fhConeSumPtPhiUESubCell->SetXTitle("p_{T} (GeV/c)");
1648 outputContainer->Add(fhConeSumPtPhiUESubCell) ;
1650 fhConeSumPtEtaUESubCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubCellTrigEtaPhi",
1651 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1652 netabins,etamin,etamax,nphibins,phimin,phimax);
1653 fhConeSumPtEtaUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1654 fhConeSumPtEtaUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1655 fhConeSumPtEtaUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1656 outputContainer->Add(fhConeSumPtEtaUESubCellTrigEtaPhi) ;
1658 fhConeSumPtPhiUESubCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubCellTrigEtaPhi",
1659 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1660 netabins,etamin,etamax,nphibins,phimin,phimax);
1661 fhConeSumPtPhiUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1662 fhConeSumPtPhiUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1663 fhConeSumPtPhiUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1664 outputContainer->Add(fhConeSumPtPhiUESubCellTrigEtaPhi) ;
1667 fhFractionClusterOutConeEta = new TH2F("hFractionClusterOutConeEta",
1668 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance",r),
1669 nptbins,ptmin,ptmax,100,0,1);
1670 fhFractionClusterOutConeEta->SetYTitle("fraction");
1671 fhFractionClusterOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1672 outputContainer->Add(fhFractionClusterOutConeEta) ;
1674 fhFractionClusterOutConeEtaTrigEtaPhi = new TH2F("hFractionClusterOutConeEtaTrigEtaPhi",
1675 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance, in trigger #eta-#phi ",r),
1676 netabins,etamin,etamax,nphibins,phimin,phimax);
1677 fhFractionClusterOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1678 fhFractionClusterOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1679 fhFractionClusterOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1680 outputContainer->Add(fhFractionClusterOutConeEtaTrigEtaPhi) ;
1682 fhFractionClusterOutConePhi = new TH2F("hFractionClusterOutConePhi",
1683 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance",r),
1684 nptbins,ptmin,ptmax,100,0,1);
1685 fhFractionClusterOutConePhi->SetYTitle("fraction");
1686 fhFractionClusterOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1687 outputContainer->Add(fhFractionClusterOutConePhi) ;
1689 fhFractionClusterOutConePhiTrigEtaPhi = new TH2F("hFractionClusterOutConePhiTrigEtaPhi",
1690 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance, in trigger #eta-#phi ",r),
1691 netabins,etamin,etamax,nphibins,phimin,phimax);
1692 fhFractionClusterOutConePhiTrigEtaPhi->SetZTitle("fraction");
1693 fhFractionClusterOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1694 fhFractionClusterOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1695 outputContainer->Add(fhFractionClusterOutConePhiTrigEtaPhi) ;
1697 fhConeSumPtSubvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCluster",
1698 Form("#Sigma p_{T} in cone after bkg sub from #phi band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1699 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1700 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1701 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1702 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCluster);
1704 fhConeSumPtSubNormvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCluster",
1705 Form("#Sigma p_{T, norm} in cone after bkg sub from #phi band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1706 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1707 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1708 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1709 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCluster);
1711 fhConeSumPtSubvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCluster",
1712 Form("#Sigma p_{T} in cone after bkg sub from #eta band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1713 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1714 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1715 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1716 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCluster);
1718 fhConeSumPtSubNormvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCluster",
1719 Form("#Sigma p_{T, norm} in cone after bkg sub from #eta band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1720 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1721 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1722 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1723 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCluster);
1726 fhFractionCellOutConeEta = new TH2F("hFractionCellOutConeEta",
1727 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance",r),
1728 nptbins,ptmin,ptmax,100,0,1);
1729 fhFractionCellOutConeEta->SetYTitle("fraction");
1730 fhFractionCellOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1731 outputContainer->Add(fhFractionCellOutConeEta) ;
1733 fhFractionCellOutConeEtaTrigEtaPhi = new TH2F("hFractionCellOutConeEtaTrigEtaPhi",
1734 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance, in trigger #eta-#phi ",r),
1735 netabins,etamin,etamax,nphibins,phimin,phimax);
1736 fhFractionCellOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1737 fhFractionCellOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1738 fhFractionCellOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1739 outputContainer->Add(fhFractionCellOutConeEtaTrigEtaPhi) ;
1741 fhFractionCellOutConePhi = new TH2F("hFractionCellOutConePhi",
1742 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance",r),
1743 nptbins,ptmin,ptmax,100,0,1);
1744 fhFractionCellOutConePhi->SetYTitle("fraction");
1745 fhFractionCellOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1746 outputContainer->Add(fhFractionCellOutConePhi) ;
1748 fhFractionCellOutConePhiTrigEtaPhi = new TH2F("hFractionCellOutConePhiTrigEtaPhi",
1749 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance, in trigger #eta-#phi ",r),
1750 netabins,etamin,etamax,nphibins,phimin,phimax);
1751 fhFractionCellOutConePhiTrigEtaPhi->SetZTitle("fraction");
1752 fhFractionCellOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1753 fhFractionCellOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1754 outputContainer->Add(fhFractionCellOutConePhiTrigEtaPhi) ;
1757 fhConeSumPtSubvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCell",
1758 Form("#Sigma p_{T} in cone after bkg sub from #phi band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1759 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1760 fhConeSumPtSubvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1761 fhConeSumPtSubvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1762 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCell);
1764 fhConeSumPtSubNormvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCell",
1765 Form("#Sigma p_{T, norm} in cone after bkg sub from #phi band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1766 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1767 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1768 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1769 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCell);
1771 fhConeSumPtSubvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCell",
1772 Form("#Sigma p_{T} in cone after bkg sub from #eta band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1773 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1774 fhConeSumPtSubvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1775 fhConeSumPtSubvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1776 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCell);
1778 fhConeSumPtSubNormvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCell",
1779 Form("#Sigma p_{T, norm} in cone after bkg sub from #eta band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1780 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1781 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1782 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1783 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCell);
1787 // Track only histograms
1788 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
1790 fhConeSumPtTrack = new TH2F("hConePtSumTrack",
1791 Form("Track #Sigma p_{T} in isolation cone for R = %2.2f",r),
1792 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1793 fhConeSumPtTrack->SetYTitle("#Sigma p_{T}");
1794 fhConeSumPtTrack->SetXTitle("p_{T, trigger} (GeV/c)");
1795 outputContainer->Add(fhConeSumPtTrack) ;
1798 fhConeSumPtEtaBandUETrack = new TH2F("hConePtSumEtaBandUETrack",
1799 "#Sigma track p_{T} in UE Eta Band",
1800 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1801 fhConeSumPtEtaBandUETrack->SetYTitle("#Sigma p_{T}");
1802 fhConeSumPtEtaBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1803 outputContainer->Add(fhConeSumPtEtaBandUETrack) ;
1805 fhConeSumPtPhiBandUETrack = new TH2F("hConePtSumPhiBandUETrack",
1806 "#Sigma track p_{T} in UE Phi Band",
1807 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax*8);
1808 fhConeSumPtPhiBandUETrack->SetYTitle("#Sigma p_{T}");
1809 fhConeSumPtPhiBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1810 outputContainer->Add(fhConeSumPtPhiBandUETrack) ;
1813 fhConeSumPtEtaBandUETrackTrigEtaPhi = new TH2F("hConePtSumEtaBandUETrackTrigEtaPhi",
1814 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Eta Band",
1815 netabins,etamin,etamax,nphibins,phimin,phimax);
1816 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1817 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1818 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1819 outputContainer->Add(fhConeSumPtEtaBandUETrackTrigEtaPhi) ;
1821 fhConeSumPtPhiBandUETrackTrigEtaPhi = new TH2F("hConePtSumPhiBandUETrackTrigEtaPhi",
1822 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Phi Band",
1823 netabins,etamin,etamax,nphibins,phimin,phimax);
1824 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1825 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1826 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1827 outputContainer->Add(fhConeSumPtPhiBandUETrackTrigEtaPhi) ;
1830 fhPtTrackInCone = new TH2F("hPtTrackInCone",
1831 Form("p_{T} of tracks in isolation cone for R = %2.2f",r),
1832 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1833 fhPtTrackInCone->SetYTitle("p_{T in cone} (GeV/c)");
1834 fhPtTrackInCone->SetXTitle("p_{T} (GeV/c)");
1835 outputContainer->Add(fhPtTrackInCone) ;
1838 fhEtaBandTrack = new TH2F("hEtaBandTrack",
1839 Form("#eta vs #phi of tracks in #eta band isolation cone for R = %2.2f",r),
1840 netabins,-1,1,nphibins,0,TMath::TwoPi());
1841 fhEtaBandTrack->SetXTitle("#eta");
1842 fhEtaBandTrack->SetYTitle("#phi");
1843 outputContainer->Add(fhEtaBandTrack) ;
1845 fhPhiBandTrack = new TH2F("hPhiBandTrack",
1846 Form("#eta vs #phi of tracks in #phi band isolation cone for R = %2.2f",r),
1847 netabins,-1,1,nphibins,0,TMath::TwoPi());
1848 fhPhiBandTrack->SetXTitle("#eta");
1849 fhPhiBandTrack->SetYTitle("#phi");
1850 outputContainer->Add(fhPhiBandTrack) ;
1853 fhConeSumPtEtaUESubTrack = new TH2F("hConeSumPtEtaUESubTrack",
1854 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1855 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1856 fhConeSumPtEtaUESubTrack->SetYTitle("#Sigma p_{T}");
1857 fhConeSumPtEtaUESubTrack->SetXTitle("p_{T} (GeV/c)");
1858 outputContainer->Add(fhConeSumPtEtaUESubTrack) ;
1860 fhConeSumPtPhiUESubTrack = new TH2F("hConeSumPtPhiUESubTrack",
1861 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1862 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1863 fhConeSumPtPhiUESubTrack->SetYTitle("#Sigma p_{T}");
1864 fhConeSumPtPhiUESubTrack->SetXTitle("p_{T} (GeV/c)");
1865 outputContainer->Add(fhConeSumPtPhiUESubTrack) ;
1867 fhConeSumPtEtaUESubTrackTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackTrigEtaPhi",
1868 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1869 netabins,etamin,etamax,nphibins,phimin,phimax);
1870 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1871 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1872 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1873 outputContainer->Add(fhConeSumPtEtaUESubTrackTrigEtaPhi) ;
1875 fhConeSumPtPhiUESubTrackTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackTrigEtaPhi",
1876 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1877 netabins,etamin,etamax,nphibins,phimin,phimax);
1878 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1879 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1880 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1881 outputContainer->Add(fhConeSumPtPhiUESubTrackTrigEtaPhi) ;
1883 fhFractionTrackOutConeEta = new TH2F("hFractionTrackOutConeEta",
1884 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance",r),
1885 nptbins,ptmin,ptmax,100,0,1);
1886 fhFractionTrackOutConeEta->SetYTitle("fraction");
1887 fhFractionTrackOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1888 outputContainer->Add(fhFractionTrackOutConeEta) ;
1890 fhFractionTrackOutConeEtaTrigEtaPhi = new TH2F("hFractionTrackOutConeEtaTrigEtaPhi",
1891 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance, in trigger #eta-#phi ",r),
1892 netabins,etamin,etamax,nphibins,phimin,phimax);
1893 fhFractionTrackOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1894 fhFractionTrackOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1895 fhFractionTrackOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1896 outputContainer->Add(fhFractionTrackOutConeEtaTrigEtaPhi) ;
1898 fhConeSumPtSubvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubvsConeSumPtTotPhiTrack",
1899 Form("#Sigma p_{T} in cone after bkg sub from #phi band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1900 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1901 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1902 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1903 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiTrack);
1905 fhConeSumPtSubNormvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiTrack",
1906 Form("#Sigma p_{T, norm} in cone after bkg sub from #phi band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1907 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1908 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1909 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1910 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiTrack);
1912 fhConeSumPtSubvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubvsConeSumPtTotEtaTrack",
1913 Form("#Sigma p_{T} in cone after bkg sub from #eta band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1914 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1915 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1916 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1917 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaTrack);
1919 fhConeSumPtSubNormvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaTrack",
1920 Form("#Sigma p_{T, norm} in cone after bkg sub from #eta band vs #Sigma p_{T} in cone before bkg sub, R=%2.2f",r),
1921 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1922 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1923 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1924 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaTrack);
1926 // UE in perpendicular cone
1927 fhPerpConeSumPt = new TH2F("hPerpConePtSum",
1928 Form("#Sigma p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
1929 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1930 fhPerpConeSumPt->SetYTitle("#Sigma p_{T}");
1931 fhPerpConeSumPt->SetXTitle("p_{T} (GeV/c)");
1932 outputContainer->Add(fhPerpConeSumPt) ;
1934 fhPtInPerpCone = new TH2F("hPtInPerpCone",
1935 Form("p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
1936 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1937 fhPtInPerpCone->SetYTitle("p_{T in cone} (GeV/c)");
1938 fhPtInPerpCone->SetXTitle("p_{T} (GeV/c)");
1939 outputContainer->Add(fhPtInPerpCone) ;
1942 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
1944 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
1945 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1946 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1947 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
1948 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
1949 outputContainer->Add(fhConeSumPtEtaUESub) ;
1951 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
1952 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1953 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1954 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
1955 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
1956 outputContainer->Add(fhConeSumPtPhiUESub) ;
1958 fhConeSumPtEtaUESubTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrigEtaPhi",
1959 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1960 netabins,etamin,etamax,nphibins,phimin,phimax);
1961 fhConeSumPtEtaUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1962 fhConeSumPtEtaUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
1963 fhConeSumPtEtaUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1964 outputContainer->Add(fhConeSumPtEtaUESubTrigEtaPhi) ;
1966 fhConeSumPtPhiUESubTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrigEtaPhi",
1967 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1968 netabins,etamin,etamax,nphibins,phimin,phimax);
1969 fhConeSumPtPhiUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1970 fhConeSumPtPhiUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
1971 fhConeSumPtPhiUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1972 outputContainer->Add(fhConeSumPtPhiUESubTrigEtaPhi) ;
1974 fhConeSumPtClustervsTrack = new TH2F("hConePtSumClustervsTrack",
1975 Form("Track vs Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1976 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1977 fhConeSumPtClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1978 fhConeSumPtClustervsTrack->SetYTitle("#Sigma p_{T} track");
1979 outputContainer->Add(fhConeSumPtClustervsTrack) ;
1981 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
1982 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
1983 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1984 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1985 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1986 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
1988 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
1989 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
1990 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1991 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1992 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1993 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
1995 fhEtaBandClustervsTrack = new TH2F("hEtaBandClustervsTrack",
1996 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
1997 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1998 fhEtaBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1999 fhEtaBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
2000 outputContainer->Add(fhEtaBandClustervsTrack) ;
2002 fhPhiBandClustervsTrack = new TH2F("hPhiBandClustervsTrack",
2003 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2004 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2005 fhPhiBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2006 fhPhiBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
2007 outputContainer->Add(fhPhiBandClustervsTrack) ;
2009 fhEtaBandNormClustervsTrack = new TH2F("hEtaBandNormClustervsTrack",
2010 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2011 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2012 fhEtaBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2013 fhEtaBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
2014 outputContainer->Add(fhEtaBandNormClustervsTrack) ;
2016 fhPhiBandNormClustervsTrack = new TH2F("hPhiBandNormClustervsTrack",
2017 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2018 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2019 fhPhiBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2020 fhPhiBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
2021 outputContainer->Add(fhPhiBandNormClustervsTrack) ;
2025 fhConeSumPtCellTrack = new TH2F("hConePtSumCellTrack",
2026 Form("Track and Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
2027 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2028 fhConeSumPtCellTrack->SetYTitle("#Sigma p_{T}");
2029 fhConeSumPtCellTrack->SetXTitle("p_{T, trigger} (GeV/c)");
2030 outputContainer->Add(fhConeSumPtCellTrack) ;
2032 fhConeSumPtCellTrackTrigEtaPhi = new TH2F("hConePtSumCellTrackTrigEtaPhi",
2033 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
2034 netabins,etamin,etamax,nphibins,phimin,phimax);
2035 fhConeSumPtCellTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2036 fhConeSumPtCellTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2037 fhConeSumPtCellTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2038 outputContainer->Add(fhConeSumPtCellTrackTrigEtaPhi) ;
2041 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2042 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2043 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2044 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2045 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2046 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2048 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2049 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2050 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2051 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2052 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2053 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2055 fhConeSumPtCellvsTrack = new TH2F("hConePtSumCellvsTrack",
2056 Form("Track vs cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
2057 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2058 fhConeSumPtCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2059 fhConeSumPtCellvsTrack->SetYTitle("#Sigma p_{T} track");
2060 outputContainer->Add(fhConeSumPtCellvsTrack) ;
2062 fhConeSumPtEtaUESubCellvsTrack = new TH2F("hConePtSumEtaUESubCellvsTrack",
2063 Form("Track vs Cell #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2064 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2065 fhConeSumPtEtaUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2066 fhConeSumPtEtaUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
2067 outputContainer->Add(fhConeSumPtEtaUESubCellvsTrack) ;
2069 fhConeSumPtPhiUESubCellvsTrack = new TH2F("hConePhiUESubPtSumCellvsTrack",
2070 Form("Track vs Cell #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2071 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2072 fhConeSumPtPhiUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2073 fhConeSumPtPhiUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
2074 outputContainer->Add(fhConeSumPtPhiUESubCellvsTrack) ;
2076 fhEtaBandCellvsTrack = new TH2F("hEtaBandCellvsTrack",
2077 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2078 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2079 fhEtaBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2080 fhEtaBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
2081 outputContainer->Add(fhEtaBandCellvsTrack) ;
2083 fhPhiBandCellvsTrack = new TH2F("hPhiBandCellvsTrack",
2084 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2085 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2086 fhPhiBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2087 fhPhiBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
2088 outputContainer->Add(fhPhiBandCellvsTrack) ;
2090 fhEtaBandNormCellvsTrack = new TH2F("hEtaBandNormCellvsTrack",
2091 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2092 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2093 fhEtaBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2094 fhEtaBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
2095 outputContainer->Add(fhEtaBandNormCellvsTrack) ;
2097 fhPhiBandNormCellvsTrack = new TH2F("hPhiBandNormCellvsTrack",
2098 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2099 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2100 fhPhiBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2101 fhPhiBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
2102 outputContainer->Add(fhPhiBandNormCellvsTrack) ;
2104 fhConeSumPtEtaUESubTrackCell = new TH2F("hConeSumPtEtaUESubTrackCell",
2105 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2106 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2107 fhConeSumPtEtaUESubTrackCell->SetYTitle("#Sigma p_{T}");
2108 fhConeSumPtEtaUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
2109 outputContainer->Add(fhConeSumPtEtaUESubTrackCell) ;
2111 fhConeSumPtPhiUESubTrackCell = new TH2F("hConeSumPtPhiUESubTrackCell",
2112 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2113 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2114 fhConeSumPtPhiUESubTrackCell->SetYTitle("#Sigma p_{T}");
2115 fhConeSumPtPhiUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
2116 outputContainer->Add(fhConeSumPtPhiUESubTrackCell) ;
2118 fhConeSumPtEtaUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackCellTrigEtaPhi",
2119 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2120 netabins,etamin,etamax,nphibins,phimin,phimax);
2121 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2122 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2123 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2124 outputContainer->Add(fhConeSumPtEtaUESubTrackCellTrigEtaPhi) ;
2126 fhConeSumPtPhiUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackCellTrigEtaPhi",
2127 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2128 netabins,etamin,etamax,nphibins,phimin,phimax);
2129 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2130 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2131 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2132 outputContainer->Add(fhConeSumPtPhiUESubTrackCellTrigEtaPhi) ;
2138 fhELambda0SSBkg = new TH2F
2139 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2140 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
2141 fhELambda0SSBkg->SetXTitle("E (GeV)");
2142 outputContainer->Add(fhELambda0SSBkg) ;
2145 for(Int_t iso = 0; iso < 2; iso++)
2149 fhTrackMatchedDEta[iso] = new TH2F
2150 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
2151 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),
2152 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2153 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
2154 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
2156 fhTrackMatchedDPhi[iso] = new TH2F
2157 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
2158 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),
2159 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2160 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
2161 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
2163 fhTrackMatchedDEtaDPhi[iso] = new TH2F
2164 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
2165 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),
2166 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2167 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
2168 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
2170 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
2171 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
2172 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
2174 fhdEdx[iso] = new TH2F
2175 (Form("hdEdx%s",hName[iso].Data()),
2176 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),
2177 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
2178 fhdEdx[iso]->SetXTitle("E (GeV)");
2179 fhdEdx[iso]->SetYTitle("<dE/dx>");
2180 outputContainer->Add(fhdEdx[iso]);
2182 fhEOverP[iso] = new TH2F
2183 (Form("hEOverP%s",hName[iso].Data()),
2184 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),
2185 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2186 fhEOverP[iso]->SetXTitle("E (GeV)");
2187 fhEOverP[iso]->SetYTitle("E/p");
2188 outputContainer->Add(fhEOverP[iso]);
2192 fhTrackMatchedMCParticle[iso] = new TH2F
2193 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
2194 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),
2195 nptbins,ptmin,ptmax,8,0,8);
2196 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
2197 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
2199 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
2200 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
2201 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
2202 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
2203 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
2204 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
2205 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
2206 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
2208 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
2214 fhELambda0[iso] = new TH2F
2215 (Form("hELambda0%s",hName[iso].Data()),
2216 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2217 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
2218 fhELambda0[iso]->SetXTitle("E (GeV)");
2219 outputContainer->Add(fhELambda0[iso]) ;
2223 fhELambda0MCPhoton[iso] = new TH2F
2224 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
2225 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2226 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
2227 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
2228 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
2230 fhELambda0MCPi0[iso] = new TH2F
2231 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
2232 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2233 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
2234 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
2235 outputContainer->Add(fhELambda0MCPi0[iso]) ;
2237 fhELambda0MCPi0Decay[iso] = new TH2F
2238 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
2239 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2240 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
2241 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
2242 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
2244 fhELambda0MCEtaDecay[iso] = new TH2F
2245 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
2246 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2247 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2248 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
2249 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
2251 fhELambda0MCOtherDecay[iso] = new TH2F
2252 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
2253 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2254 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2255 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
2256 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
2258 fhELambda0MCHadron[iso] = new TH2F
2259 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
2260 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2261 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
2262 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
2263 outputContainer->Add(fhELambda0MCHadron[iso]) ;
2266 fhELambda1[iso] = new TH2F
2267 (Form("hELambda1%s",hName[iso].Data()),
2268 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2269 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
2270 fhELambda1[iso]->SetXTitle("E (GeV)");
2271 outputContainer->Add(fhELambda1[iso]) ;
2273 if(fCalorimeter=="EMCAL")
2275 fhELambda0TRD[iso] = new TH2F
2276 (Form("hELambda0TRD%s",hName[iso].Data()),
2277 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2278 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
2279 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
2280 outputContainer->Add(fhELambda0TRD[iso]) ;
2282 fhELambda1TRD[iso] = new TH2F
2283 (Form("hELambda1TRD%s",hName[iso].Data()),
2284 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2285 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
2286 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
2287 outputContainer->Add(fhELambda1TRD[iso]) ;
2290 fhNLocMax[iso] = new TH2F
2291 (Form("hNLocMax%s",hName[iso].Data()),
2292 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
2293 nptbins,ptmin,ptmax,10,0,10);
2294 fhNLocMax[iso]->SetYTitle("N maxima");
2295 fhNLocMax[iso]->SetXTitle("E (GeV)");
2296 outputContainer->Add(fhNLocMax[iso]) ;
2298 fhELambda0LocMax1[iso] = new TH2F
2299 (Form("hELambda0LocMax1%s",hName[iso].Data()),
2300 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2301 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
2302 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
2303 outputContainer->Add(fhELambda0LocMax1[iso]) ;
2305 fhELambda1LocMax1[iso] = new TH2F
2306 (Form("hELambda1LocMax1%s",hName[iso].Data()),
2307 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2308 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
2309 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
2310 outputContainer->Add(fhELambda1LocMax1[iso]) ;
2312 fhELambda0LocMax2[iso] = new TH2F
2313 (Form("hELambda0LocMax2%s",hName[iso].Data()),
2314 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2315 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
2316 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
2317 outputContainer->Add(fhELambda0LocMax2[iso]) ;
2319 fhELambda1LocMax2[iso] = new TH2F
2320 (Form("hELambda1LocMax2%s",hName[iso].Data()),
2321 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2322 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
2323 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
2324 outputContainer->Add(fhELambda1LocMax2[iso]) ;
2326 fhELambda0LocMaxN[iso] = new TH2F
2327 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
2328 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2329 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
2330 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
2331 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
2333 fhELambda1LocMaxN[iso] = new TH2F
2334 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
2335 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2336 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
2337 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
2338 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
2341 } // control histograms for isolated and non isolated objects
2344 if(fFillPileUpHistograms)
2346 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
2347 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0",r),
2348 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2349 fhPtTrackInConeOtherBC->SetYTitle("p_{T in cone} (GeV/c)");
2350 fhPtTrackInConeOtherBC->SetXTitle("p_{T} (GeV/c)");
2351 outputContainer->Add(fhPtTrackInConeOtherBC) ;
2353 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
2354 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0, pile-up from SPD",r),
2355 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2356 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2357 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("p_{T} (GeV/c)");
2358 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
2360 fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0",
2361 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2362 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2363 fhPtTrackInConeBC0->SetYTitle("p_{T in cone} (GeV/c)");
2364 fhPtTrackInConeBC0->SetXTitle("p_{T} (GeV/c)");
2365 outputContainer->Add(fhPtTrackInConeBC0) ;
2367 fhPtTrackInConeVtxBC0 = new TH2F("hPtTrackInConeVtxBC0",
2368 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2369 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2370 fhPtTrackInConeVtxBC0->SetYTitle("p_{T in cone} (GeV/c)");
2371 fhPtTrackInConeVtxBC0->SetXTitle("p_{T} (GeV/c)");
2372 outputContainer->Add(fhPtTrackInConeVtxBC0) ;
2375 fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD",
2376 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0, pile-up from SPD",r),
2377 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2378 fhPtTrackInConeBC0PileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2379 fhPtTrackInConeBC0PileUpSPD->SetXTitle("p_{T} (GeV/c)");
2380 outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ;
2383 for (Int_t i = 0; i < 7 ; i++)
2385 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
2386 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
2387 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2388 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/c)");
2389 fhPtInConePileUp[i]->SetXTitle("p_{T} (GeV/c)");
2390 outputContainer->Add(fhPtInConePileUp[i]) ;
2396 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
2397 fhPtIsoPrompt->SetYTitle("N");
2398 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
2399 outputContainer->Add(fhPtIsoPrompt) ;
2401 fhPhiIsoPrompt = new TH2F
2402 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2403 fhPhiIsoPrompt->SetYTitle("#phi");
2404 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2405 outputContainer->Add(fhPhiIsoPrompt) ;
2407 fhEtaIsoPrompt = new TH2F
2408 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2409 fhEtaIsoPrompt->SetYTitle("#eta");
2410 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2411 outputContainer->Add(fhEtaIsoPrompt) ;
2413 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
2414 fhPtIsoFragmentation->SetYTitle("N");
2415 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
2416 outputContainer->Add(fhPtIsoFragmentation) ;
2418 fhPhiIsoFragmentation = new TH2F
2419 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2420 fhPhiIsoFragmentation->SetYTitle("#phi");
2421 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2422 outputContainer->Add(fhPhiIsoFragmentation) ;
2424 fhEtaIsoFragmentation = new TH2F
2425 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2426 fhEtaIsoFragmentation->SetYTitle("#eta");
2427 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2428 outputContainer->Add(fhEtaIsoFragmentation) ;
2430 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2431 fhPtIsoPi0->SetYTitle("N");
2432 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
2433 outputContainer->Add(fhPtIsoPi0) ;
2435 fhPhiIsoPi0 = new TH2F
2436 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2437 fhPhiIsoPi0->SetYTitle("#phi");
2438 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2439 outputContainer->Add(fhPhiIsoPi0) ;
2441 fhEtaIsoPi0 = new TH2F
2442 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2443 fhEtaIsoPi0->SetYTitle("#eta");
2444 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2445 outputContainer->Add(fhEtaIsoPi0) ;
2447 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2448 fhPtIsoPi0Decay->SetYTitle("N");
2449 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
2450 outputContainer->Add(fhPtIsoPi0Decay) ;
2452 fhPhiIsoPi0Decay = new TH2F
2453 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2454 fhPhiIsoPi0Decay->SetYTitle("#phi");
2455 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2456 outputContainer->Add(fhPhiIsoPi0Decay) ;
2458 fhEtaIsoPi0Decay = new TH2F
2459 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2460 fhEtaIsoPi0Decay->SetYTitle("#eta");
2461 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2462 outputContainer->Add(fhEtaIsoPi0Decay) ;
2464 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
2465 fhPtIsoEtaDecay->SetYTitle("N");
2466 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2467 outputContainer->Add(fhPtIsoEtaDecay) ;
2469 fhPhiIsoEtaDecay = new TH2F
2470 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2471 fhPhiIsoEtaDecay->SetYTitle("#phi");
2472 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2473 outputContainer->Add(fhPhiIsoEtaDecay) ;
2475 fhEtaIsoEtaDecay = new TH2F
2476 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2477 fhEtaIsoEtaDecay->SetYTitle("#eta");
2478 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2479 outputContainer->Add(fhEtaIsoEtaDecay) ;
2481 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
2482 fhPtIsoOtherDecay->SetYTitle("N");
2483 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2484 outputContainer->Add(fhPtIsoOtherDecay) ;
2486 fhPhiIsoOtherDecay = new TH2F
2487 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2488 fhPhiIsoOtherDecay->SetYTitle("#phi");
2489 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2490 outputContainer->Add(fhPhiIsoOtherDecay) ;
2492 fhEtaIsoOtherDecay = new TH2F
2493 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2494 fhEtaIsoOtherDecay->SetYTitle("#eta");
2495 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2496 outputContainer->Add(fhEtaIsoOtherDecay) ;
2498 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
2499 // fhPtIsoConversion->SetYTitle("N");
2500 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
2501 // outputContainer->Add(fhPtIsoConversion) ;
2503 // fhPhiIsoConversion = new TH2F
2504 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2505 // fhPhiIsoConversion->SetYTitle("#phi");
2506 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2507 // outputContainer->Add(fhPhiIsoConversion) ;
2509 // fhEtaIsoConversion = new TH2F
2510 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2511 // fhEtaIsoConversion->SetYTitle("#eta");
2512 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2513 // outputContainer->Add(fhEtaIsoConversion) ;
2515 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
2516 fhPtIsoHadron->SetYTitle("N");
2517 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
2518 outputContainer->Add(fhPtIsoHadron) ;
2521 fhPhiIsoHadron = new TH2F
2522 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2523 fhPhiIsoHadron->SetYTitle("#phi");
2524 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
2525 outputContainer->Add(fhPhiIsoHadron) ;
2527 fhEtaIsoHadron = new TH2F
2528 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2529 fhEtaIsoHadron->SetYTitle("#eta");
2530 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
2531 outputContainer->Add(fhEtaIsoHadron) ;
2537 // Not Isolated histograms, reference histograms
2539 fhENoIso = new TH1F("hENoIso",
2540 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),
2541 nptbins,ptmin,ptmax);
2542 fhENoIso->SetYTitle("N");
2543 fhENoIso->SetXTitle("E (GeV/c)");
2544 outputContainer->Add(fhENoIso) ;
2546 fhPtNoIso = new TH1F("hPtNoIso",
2547 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),
2548 nptbins,ptmin,ptmax);
2549 fhPtNoIso->SetYTitle("N");
2550 fhPtNoIso->SetXTitle("p_{T} (GeV/c)");
2551 outputContainer->Add(fhPtNoIso) ;
2553 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
2554 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),
2555 nptbins,ptmin,ptmax,10,0,10);
2556 fhPtNLocMaxNoIso->SetYTitle("NLM");
2557 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
2558 outputContainer->Add(fhPtNLocMaxNoIso) ;
2560 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
2561 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),
2562 netabins,etamin,etamax,nphibins,phimin,phimax);
2563 fhEtaPhiNoIso->SetXTitle("#eta");
2564 fhEtaPhiNoIso->SetYTitle("#phi");
2565 outputContainer->Add(fhEtaPhiNoIso) ;
2567 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
2568 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),
2569 nptbins,ptmin,ptmax);
2570 fhPtDecayNoIso->SetYTitle("N");
2571 fhPtDecayNoIso->SetXTitle("p_{T} (GeV/c)");
2572 outputContainer->Add(fhPtDecayNoIso) ;
2574 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
2575 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),
2576 netabins,etamin,etamax,nphibins,phimin,phimax);
2577 fhEtaPhiDecayNoIso->SetXTitle("#eta");
2578 fhEtaPhiDecayNoIso->SetYTitle("#phi");
2579 outputContainer->Add(fhEtaPhiDecayNoIso) ;
2584 fhPtNoIsoPi0 = new TH1F
2585 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2586 fhPtNoIsoPi0->SetYTitle("N");
2587 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
2588 outputContainer->Add(fhPtNoIsoPi0) ;
2590 fhPtNoIsoPi0Decay = new TH1F
2591 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2592 fhPtNoIsoPi0Decay->SetYTitle("N");
2593 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
2594 outputContainer->Add(fhPtNoIsoPi0Decay) ;
2596 fhPtNoIsoEtaDecay = new TH1F
2597 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
2598 fhPtNoIsoEtaDecay->SetYTitle("N");
2599 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
2600 outputContainer->Add(fhPtNoIsoEtaDecay) ;
2602 fhPtNoIsoOtherDecay = new TH1F
2603 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
2604 fhPtNoIsoOtherDecay->SetYTitle("N");
2605 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
2606 outputContainer->Add(fhPtNoIsoOtherDecay) ;
2608 fhPtNoIsoPrompt = new TH1F
2609 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
2610 fhPtNoIsoPrompt->SetYTitle("N");
2611 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
2612 outputContainer->Add(fhPtNoIsoPrompt) ;
2614 fhPtIsoMCPhoton = new TH1F
2615 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
2616 fhPtIsoMCPhoton->SetYTitle("N");
2617 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2618 outputContainer->Add(fhPtIsoMCPhoton) ;
2620 fhPtNoIsoMCPhoton = new TH1F
2621 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
2622 fhPtNoIsoMCPhoton->SetYTitle("N");
2623 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2624 outputContainer->Add(fhPtNoIsoMCPhoton) ;
2626 // fhPtNoIsoConversion = new TH1F
2627 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
2628 // fhPtNoIsoConversion->SetYTitle("N");
2629 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
2630 // outputContainer->Add(fhPtNoIsoConversion) ;
2632 fhPtNoIsoFragmentation = new TH1F
2633 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
2634 fhPtNoIsoFragmentation->SetYTitle("N");
2635 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
2636 outputContainer->Add(fhPtNoIsoFragmentation) ;
2638 fhPtNoIsoHadron = new TH1F
2639 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
2640 fhPtNoIsoHadron->SetYTitle("N");
2641 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
2642 outputContainer->Add(fhPtNoIsoHadron) ;
2649 const Int_t buffersize = 255;
2650 char name[buffersize];
2651 char title[buffersize];
2652 for(Int_t icone = 0; icone<fNCones; icone++)
2654 // sum pt in cone vs. pt leading
2655 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
2656 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2657 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2658 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2659 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2660 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
2662 // pt in cone vs. pt leading
2663 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
2664 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2665 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2666 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2667 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2668 outputContainer->Add(fhPtLeadingPt[icone]) ;
2670 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
2671 snprintf(name, buffersize,"hPerpSumPtLeadingPt_Cone_%d",icone);
2672 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2673 fhPerpSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2674 fhPerpSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2675 fhPerpSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2676 outputContainer->Add(fhPerpSumPtLeadingPt[icone]) ;
2678 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
2679 snprintf(name, buffersize,"hPerpPtLeadingPt_Cone_%d",icone);
2680 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2681 fhPerpPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2682 fhPerpPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2683 fhPerpPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2684 outputContainer->Add(fhPerpPtLeadingPt[icone]) ;
2689 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
2690 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2691 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2692 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2693 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
2694 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
2696 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
2697 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
2698 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2699 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2700 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
2701 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
2703 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
2704 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2705 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2706 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2707 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
2708 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
2710 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
2711 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2712 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2713 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2714 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
2715 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
2717 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
2718 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2719 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2720 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2721 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2722 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
2724 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
2725 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2726 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2727 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2728 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2729 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
2731 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
2732 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2733 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2734 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2735 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
2736 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
2738 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
2739 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2740 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2741 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2742 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
2743 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
2747 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
2750 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
2751 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2752 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2753 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2754 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
2756 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
2757 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2758 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2759 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2760 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
2763 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
2764 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2765 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2766 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2767 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2768 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
2770 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
2771 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]);
2772 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2773 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2774 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2775 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
2777 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
2778 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]);
2779 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2780 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2781 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2782 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
2784 // pt decays isolated
2785 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2786 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]);
2787 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2788 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2789 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
2791 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2792 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]);
2793 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2794 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2795 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
2797 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2798 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]);
2799 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2800 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2801 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2802 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
2804 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2805 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]);
2806 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2807 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2808 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2809 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
2811 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2812 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]);
2813 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2814 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2815 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2816 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
2820 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
2821 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2822 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2823 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
2824 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
2825 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
2827 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
2828 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2829 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2830 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
2831 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
2832 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
2834 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
2835 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2836 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2837 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
2838 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
2839 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
2841 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
2842 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]);
2843 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2844 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
2845 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
2846 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
2848 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
2849 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]);
2850 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2851 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
2852 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
2853 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
2856 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2857 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]);
2858 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2859 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
2860 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
2861 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
2863 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2864 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]);
2865 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2866 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
2867 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
2868 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
2871 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2872 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]);
2873 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2874 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2875 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2876 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
2878 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2879 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]);
2880 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2881 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
2882 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
2883 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
2885 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2886 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]);
2887 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2888 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2889 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2890 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
2895 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
2896 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2897 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2898 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2899 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
2901 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
2902 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2903 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2904 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2905 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
2907 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
2908 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2909 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2910 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2911 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
2913 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
2914 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2915 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2916 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2917 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
2919 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
2920 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2921 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2922 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2923 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
2925 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
2926 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2927 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2928 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2929 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
2931 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
2932 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2933 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2934 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2935 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
2937 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
2938 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2939 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2940 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2941 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
2943 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
2944 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2945 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2946 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2947 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
2949 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
2950 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2951 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2952 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2953 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
2956 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
2957 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2958 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2959 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2960 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
2962 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
2963 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2964 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2965 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2966 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
2968 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
2969 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2970 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2971 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2972 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
2974 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
2975 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2976 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2977 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2978 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
2980 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
2981 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2982 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2983 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2984 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
2986 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
2987 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2988 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2989 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2990 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
2997 if(fFillPileUpHistograms)
2999 for (Int_t i = 0; i < 7 ; i++)
3001 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
3002 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()),
3003 nptbins,ptmin,ptmax);
3004 fhEIsoPileUp[i]->SetYTitle("dN / dE");
3005 fhEIsoPileUp[i]->SetXTitle("E (GeV)");
3006 outputContainer->Add(fhEIsoPileUp[i]) ;
3008 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
3009 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()),
3010 nptbins,ptmin,ptmax);
3011 fhPtIsoPileUp[i]->SetYTitle("dN / p_{T}");
3012 fhPtIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
3013 outputContainer->Add(fhPtIsoPileUp[i]) ;
3015 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
3016 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()),
3017 nptbins,ptmin,ptmax);
3018 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
3019 fhENoIsoPileUp[i]->SetXTitle("E (GeV)");
3020 outputContainer->Add(fhENoIsoPileUp[i]) ;
3022 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
3023 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()),
3024 nptbins,ptmin,ptmax);
3025 fhPtNoIsoPileUp[i]->SetYTitle("dN / p_{T}");
3026 fhPtNoIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
3027 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
3030 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3031 fhTimeENoCut->SetXTitle("E (GeV)");
3032 fhTimeENoCut->SetYTitle("time (ns)");
3033 outputContainer->Add(fhTimeENoCut);
3035 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3036 fhTimeESPD->SetXTitle("E (GeV)");
3037 fhTimeESPD->SetYTitle("time (ns)");
3038 outputContainer->Add(fhTimeESPD);
3040 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3041 fhTimeESPDMulti->SetXTitle("E (GeV)");
3042 fhTimeESPDMulti->SetYTitle("time (ns)");
3043 outputContainer->Add(fhTimeESPDMulti);
3045 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3046 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
3047 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
3048 outputContainer->Add(fhTimeNPileUpVertSPD);
3050 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
3051 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
3052 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
3053 outputContainer->Add(fhTimeNPileUpVertTrack);
3055 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3056 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
3057 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
3058 outputContainer->Add(fhTimeNPileUpVertContributors);
3060 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);
3061 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
3062 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
3063 outputContainer->Add(fhTimePileUpMainVertexZDistance);
3065 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
3066 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
3067 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
3068 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
3071 return outputContainer ;
3075 //__________________________________
3076 void AliAnaParticleIsolation::Init()
3078 // Do some checks and init stuff
3080 // In case of several cone and thresholds analysis, open the cuts for the filling of the
3081 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
3082 // The different cones, thresholds are tested for this list of tracks, clusters.
3085 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
3086 GetIsolationCut()->SetPtThreshold(100);
3087 GetIsolationCut()->SetPtFraction(100);
3088 GetIsolationCut()->SetConeSize(1);
3092 //____________________________________________
3093 void AliAnaParticleIsolation::InitParameters()
3096 //Initialize the parameters of the analysis.
3097 SetInputAODName("PWG4Particle");
3098 SetAODObjArrayName("IsolationCone");
3099 AddToHistogramsName("AnaIsolation_");
3101 fCalorimeter = "PHOS" ;
3102 fReMakeIC = kFALSE ;
3103 fMakeSeveralIC = kFALSE ;
3105 //----------- Several IC-----------------
3108 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
3109 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
3110 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
3111 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
3113 //------------- Histograms settings -------
3114 fHistoNPtSumBins = 100 ;
3115 fHistoPtSumMax = 50 ;
3116 fHistoPtSumMin = 0. ;
3118 fHistoNPtInConeBins = 100 ;
3119 fHistoPtInConeMax = 50 ;
3120 fHistoPtInConeMin = 0. ;
3124 //__________________________________________________
3125 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
3127 //Do analysis and fill aods
3128 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
3130 if(!GetInputAODBranch())
3132 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
3136 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
3138 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());
3142 Int_t n = 0, nfrac = 0;
3143 Bool_t isolated = kFALSE ;
3144 Float_t coneptsum = 0 ;
3145 TObjArray * pl = 0x0; ;
3147 //Select the calorimeter for candidate isolation with neutral particles
3148 if (fCalorimeter == "PHOS" )
3149 pl = GetPHOSClusters();
3150 else if (fCalorimeter == "EMCAL")
3151 pl = GetEMCALClusters();
3153 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
3154 Double_t ptLeading = 0. ;
3155 Int_t idLeading = -1 ;
3156 TLorentzVector mom ;
3157 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3158 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
3160 for(Int_t iaod = 0; iaod < naod; iaod++)
3162 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3164 //If too small or too large pt, skip
3165 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
3167 //check if it is low pt trigger particle
3168 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
3169 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
3172 continue ; //trigger should not come from underlying event
3175 //vertex cut in case of mixing
3176 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
3177 if(check == 0) continue;
3178 if(check == -1) return;
3180 //find the leading particles with highest momentum
3181 if ( aodinput->Pt() > ptLeading )
3183 ptLeading = aodinput->Pt() ;
3187 aodinput->SetLeadingParticle(kFALSE);
3189 }//finish searching for leading trigger particle
3191 // Check isolation of leading particle
3192 if(idLeading < 0) return;
3194 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
3195 aodinput->SetLeadingParticle(kTRUE);
3197 // Check isolation only of clusters in fiducial region
3198 if(IsFiducialCutOn())
3200 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
3204 //After cuts, study isolation
3205 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
3206 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
3207 GetReader(), GetCaloPID(),
3208 kTRUE, aodinput, GetAODObjArrayName(),
3209 n,nfrac,coneptsum, isolated);
3211 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
3215 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
3216 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
3221 //_________________________________________________________
3222 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
3224 //Do analysis and fill histograms
3226 //Loop on stored AOD
3227 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3228 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
3230 for(Int_t iaod = 0; iaod < naod ; iaod++)
3232 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3234 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
3236 // Check isolation only of clusters in fiducial region
3237 if(IsFiducialCutOn())
3239 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
3240 if(! in ) continue ;
3243 Float_t pt = aod->Pt();
3244 //If too small or too large pt, skip
3245 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
3247 Bool_t isolated = aod->IsIsolated();
3248 Bool_t decay = aod->IsTagged();
3249 Float_t energy = aod->E();
3250 Float_t phi = aod->Phi();
3251 Float_t eta = aod->Eta();
3253 // --- In case of redoing isolation from delta AOD ----
3257 //Analysis of multiple IC at same time
3258 MakeSeveralICAnalysis(aod);
3263 //In case a more strict IC is needed in the produced AOD
3265 Int_t n = 0, nfrac = 0;
3266 Float_t coneptsum = 0 ;
3268 //Recover reference arrays with clusters and tracks
3269 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
3270 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
3272 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3273 GetReader(), GetCaloPID(),
3275 n,nfrac,coneptsum, isolated);
3277 fhConeSumPt ->Fill(pt, coneptsum);
3278 fhConeSumPtTrigEtaPhi->Fill(eta,phi,coneptsum);
3280 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
3284 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
3286 FillTrackMatchingShowerShapeControlHistograms(aod,GetReader(), GetCaloPID());
3288 //Fill pt/sum pT distribution of particles in cone or in UE band
3289 Float_t coneptsumCluster = 0;
3290 Float_t coneptsumTrack = 0;
3291 Float_t coneptsumCell = 0;
3293 CalculateTrackSignalInCone (aod,coneptsumTrack );
3294 CalculateCaloSignalInCone (aod,coneptsumCluster);
3295 CalculateCaloCellSignalInCone(aod,coneptsumCell );
3297 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
3299 fhConeSumPtClustervsTrack ->Fill(coneptsumCluster,coneptsumTrack);
3300 fhConeSumPtCellvsTrack ->Fill(coneptsumCell, coneptsumTrack);
3301 fhConeSumPtCellTrack ->Fill(pt, coneptsumTrack+coneptsumCell);
3302 fhConeSumPtCellTrackTrigEtaPhi->Fill(eta,phi,coneptsumTrack+coneptsumCell);
3305 fhConeSumPt ->Fill(pt, coneptsumTrack+coneptsumCluster);
3306 fhConeSumPtTrigEtaPhi ->Fill(eta,phi,coneptsumTrack+coneptsumCluster);
3309 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsumTrack+coneptsumCluster);
3311 //normalize phi/eta band per area unit
3312 CalculateNormalizeUEBandPerUnitArea(aod, coneptsumCluster, coneptsumCell, coneptsumTrack) ;
3315 Int_t mcTag = aod->GetTag() ;
3319 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
3321 // Fill histograms to undertand pile-up before other cuts applied
3322 // Remember to relax time cuts in the reader
3323 FillPileUpHistograms(aod->GetCaloLabel(0));
3325 fhEIso ->Fill(energy);
3327 fhPhiIso ->Fill(pt,phi);
3328 fhEtaIso ->Fill(pt,eta);
3329 fhEtaPhiIso ->Fill(eta,phi);
3331 fhPtNLocMaxIso ->Fill(pt,aod->GetFiducialArea()) ;
3332 fhPtCentralityIso ->Fill(pt,GetEventCentrality()) ;
3333 fhPtEventPlaneIso ->Fill(pt,GetEventPlaneAngle() ) ;
3337 fhPtDecayIso ->Fill(pt);
3338 fhEtaPhiDecayIso->Fill(eta,phi);
3341 if(fFillPileUpHistograms)
3343 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
3344 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
3345 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
3346 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
3347 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
3348 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
3349 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
3355 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
3357 fhPtIsoMCPhoton ->Fill(pt);
3360 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
3362 fhPtIsoPrompt ->Fill(pt);
3363 fhPhiIsoPrompt ->Fill(pt,phi);
3364 fhEtaIsoPrompt ->Fill(pt,eta);
3366 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
3368 fhPtIsoFragmentation ->Fill(pt);
3369 fhPhiIsoFragmentation ->Fill(pt,phi);
3370 fhEtaIsoFragmentation ->Fill(pt,eta);
3372 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
3374 fhPtIsoPi0 ->Fill(pt);
3375 fhPhiIsoPi0 ->Fill(pt,phi);
3376 fhEtaIsoPi0 ->Fill(pt,eta);
3378 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
3380 fhPtIsoPi0Decay ->Fill(pt);
3381 fhPhiIsoPi0Decay ->Fill(pt,phi);
3382 fhEtaIsoPi0Decay ->Fill(pt,eta);
3384 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
3386 fhPtIsoEtaDecay ->Fill(pt);
3387 fhPhiIsoEtaDecay ->Fill(pt,phi);
3388 fhEtaIsoEtaDecay ->Fill(pt,eta);
3390 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
3392 fhPtIsoOtherDecay ->Fill(pt);
3393 fhPhiIsoOtherDecay ->Fill(pt,phi);
3394 fhEtaIsoOtherDecay ->Fill(pt,eta);
3396 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
3398 // fhPtIsoConversion ->Fill(pt);
3399 // fhPhiIsoConversion ->Fill(pt,phi);
3400 // fhEtaIsoConversion ->Fill(pt,eta);
3402 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
3404 fhPtIsoHadron ->Fill(pt);
3405 fhPhiIsoHadron ->Fill(pt,phi);
3406 fhEtaIsoHadron ->Fill(pt,eta);
3408 }//Histograms with MC
3410 }//Isolated histograms
3411 else // NON isolated
3413 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
3415 fhENoIso ->Fill(energy);
3416 fhPtNoIso ->Fill(pt);
3417 fhEtaPhiNoIso ->Fill(eta,phi);
3418 fhPtNLocMaxNoIso->Fill(pt,aod->GetFiducialArea());
3420 if(fFillPileUpHistograms)
3422 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
3423 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
3424 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
3425 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
3426 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
3427 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
3428 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
3433 fhPtDecayNoIso ->Fill(pt);
3434 fhEtaPhiDecayNoIso->Fill(eta,phi);
3439 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
3440 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
3441 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
3442 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
3443 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
3444 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
3445 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
3446 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
3447 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
3454 //_____________________________________________________________________________________
3455 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
3458 //Isolation Cut Analysis for both methods and different pt cuts and cones
3459 Float_t ptC = ph->Pt();
3460 Float_t etaC = ph->Eta();
3461 Float_t phiC = ph->Phi();
3462 Int_t tag = ph->GetTag();
3463 Bool_t decay = ph->IsTagged();
3465 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
3467 //Keep original setting used when filling AODs, reset at end of analysis
3468 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
3469 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
3470 Float_t rorg = GetIsolationCut()->GetConeSize();
3472 Float_t coneptsum = 0 ;
3473 Int_t n [10][10];//[fNCones][fNPtThresFrac];
3474 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
3475 Bool_t isolated = kFALSE;
3477 Int_t nFracCone = 0;
3479 // fill hist with all particles before isolation criteria
3480 fhPtNoIso ->Fill(ptC);
3481 fhEtaPhiNoIso->Fill(etaC,phiC);
3485 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
3486 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
3487 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
3488 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
3489 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
3490 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
3491 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
3492 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
3493 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
3498 fhPtDecayNoIso ->Fill(ptC);
3499 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
3501 //Get vertex for photon momentum calculation
3502 Double_t vertex[] = {0,0,0} ; //vertex ;
3503 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
3504 GetReader()->GetVertex(vertex);
3506 //Loop on cone sizes
3507 for(Int_t icone = 0; icone<fNCones; icone++)
3509 //Recover reference arrays with clusters and tracks
3510 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
3511 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
3513 //If too small or too large pt, skip
3514 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
3516 //In case a more strict IC is needed in the produced AOD
3518 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
3520 GetIsolationCut()->SetSumPtThreshold(100);
3521 GetIsolationCut()->SetPtThreshold(100);
3522 GetIsolationCut()->SetPtFraction(100);
3523 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
3524 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3525 GetReader(), GetCaloPID(),
3527 nCone,nFracCone,coneptsum, isolated);
3530 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
3532 // retreive pt tracks to fill histo vs. pt leading
3533 //Fill pt distribution of particles in cone
3534 //fhPtLeadingPt(),fhPerpSumPtLeadingPt(),fhPerpPtLeadingPt(),
3538 Double_t sumptPerp = 0. ;
3539 TObjArray * trackList = GetCTSTracks() ;
3540 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
3542 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
3543 //fill the histograms at forward range
3546 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
3550 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
3551 Double_t dEta = etaC - track->Eta();
3552 Double_t arg = dPhi*dPhi + dEta*dEta;
3553 if(TMath::Sqrt(arg) < fConeSizes[icone])
3555 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3556 sumptPerp+=track->Pt();
3559 dPhi = phiC - track->Phi() - TMath::PiOver2();
3560 arg = dPhi*dPhi + dEta*dEta;
3561 if(TMath::Sqrt(arg) < fConeSizes[icone])
3563 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3564 sumptPerp+=track->Pt();
3568 fhPerpSumPtLeadingPt[icone]->Fill(ptC,sumptPerp);
3572 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
3574 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
3575 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3576 coneptsum+=track->Pt();
3583 TLorentzVector mom ;
3584 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
3586 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
3587 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
3589 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
3590 coneptsum+=mom.Pt();
3596 //Loop on ptthresholds
3597 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
3600 nfrac[icone][ipt]=0;
3601 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
3602 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
3603 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
3605 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3606 GetReader(), GetCaloPID(),
3608 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3610 if(!isolated) continue;
3611 //Normal ptThreshold cut
3613 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",
3614 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3615 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
3617 if(n[icone][ipt] == 0)
3619 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
3620 fhPtThresIsolated[icone][ipt]->Fill(ptC);
3621 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
3625 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
3626 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
3631 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3632 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3633 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3634 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3635 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3636 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3637 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3638 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
3642 // pt in cone fraction
3643 if(nfrac[icone][ipt] == 0)
3645 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
3646 fhPtFracIsolated[icone][ipt]->Fill(ptC);
3647 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
3651 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
3652 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
3657 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3658 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3659 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3660 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3661 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3662 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3663 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3664 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
3668 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
3670 //Pt threshold on pt cand/ sum in cone histograms
3671 if(coneptsum<fSumPtThresholds[ipt])
3672 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
3673 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
3674 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
3675 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
3678 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
3679 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
3683 // pt sum pt frac method
3684 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
3686 if(coneptsum < fPtFractions[ipt]*ptC)
3688 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
3689 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
3690 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
3694 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
3695 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
3700 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
3701 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
3702 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
3703 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
3704 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
3705 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
3709 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
3710 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
3718 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
3719 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
3720 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
3721 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
3722 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
3723 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
3724 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
3725 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
3730 //Reset original parameters for AOD analysis
3731 GetIsolationCut()->SetPtThreshold(ptthresorg);
3732 GetIsolationCut()->SetPtFraction(ptfracorg);
3733 GetIsolationCut()->SetConeSize(rorg);
3737 //_____________________________________________________________
3738 void AliAnaParticleIsolation::Print(const Option_t * opt) const
3741 //Print some relevant parameters set for the analysis
3745 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3746 AliAnaCaloTrackCorrBaseClass::Print(" ");
3748 printf("ReMake Isolation = %d \n", fReMakeIC) ;
3749 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
3750 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
3754 printf("N Cone Sizes = %d\n", fNCones) ;
3755 printf("Cone Sizes = \n") ;
3756 for(Int_t i = 0; i < fNCones; i++)
3757 printf(" %1.2f;", fConeSizes[i]) ;
3760 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
3761 printf(" pT thresholds = \n") ;
3762 for(Int_t i = 0; i < fNPtThresFrac; i++)
3763 printf(" %2.2f;", fPtThresholds[i]) ;
3767 printf(" pT fractions = \n") ;
3768 for(Int_t i = 0; i < fNPtThresFrac; i++)
3769 printf(" %2.2f;", fPtFractions[i]) ;
3773 printf("sum pT thresholds = \n") ;
3774 for(Int_t i = 0; i < fNPtThresFrac; i++)
3775 printf(" %2.2f;", fSumPtThresholds[i]) ;
3780 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
3781 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);