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*16/3 ; // 5 full-size Sectors (2 SM) + 1 one-third Sector (2 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 = 2*inSector + 1;
407 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
409 inSupMod = 2*inSector;
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 ;
418 if(TMath::Abs(irow-rowTrig) < sqrSize) continue ;
420 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
421 if(!eGeom->CheckAbsCellId(iabsId)) continue;
422 etaBandPtSumCells += cells->GetCellAmplitude(iabsId);
426 // Loop on cells in phi band
427 for(Int_t icol = colTrig-sqrSize; icol < colTrig+sqrSize; icol++)
429 for(Int_t irow = 0; irow < nTotalRows; irow++)
431 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
434 if(icol < AliEMCALGeoParams::fgkEMCALCols)
436 inSupMod = 2*inSector + 1;
439 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
441 inSupMod = 2*inSector;
442 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
445 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ; // Stesso problema di sopra //
447 // Exclude cells in cone
448 if(TMath::Abs(icol-colTrig) < sqrSize) continue ;
449 if(TMath::Abs(irow-rowTrig) < sqrSize) continue ;
451 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
452 if(!eGeom->CheckAbsCellId(iabsId)) continue;
453 phiBandPtSumCells += cells->GetCellAmplitude(iabsId);
460 Float_t ptTrig = pCandidate->Pt();
462 fhConeSumPtEtaBandUECell ->Fill(ptTrig , etaBandPtSumCells);
463 fhConeSumPtPhiBandUECell ->Fill(ptTrig , phiBandPtSumCells);
464 fhConeSumPtEtaBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSumCells);
465 fhConeSumPtPhiBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSumCells);
469 //________________________________________________________________________________________________
470 void AliAnaParticleIsolation::CalculateTrackUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
471 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
473 // Get the track pT or sum of pT in phi/eta bands or at 45 degrees from trigger
475 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
477 Float_t conesize = GetIsolationCut()->GetConeSize();
479 Double_t sumptPerp= 0. ;
480 Float_t ptTrig = pCandidate->Pt() ;
481 Float_t phiTrig = pCandidate->Phi();
482 Float_t etaTrig = pCandidate->Eta();
484 TObjArray * trackList = GetCTSTracks() ;
485 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
487 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
491 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
495 //Do not count the candidate (pion, conversion photon) or the daughters of the candidate
496 if(track->GetID() == pCandidate->GetTrackLabel(0) || track->GetID() == pCandidate->GetTrackLabel(1) ||
497 track->GetID() == pCandidate->GetTrackLabel(2) || track->GetID() == pCandidate->GetTrackLabel(3) ) continue ;
499 //exclude particles in cone
500 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, track->Eta(), track->Phi());
501 if(rad < conesize) continue ;
503 //fill histogram for UE in phi band
504 if(track->Eta() > (etaTrig-conesize) && track->Eta() < (etaTrig+conesize))
506 phiBandPtSum+=track->Pt();
507 fhPhiBandTrack->Fill(track->Eta(),track->Phi());
510 //fill histogram for UE in eta band in EMCal acceptance
511 if(track->Phi() > (phiTrig-conesize) && track->Phi() < (phiTrig+conesize))
513 etaBandPtSum+=track->Pt();
514 fhEtaBandTrack->Fill(track->Eta(),track->Phi());
517 //fill the histograms at +-45 degrees in phi from trigger particle, perpedicular to trigger axis in phi
518 Double_t dPhi = phiTrig - track->Phi() + TMath::PiOver2();
519 Double_t dEta = etaTrig - track->Eta();
520 Double_t arg = dPhi*dPhi + dEta*dEta;
521 if(TMath::Sqrt(arg) < conesize)
523 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
524 sumptPerp+=track->Pt();
527 dPhi = phiTrig - track->Phi() - TMath::PiOver2();
528 arg = dPhi*dPhi + dEta*dEta;
529 if(TMath::Sqrt(arg) < conesize)
531 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
532 sumptPerp+=track->Pt();
536 fhPerpConeSumPt ->Fill(ptTrig , sumptPerp );
537 fhConeSumPtEtaBandUETrack ->Fill(ptTrig , etaBandPtSum);
538 fhConeSumPtPhiBandUETrack ->Fill(ptTrig , phiBandPtSum);
539 fhConeSumPtEtaBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
540 fhConeSumPtPhiBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
545 //________________________________________________________________________________________________________
546 Float_t AliAnaParticleIsolation::CalculateExcessAreaFraction(const Float_t excess, const Float_t conesize)
548 // Area of a circunference segment segment 1/2 R^2 (angle-sin(angle)), angle = 2*ACos((R-excess)/R)
551 Float_t angle = 2*TMath::ACos( (conesize-excess) / conesize );
553 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
555 Float_t excessA = conesize*conesize / 2 * (angle-TMath::Sin(angle));
557 if(coneA > excessA) return coneA / (coneA-excessA);
560 printf("AliAnaParticleIsolation::CalculateExcessAreaFraction() - Please Check : Excess Track %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",
561 excess,coneA, excessA, angle*TMath::RadToDeg(), coneA / (coneA-excessA));
566 //___________________________________________________________________________________________________________________________________
567 void AliAnaParticleIsolation::CalculateNormalizeUEBandPerUnitArea(AliAODPWG4ParticleCorrelation * pCandidate,
568 const Float_t coneptsumCluster, const Float_t coneptsumCell, const Float_t coneptsumTrack)
570 //normalize phi/eta band per area unit
572 Float_t etaUEptsumTrack = 0 ;
573 Float_t phiUEptsumTrack = 0 ;
574 Float_t etaUEptsumCluster = 0 ;
575 Float_t phiUEptsumCluster = 0 ;
576 Float_t etaUEptsumCell = 0 ;
577 Float_t phiUEptsumCell = 0 ;
579 Int_t partTypeInCone = GetIsolationCut()->GetParticleTypeInCone();
581 // Sum the pT in the phi or eta band for clusters or tracks
583 CalculateTrackUEBand (pCandidate,etaUEptsumTrack ,phiUEptsumTrack );
584 CalculateCaloUEBand (pCandidate,etaUEptsumCluster,phiUEptsumCluster);
585 CalculateCaloCellUEBand(pCandidate,etaUEptsumCell ,phiUEptsumCell );
587 // Do the normalization
589 Float_t conesize = GetIsolationCut()->GetConeSize();
590 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
591 Float_t ptTrig = pCandidate->Pt() ;
592 Float_t phiTrig = pCandidate->Phi();
593 Float_t etaTrig = pCandidate->Eta();
598 Float_t phiUEptsumTrackNorm = 0 ;
599 Float_t etaUEptsumTrackNorm = 0 ;
600 Float_t coneptsumTrackSubPhi = 0 ;
601 Float_t coneptsumTrackSubEta = 0 ;
602 Float_t coneptsumTrackSubPhiNorm = 0 ;
603 Float_t coneptsumTrackSubEtaNorm = 0 ;
605 if( partTypeInCone!=AliIsolationCut::kOnlyNeutral )
607 // Get the cut used for the TPC tracks in the reader, +-0.8, +-0.9 ...
608 // Only valid in simple fidutial cut case and if the cut is applied, careful!
609 Float_t tpcEtaSize = GetReader()->GetFiducialCut()->GetCTSFidCutMaxEtaArray()->At(0) -
610 GetReader()->GetFiducialCut()->GetCTSFidCutMinEtaArray()->At(0) ;
611 Float_t tpcPhiSize = TMath::TwoPi();
613 //printf("tracks eta fiducial acceptance %f\n",tpcEtaSize);
615 phiUEptsumTrackNorm = phiUEptsumTrack*(coneA / ((2*conesize*tpcPhiSize)-coneA)); // pi * R^2 / (2 R * 2 pi) - trigger cone
616 etaUEptsumTrackNorm = etaUEptsumTrack*(coneA / ((2*conesize*tpcEtaSize)-coneA)); // pi * R^2 / (2 R * 1.6) - trigger cone
618 // Need to correct coneptsumTrack by the fraction of the cone out of track cut acceptance!
619 Float_t correctConeSumTrack = 1;
620 if(TMath::Abs(etaTrig)+conesize > tpcEtaSize/2.)
622 Float_t excess = TMath::Abs(etaTrig) + conesize - tpcEtaSize/2.;
623 correctConeSumTrack = CalculateExcessAreaFraction(excess,conesize);
624 //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);
626 // Need to correct phi band surface if part of the cone falls out of track cut acceptance! Not sure this will happen.
627 phiUEptsumTrackNorm = phiUEptsumTrack*(coneA / ((2*(conesize-excess)*tpcPhiSize)-(coneA-correctConeSumTrack)));
630 coneptsumTrackSubPhi = coneptsumTrack*correctConeSumTrack - phiUEptsumTrackNorm;
631 coneptsumTrackSubEta = coneptsumTrack*correctConeSumTrack - etaUEptsumTrackNorm;
633 fhConeSumPtPhiUESubTrack ->Fill(ptTrig , coneptsumTrackSubPhi);
634 fhConeSumPtPhiUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubPhi);
635 fhConeSumPtEtaUESubTrack ->Fill(ptTrig , coneptsumTrackSubEta);
636 fhConeSumPtEtaUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubEta);
638 fhFractionTrackOutConeEta ->Fill(ptTrig , correctConeSumTrack-1);
639 fhFractionTrackOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig,correctConeSumTrack-1);
641 coneptsumTrackSubPhiNorm = coneptsumTrackSubPhi/coneptsumTrack;
642 coneptsumTrackSubEtaNorm = coneptsumTrackSubEta/coneptsumTrack;
644 fhConeSumPtSubvsConeSumPtTotPhiTrack ->Fill(coneptsumTrack,coneptsumTrackSubPhi);
645 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->Fill(coneptsumTrack,coneptsumTrackSubPhiNorm);
646 fhConeSumPtSubvsConeSumPtTotEtaTrack ->Fill(coneptsumTrack,coneptsumTrackSubEta);
647 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->Fill(coneptsumTrack,coneptsumTrackSubEtaNorm);
651 // ------------------------ //
652 // EMCal Clusters and cells //
653 // ------------------------ //
654 Float_t phiUEptsumClusterNorm = 0 ;
655 Float_t etaUEptsumClusterNorm = 0 ;
656 Float_t coneptsumClusterSubPhi = 0 ;
657 Float_t coneptsumClusterSubEta = 0 ;
658 Float_t coneptsumClusterSubPhiNorm = 0 ;
659 Float_t coneptsumClusterSubEtaNorm = 0 ;
660 Float_t phiUEptsumCellNorm = 0 ;
661 Float_t etaUEptsumCellNorm = 0 ;
662 Float_t coneptsumCellSubPhi = 0 ;
663 Float_t coneptsumCellSubEta = 0 ;
664 Float_t coneptsumCellSubPhiNorm = 0 ;
665 Float_t coneptsumCellSubEtaNorm = 0 ;
667 if( partTypeInCone!=AliIsolationCut::kOnlyCharged )
669 //Careful here if EMCal limits changed .. 2010 (4 SM) to 2011-12 (10 SM), for the moment consider 100 deg in phi
670 Float_t emcEtaSize = 0.7*2;
671 Float_t emcPhiSize = TMath::DegToRad()*100;
677 phiUEptsumClusterNorm = phiUEptsumCluster*(coneA / ((2*conesize*emcPhiSize)-coneA)); // pi * R^2 / (2 R * 2 100 deg) - trigger cone
678 etaUEptsumClusterNorm = etaUEptsumCluster*(coneA / ((2*conesize*emcEtaSize)-coneA)); // pi * R^2 / (2 R * 2*1.7) - trigger cone
680 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
682 Float_t correctConeSumClusterEta = 1;
683 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
685 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
686 correctConeSumClusterEta = CalculateExcessAreaFraction(excess,conesize);
687 //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);
689 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
690 phiUEptsumClusterNorm = phiUEptsumCluster*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumClusterEta)));
693 Float_t correctConeSumClusterPhi = 1;
694 //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() );
695 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
696 (phiTrig-conesize < 80*TMath::DegToRad()))
699 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
700 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
702 correctConeSumClusterPhi = CalculateExcessAreaFraction(excess,conesize);
703 //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);
705 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
706 etaUEptsumClusterNorm = etaUEptsumCluster*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumClusterPhi)));
709 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
711 coneptsumClusterSubPhi = coneptsumCluster*correctConeSumClusterEta*correctConeSumClusterPhi - phiUEptsumClusterNorm;
712 coneptsumClusterSubEta = coneptsumCluster*correctConeSumClusterEta*correctConeSumClusterPhi - etaUEptsumClusterNorm;
714 fhConeSumPtPhiUESubCluster ->Fill(ptTrig , coneptsumClusterSubPhi);
715 fhConeSumPtPhiUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubPhi);
716 fhConeSumPtEtaUESubCluster ->Fill(ptTrig , coneptsumClusterSubEta);
717 fhConeSumPtEtaUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubEta);
719 fhFractionClusterOutConeEta ->Fill(ptTrig , correctConeSumClusterEta-1);
720 fhFractionClusterOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterEta-1);
721 fhFractionClusterOutConePhi ->Fill(ptTrig , correctConeSumClusterPhi-1);
722 fhFractionClusterOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterPhi-1);
724 coneptsumClusterSubPhiNorm = coneptsumClusterSubPhi/coneptsumCluster;
725 coneptsumClusterSubEtaNorm = coneptsumClusterSubEta/coneptsumCluster;
727 fhConeSumPtSubvsConeSumPtTotPhiCluster ->Fill(coneptsumCluster,coneptsumClusterSubPhi);
728 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->Fill(coneptsumCluster,coneptsumClusterSubPhiNorm);
729 fhConeSumPtSubvsConeSumPtTotEtaCluster ->Fill(coneptsumCluster,coneptsumClusterSubEta);
730 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->Fill(coneptsumCluster,coneptsumClusterSubEtaNorm);
736 phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*conesize*emcPhiSize)-coneA));
737 etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*conesize*emcEtaSize)-coneA));
739 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
741 Float_t correctConeSumCellEta = 1;
742 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
744 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
745 correctConeSumCellEta = CalculateExcessAreaFraction(excess,conesize);
746 //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);
747 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
748 phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta)));
751 Float_t correctConeSumCellPhi = 1;
752 //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() );
753 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
754 (phiTrig-conesize < 80*TMath::DegToRad()))
757 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
758 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
760 correctConeSumCellPhi = CalculateExcessAreaFraction(excess,conesize);
761 //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);
763 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
764 etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi)));
768 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
769 coneptsumCellSubPhi = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - phiUEptsumCellNorm;
770 coneptsumCellSubEta = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - etaUEptsumCellNorm;
772 fhConeSumPtPhiUESubCell ->Fill(ptTrig , coneptsumCellSubPhi);
773 fhConeSumPtPhiUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubPhi);
774 fhConeSumPtEtaUESubCell ->Fill(ptTrig , coneptsumCellSubEta);
775 fhConeSumPtEtaUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubEta);
777 fhFractionCellOutConeEta ->Fill(ptTrig , correctConeSumCellEta-1);
778 fhFractionCellOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellEta-1);
779 fhFractionCellOutConePhi ->Fill(ptTrig , correctConeSumCellPhi-1);
780 fhFractionCellOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellPhi-1);
782 coneptsumCellSubPhiNorm = coneptsumCellSubPhi/coneptsumCell;
783 coneptsumCellSubEtaNorm = coneptsumCellSubEta/coneptsumCell;
785 fhConeSumPtSubvsConeSumPtTotPhiCell ->Fill(coneptsumCell,coneptsumCellSubPhi);
786 fhConeSumPtSubNormvsConeSumPtTotPhiCell->Fill(coneptsumCell,coneptsumCellSubPhiNorm);
787 fhConeSumPtSubvsConeSumPtTotEtaCell ->Fill(coneptsumCell,coneptsumCellSubEta);
788 fhConeSumPtSubNormvsConeSumPtTotEtaCell->Fill(coneptsumCell,coneptsumCellSubEtaNorm);
792 if( partTypeInCone==AliIsolationCut::kNeutralAndCharged )
795 // --------------------------- //
796 // Tracks and clusters in cone //
797 // --------------------------- //
799 Double_t sumPhiUESub = coneptsumClusterSubPhi + coneptsumTrackSubPhi;
800 Double_t sumEtaUESub = coneptsumClusterSubEta + coneptsumTrackSubEta;
802 fhConeSumPtPhiUESub ->Fill(ptTrig , sumPhiUESub);
803 fhConeSumPtPhiUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESub);
804 fhConeSumPtEtaUESub ->Fill(ptTrig , sumEtaUESub);
805 fhConeSumPtEtaUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESub);
807 fhEtaBandClustervsTrack ->Fill(etaUEptsumCluster ,etaUEptsumTrack );
808 fhPhiBandClustervsTrack ->Fill(phiUEptsumCluster ,phiUEptsumTrack );
809 fhEtaBandNormClustervsTrack->Fill(etaUEptsumClusterNorm,etaUEptsumTrackNorm);
810 fhPhiBandNormClustervsTrack->Fill(phiUEptsumClusterNorm,phiUEptsumTrackNorm);
812 fhConeSumPtEtaUESubClustervsTrack->Fill(coneptsumClusterSubEta,coneptsumTrackSubEta);
813 fhConeSumPtPhiUESubClustervsTrack->Fill(coneptsumClusterSubPhi,coneptsumTrackSubPhi);
815 // ------------------------ //
816 // Tracks and cells in cone //
817 // ------------------------ //
819 Double_t sumPhiUESubTrackCell = coneptsumCellSubPhi + coneptsumTrackSubPhi;
820 Double_t sumEtaUESubTrackCell = coneptsumCellSubEta + coneptsumTrackSubEta;
822 fhConeSumPtPhiUESubTrackCell ->Fill(ptTrig , sumPhiUESubTrackCell);
823 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESubTrackCell);
824 fhConeSumPtEtaUESubTrackCell ->Fill(ptTrig , sumEtaUESubTrackCell);
825 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESubTrackCell);
827 fhEtaBandCellvsTrack ->Fill(etaUEptsumCell ,etaUEptsumTrack );
828 fhPhiBandCellvsTrack ->Fill(phiUEptsumCell ,phiUEptsumTrack );
829 fhEtaBandNormCellvsTrack->Fill(etaUEptsumCellNorm,etaUEptsumTrackNorm);
830 fhPhiBandNormCellvsTrack->Fill(phiUEptsumCellNorm,phiUEptsumTrackNorm);
832 fhConeSumPtEtaUESubCellvsTrack->Fill(coneptsumCellSubEta,coneptsumTrackSubEta);
833 fhConeSumPtPhiUESubCellvsTrack->Fill(coneptsumCellSubPhi,coneptsumTrackSubPhi);
840 //__________________________________________________________________________________________________
841 void AliAnaParticleIsolation::CalculateCaloSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
842 Float_t & coneptsumCluster)
844 // Get the cluster pT or sum of pT in isolation cone
846 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
848 //Recover reference arrays with clusters and tracks
849 TObjArray * refclusters = aodParticle->GetObjArray(GetAODObjArrayName()+"Clusters");
850 if(!refclusters) return ;
852 Float_t ptTrig = aodParticle->Pt();
854 //Get vertex for cluster momentum calculation
855 Double_t vertex[] = {0,0,0} ; //vertex ;
856 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
857 GetReader()->GetVertex(vertex);
860 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
862 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
863 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
865 fhPtInCone ->Fill(ptTrig, mom.Pt());
866 fhPtClusterInCone->Fill(ptTrig, mom.Pt());
868 if(fFillPileUpHistograms)
870 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(ptTrig,mom.Pt());
871 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,mom.Pt());
872 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,mom.Pt());
873 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,mom.Pt());
874 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,mom.Pt());
875 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,mom.Pt());
876 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,mom.Pt());
879 fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
880 coneptsumCluster+=mom.Pt();
883 fhConeSumPtCluster ->Fill(ptTrig, coneptsumCluster);
886 //__________________________________________________________________________________________________
887 void AliAnaParticleIsolation::CalculateCaloCellSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
888 Float_t & coneptsumCell)
890 // Get the cell amplityde or sum of amplitudes in isolation cone
891 // Mising: Remove signal cells in cone in case the trigger is a cluster!
893 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
895 Float_t conesize = GetIsolationCut()->GetConeSize();
897 Float_t ptTrig = aodParticle->Pt();
898 Float_t phiTrig = aodParticle->Phi();
899 if(phiTrig<0) phiTrig += TMath::TwoPi();
900 Float_t etaTrig = aodParticle->Eta();
902 if(aodParticle->GetDetector()=="EMCAL")
904 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
907 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
909 if(!eGeom->CheckAbsCellId(absId)) return ;
911 // Get absolute (col,row) of trigger particle
912 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
914 Int_t imEta=-1, imPhi=-1;
915 Int_t ieta =-1, iphi =-1;
917 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
919 Int_t iEta=-1, iPhi=-1;
920 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
922 Int_t colTrig = iEta;
923 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + iEta ;
924 Int_t rowTrig = iPhi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
926 Int_t sqrSize = int(conesize/0.0143);
928 AliVCaloCells * cells = GetEMCALCells();
930 // Loop on cells in cone
931 for(Int_t irow = rowTrig-sqrSize; irow < rowTrig+sqrSize; irow++)
933 for(Int_t icol = colTrig-sqrSize; icol < rowTrig+sqrSize; icol++)
935 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
938 if(icol < AliEMCALGeoParams::fgkEMCALCols)
940 inSupMod = 2*inSector + 1;
943 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
945 inSupMod = 2*inSector;
946 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
949 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
951 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
952 if(!eGeom->CheckAbsCellId(iabsId)) continue;
954 fhPtCellInCone->Fill(ptTrig, cells->GetCellAmplitude(iabsId));
955 coneptsumCell += cells->GetCellAmplitude(iabsId);
962 fhConeSumPtCell->Fill(ptTrig,coneptsumCell);
966 //___________________________________________________________________________________________________
967 void AliAnaParticleIsolation::CalculateTrackSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
968 Float_t & coneptsumTrack)
970 // Get the track pT or sum of pT in isolation cone
972 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
974 //Recover reference arrays with clusters and tracks
975 TObjArray * reftracks = aodParticle->GetObjArray(GetAODObjArrayName()+"Tracks");
976 if(!reftracks) return ;
978 Float_t ptTrig = aodParticle->Pt();
979 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
981 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
983 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
984 Float_t pTtrack = track->Pt();
986 fhPtInCone ->Fill(ptTrig,pTtrack);
987 fhPtTrackInCone->Fill(ptTrig,pTtrack);
989 if(fFillPileUpHistograms)
991 ULong_t status = track->GetStatus();
992 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
993 //Double32_t tof = track->GetTOFsignal()*1e-3;
994 Int_t trackBC = track->GetTOFBunchCrossing(bz);
996 if ( okTOF && trackBC!=0 ) fhPtTrackInConeOtherBC->Fill(ptTrig,pTtrack);
997 else if( okTOF && trackBC==0 ) fhPtTrackInConeBC0 ->Fill(ptTrig,pTtrack);
999 Int_t vtxBC = GetReader()->GetVertexBC();
1000 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtTrackInConeVtxBC0->Fill(ptTrig,pTtrack);
1002 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(ptTrig,pTtrack);
1003 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(ptTrig,pTtrack);
1004 if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(ptTrig,pTtrack); }
1005 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,pTtrack);
1006 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,pTtrack);
1007 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,pTtrack);
1008 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,pTtrack);
1009 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,pTtrack);
1010 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,pTtrack);
1013 fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1014 coneptsumTrack+=pTtrack;
1017 fhConeSumPtTrack->Fill(ptTrig, coneptsumTrack);
1021 //_________________________________________________________________
1022 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
1024 // Fill some histograms to understand pile-up
1025 if(!fFillPileUpHistograms) return;
1029 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
1034 TObjArray* clusters = 0x0;
1035 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1036 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1039 Float_t time = -1000;
1043 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1044 energy = cluster->E();
1045 time = cluster->GetTOF()*1e9;
1048 //printf("E %f, time %f\n",energy,time);
1049 AliVEvent * event = GetReader()->GetInputEvent();
1051 fhTimeENoCut->Fill(energy,time);
1052 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
1053 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
1055 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
1057 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
1058 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
1060 // N pile up vertices
1061 Int_t nVerticesSPD = -1;
1062 Int_t nVerticesTracks = -1;
1066 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
1067 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
1072 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
1073 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
1076 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
1077 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
1079 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
1080 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
1083 Float_t z1 = -1, z2 = -1;
1085 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
1089 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
1090 ncont=pv->GetNContributors();
1091 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
1093 diamZ = esdEv->GetDiamondZ();
1097 AliAODVertex *pv=aodEv->GetVertex(iVert);
1098 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
1099 ncont=pv->GetNContributors();
1100 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
1102 diamZ = aodEv->GetDiamondZ();
1105 Double_t distZ = TMath::Abs(z2-z1);
1106 diamZ = TMath::Abs(z2-diamZ);
1108 fhTimeNPileUpVertContributors ->Fill(time,ncont);
1109 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
1110 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
1115 //_____________________________________________________________________________________________________________________
1116 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation *pCandidate,
1117 const AliCaloTrackReader * reader,
1118 const AliCaloPID * pid)
1120 // Fill Track matching and Shower Shape control histograms
1121 if(!fFillTMHisto && !fFillSSHisto) return;
1123 Int_t clusterID = pCandidate->GetCaloLabel(0) ;
1124 Int_t nMaxima = pCandidate->GetFiducialArea(); // bad name, just place holder for the moment
1125 Int_t mcTag = pCandidate->GetTag() ;
1126 Bool_t isolated = pCandidate->IsIsolated();
1130 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
1135 TObjArray* clusters = 0x0;
1136 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1137 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1141 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1142 Float_t energy = cluster->E();
1146 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
1147 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
1151 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
1152 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
1153 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
1154 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
1155 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
1156 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
1158 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
1159 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
1163 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
1165 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
1166 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
1169 fhNLocMax[isolated]->Fill(energy,nMaxima);
1170 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
1171 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
1172 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
1176 //Analyse non-isolated events
1179 Bool_t iso = kFALSE ;
1180 Float_t coneptsum = 0 ;
1182 TObjArray * plNe = pCandidate->GetObjArray(GetAODObjArrayName()+"Clusters");
1183 TObjArray * plCTS = pCandidate->GetObjArray(GetAODObjArrayName()+"Tracks");
1185 GetIsolationCut()->SetPtThresholdMax(1.);
1186 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
1188 kFALSE, pCandidate, "",
1189 n,nfrac,coneptsum, iso);
1191 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
1193 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1196 GetIsolationCut()->SetPtThresholdMax(10000.);
1203 Float_t dZ = cluster->GetTrackDz();
1204 Float_t dR = cluster->GetTrackDx();
1206 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1208 dR = 2000., dZ = 2000.;
1209 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1212 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
1213 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
1215 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
1216 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
1217 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
1220 // Check dEdx and E/p of matched clusters
1222 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1225 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
1229 Float_t dEdx = track->GetTPCsignal();
1230 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
1232 Float_t eOverp = cluster->E()/track->P();
1233 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
1236 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
1241 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
1243 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1244 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
1245 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
1246 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
1247 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
1252 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1253 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
1254 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
1255 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
1256 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
1265 } // clusters array available
1269 //______________________________________________________
1270 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
1272 //Save parameters used for analysis
1273 TString parList ; //this will be list of parameters used for this analysis.
1274 const Int_t buffersize = 255;
1275 char onePar[buffersize] ;
1277 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
1279 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
1281 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
1283 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
1285 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
1287 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
1292 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
1294 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
1297 for(Int_t icone = 0; icone < fNCones ; icone++)
1299 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
1302 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1304 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
1307 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1309 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
1312 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1314 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
1319 //Get parameters set in base class.
1320 parList += GetBaseParametersList() ;
1322 //Get parameters set in IC class.
1323 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
1325 return new TObjString(parList) ;
1329 //________________________________________________________
1330 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
1332 // Create histograms to be saved in output file and
1333 // store them in outputContainer
1334 TList * outputContainer = new TList() ;
1335 outputContainer->SetName("IsolatedParticleHistos") ;
1337 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
1338 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
1339 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
1340 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
1341 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
1342 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
1343 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
1344 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
1345 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
1346 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
1347 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
1348 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
1349 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
1350 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
1351 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
1353 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
1354 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
1355 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
1356 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
1357 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
1358 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
1360 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
1361 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
1362 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
1363 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
1364 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
1365 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
1367 Int_t nptsumbins = fHistoNPtSumBins;
1368 Float_t ptsummax = fHistoPtSumMax;
1369 Float_t ptsummin = fHistoPtSumMin;
1370 Int_t nptinconebins = fHistoNPtInConeBins;
1371 Float_t ptinconemax = fHistoPtInConeMax;
1372 Float_t ptinconemin = fHistoPtInConeMin;
1374 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
1375 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
1376 Float_t r = GetIsolationCut()->GetConeSize();
1378 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
1382 TString hName [] = {"NoIso",""};
1383 TString hTitle[] = {"Not isolated" ,"isolated"};
1385 fhEIso = new TH1F("hE",
1386 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1387 nptbins,ptmin,ptmax);
1388 fhEIso->SetYTitle("dN / dE");
1389 fhEIso->SetXTitle("E (GeV/c)");
1390 outputContainer->Add(fhEIso) ;
1392 fhPtIso = new TH1F("hPt",
1393 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),
1394 nptbins,ptmin,ptmax);
1395 fhPtIso->SetYTitle("dN / p_{T}");
1396 fhPtIso->SetXTitle("p_{T} (GeV/c)");
1397 outputContainer->Add(fhPtIso) ;
1399 fhPtCentralityIso = new TH2F("hPtCentrality","centrality vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,100);
1400 fhPtCentralityIso->SetYTitle("centrality");
1401 fhPtCentralityIso->SetXTitle("p_{T}(GeV/c)");
1402 outputContainer->Add(fhPtCentralityIso) ;
1404 fhPtEventPlaneIso = new TH2F("hPtEventPlane","event plane angle vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1405 fhPtEventPlaneIso->SetYTitle("Event plane angle (rad)");
1406 fhPtEventPlaneIso->SetXTitle("p_{T} (GeV/c)");
1407 outputContainer->Add(fhPtEventPlaneIso) ;
1410 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
1411 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),
1412 nptbins,ptmin,ptmax,10,0,10);
1413 fhPtNLocMaxIso->SetYTitle("NLM");
1414 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
1415 outputContainer->Add(fhPtNLocMaxIso) ;
1417 fhPhiIso = new TH2F("hPhi",
1418 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1419 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1420 fhPhiIso->SetYTitle("#phi");
1421 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
1422 outputContainer->Add(fhPhiIso) ;
1424 fhEtaIso = new TH2F("hEta",
1425 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1426 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1427 fhEtaIso->SetYTitle("#eta");
1428 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
1429 outputContainer->Add(fhEtaIso) ;
1431 fhEtaPhiIso = new TH2F("hEtaPhiIso",
1432 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),
1433 netabins,etamin,etamax,nphibins,phimin,phimax);
1434 fhEtaPhiIso->SetXTitle("#eta");
1435 fhEtaPhiIso->SetYTitle("#phi");
1436 outputContainer->Add(fhEtaPhiIso) ;
1438 fhPtDecayIso = new TH1F("hPtDecayIso",
1439 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),
1440 nptbins,ptmin,ptmax);
1441 fhPtDecayIso->SetYTitle("N");
1442 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
1443 outputContainer->Add(fhPtDecayIso) ;
1445 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
1446 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),
1447 netabins,etamin,etamax,nphibins,phimin,phimax);
1448 fhEtaPhiDecayIso->SetXTitle("#eta");
1449 fhEtaPhiDecayIso->SetYTitle("#phi");
1450 outputContainer->Add(fhEtaPhiDecayIso) ;
1452 fhConeSumPt = new TH2F("hConePtSum",
1453 Form("Track and Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1454 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1455 fhConeSumPt->SetYTitle("#Sigma p_{T}");
1456 fhConeSumPt->SetXTitle("p_{T, trigger} (GeV/c)");
1457 outputContainer->Add(fhConeSumPt) ;
1459 fhConeSumPtTrigEtaPhi = new TH2F("hConePtSumTrigEtaPhi",
1460 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
1461 netabins,etamin,etamax,nphibins,phimin,phimax);
1462 fhConeSumPtTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1463 fhConeSumPtTrigEtaPhi->SetXTitle("#eta_{trigger}");
1464 fhConeSumPtTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1465 outputContainer->Add(fhConeSumPtTrigEtaPhi) ;
1467 fhPtInCone = new TH2F("hPtInCone",
1468 Form("p_{T} of clusters and tracks in isolation cone for R = %2.2f",r),
1469 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1470 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
1471 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
1472 outputContainer->Add(fhPtInCone) ;
1474 fhPtInConeCent = new TH2F("hPtInConeCent",
1475 Form("p_{T} in isolation cone for R = %2.2f",r),
1476 100,0,100,nptinconebins,ptinconemin,ptinconemax);
1477 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
1478 fhPtInConeCent->SetXTitle("centrality");
1479 outputContainer->Add(fhPtInConeCent) ;
1481 // Cluster only histograms
1482 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyCharged)
1484 fhConeSumPtCluster = new TH2F("hConePtSumCluster",
1485 Form("Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1486 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1487 fhConeSumPtCluster->SetYTitle("#Sigma p_{T}");
1488 fhConeSumPtCluster->SetXTitle("p_{T, trigger} (GeV/c)");
1489 outputContainer->Add(fhConeSumPtCluster) ;
1491 fhConeSumPtCell = new TH2F("hConePtSumCell",
1492 Form("Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
1493 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1494 fhConeSumPtCell->SetYTitle("#Sigma p_{T}");
1495 fhConeSumPtCell->SetXTitle("p_{T, trigger} (GeV/c)");
1496 outputContainer->Add(fhConeSumPtCell) ;
1498 fhConeSumPtEtaBandUECluster = new TH2F("hConePtSumEtaBandUECluster",
1499 "#Sigma cluster p_{T} in UE Eta Band",
1500 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1501 fhConeSumPtEtaBandUECluster->SetYTitle("#Sigma p_{T}");
1502 fhConeSumPtEtaBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1503 outputContainer->Add(fhConeSumPtEtaBandUECluster) ;
1505 fhConeSumPtPhiBandUECluster = new TH2F("hConePtSumPhiBandUECluster",
1506 "#Sigma cluster p_{T} UE Phi Band",
1507 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1508 fhConeSumPtPhiBandUECluster->SetYTitle("#Sigma p_{T}");
1509 fhConeSumPtPhiBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1510 outputContainer->Add(fhConeSumPtPhiBandUECluster) ;
1512 fhConeSumPtEtaBandUEClusterTrigEtaPhi = new TH2F("hConePtSumEtaBandUEClusterTrigEtaPhi",
1513 "Trigger #eta vs #phi, #Sigma cluster p_{T} in UE Eta Band",
1514 netabins,etamin,etamax,nphibins,phimin,phimax);
1515 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1516 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1517 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1518 outputContainer->Add(fhConeSumPtEtaBandUEClusterTrigEtaPhi) ;
1520 fhConeSumPtPhiBandUEClusterTrigEtaPhi = new TH2F("hConePtSumPhiBandUEClusterTrigEtaPhi",
1521 "Trigger #eta vs #phi, #Sigma cluster p_{T} UE Phi Band",
1522 netabins,etamin,etamax,nphibins,phimin,phimax);
1523 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1524 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1525 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1526 outputContainer->Add(fhConeSumPtPhiBandUEClusterTrigEtaPhi) ;
1529 fhConeSumPtEtaBandUECell = new TH2F("hConePtSumEtaBandUECell",
1530 "#Sigma cell p_{T} in UE Eta Band",
1531 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1532 fhConeSumPtEtaBandUECell->SetYTitle("#Sigma p_{T}");
1533 fhConeSumPtEtaBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1534 outputContainer->Add(fhConeSumPtEtaBandUECell) ;
1536 fhConeSumPtPhiBandUECell = new TH2F("hConePtSumPhiBandUECell",
1537 "#Sigma cell p_{T} UE Phi Band",
1538 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1539 fhConeSumPtPhiBandUECell->SetYTitle("#Sigma p_{T}");
1540 fhConeSumPtPhiBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1541 outputContainer->Add(fhConeSumPtPhiBandUECell) ;
1543 fhConeSumPtEtaBandUECellTrigEtaPhi = new TH2F("hConePtSumEtaBandUECellTrigEtaPhi",
1544 "Trigger #eta vs #phi, #Sigma cell p_{T} in UE Eta Band",
1545 netabins,etamin,etamax,nphibins,phimin,phimax);
1546 fhConeSumPtEtaBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1547 fhConeSumPtEtaBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1548 fhConeSumPtEtaBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1549 outputContainer->Add(fhConeSumPtEtaBandUECellTrigEtaPhi) ;
1551 fhConeSumPtPhiBandUECellTrigEtaPhi = new TH2F("hConePtSumPhiBandUECellTrigEtaPhi",
1552 "Trigger #eta vs #phi, #Sigma cell p_{T} UE Phi Band",
1553 netabins,etamin,etamax,nphibins,phimin,phimax);
1554 fhConeSumPtPhiBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1555 fhConeSumPtPhiBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1556 fhConeSumPtPhiBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1557 outputContainer->Add(fhConeSumPtPhiBandUECellTrigEtaPhi) ;
1560 fhPtClusterInCone = new TH2F("hPtClusterInCone",
1561 Form("p_{T} of clusters in isolation cone for R = %2.2f",r),
1562 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1563 fhPtClusterInCone->SetYTitle("p_{T in cone} (GeV/c)");
1564 fhPtClusterInCone->SetXTitle("p_{T} (GeV/c)");
1565 outputContainer->Add(fhPtClusterInCone) ;
1567 fhEtaBandCluster = new TH2F("hEtaBandCluster",
1568 Form("#eta vs #phi of clusters in #eta band isolation cone for R = %2.2f",r),
1569 netabins,-1,1,nphibins,0,TMath::TwoPi());
1570 fhEtaBandCluster->SetXTitle("#eta");
1571 fhEtaBandCluster->SetYTitle("#phi");
1572 outputContainer->Add(fhEtaBandCluster) ;
1574 fhPhiBandCluster = new TH2F("hPhiBandCluster",
1575 Form("#eta vs #phi of clusters in #phi band isolation cone for R = %2.2f",r),
1576 netabins,-1,1,nphibins,0,TMath::TwoPi());
1577 fhPhiBandCluster->SetXTitle("#eta");
1578 fhPhiBandCluster->SetYTitle("#phi");
1579 outputContainer->Add(fhPhiBandCluster) ;
1581 fhPtCellInCone = new TH2F("hPtCellInCone",
1582 Form("p_{T} of cells in isolation cone for R = %2.2f",r),
1583 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1584 fhPtCellInCone->SetYTitle("p_{T in cone} (GeV/c)");
1585 fhPtCellInCone->SetXTitle("p_{T} (GeV/c)");
1586 outputContainer->Add(fhPtCellInCone) ;
1588 fhEtaBandCell = new TH2F("hEtaBandCell",
1589 Form("#eta vs #phi of cells in #eta band isolation cone for R = %2.2f",r),
1590 netabins,-1,1,nphibins,0,TMath::TwoPi());
1591 fhEtaBandCell->SetXTitle("#eta");
1592 fhEtaBandCell->SetYTitle("#phi");
1593 outputContainer->Add(fhEtaBandCell) ;
1595 fhPhiBandCell = new TH2F("hPhiBandCell",
1596 Form("#eta vs #phi of cells in #phi band isolation cone for R = %2.2f",r),
1597 netabins,-1,1,nphibins,0,TMath::TwoPi());
1598 fhPhiBandCell->SetXTitle("#eta");
1599 fhPhiBandCell->SetYTitle("#phi");
1600 outputContainer->Add(fhPhiBandCell) ;
1602 fhConeSumPtEtaUESubCluster = new TH2F("hConeSumPtEtaUESubCluster",
1603 Form("Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1604 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1605 fhConeSumPtEtaUESubCluster->SetYTitle("#Sigma p_{T}");
1606 fhConeSumPtEtaUESubCluster->SetXTitle("p_{T} (GeV/c)");
1607 outputContainer->Add(fhConeSumPtEtaUESubCluster) ;
1609 fhConeSumPtPhiUESubCluster = new TH2F("hConeSumPtPhiUESubCluster",
1610 Form("Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1611 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1612 fhConeSumPtPhiUESubCluster->SetYTitle("#Sigma p_{T}");
1613 fhConeSumPtPhiUESubCluster->SetXTitle("p_{T} (GeV/c)");
1614 outputContainer->Add(fhConeSumPtPhiUESubCluster) ;
1616 fhConeSumPtEtaUESubClusterTrigEtaPhi = new TH2F("hConeSumPtEtaUESubClusterTrigEtaPhi",
1617 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1618 netabins,etamin,etamax,nphibins,phimin,phimax);
1619 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1620 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1621 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1622 outputContainer->Add(fhConeSumPtEtaUESubClusterTrigEtaPhi) ;
1624 fhConeSumPtPhiUESubClusterTrigEtaPhi = new TH2F("hConeSumPtPhiUESubClusterTrigEtaPhi",
1625 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1626 netabins,etamin,etamax,nphibins,phimin,phimax);
1627 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1628 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1629 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1630 outputContainer->Add(fhConeSumPtPhiUESubClusterTrigEtaPhi) ;
1633 fhConeSumPtEtaUESubCell = new TH2F("hConeSumPtEtaUESubCell",
1634 Form("Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1635 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1636 fhConeSumPtEtaUESubCell->SetYTitle("#Sigma p_{T}");
1637 fhConeSumPtEtaUESubCell->SetXTitle("p_{T} (GeV/c)");
1638 outputContainer->Add(fhConeSumPtEtaUESubCell) ;
1640 fhConeSumPtPhiUESubCell = new TH2F("hConeSumPtPhiUESubCell",
1641 Form("Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1642 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1643 fhConeSumPtPhiUESubCell->SetYTitle("#Sigma p_{T}");
1644 fhConeSumPtPhiUESubCell->SetXTitle("p_{T} (GeV/c)");
1645 outputContainer->Add(fhConeSumPtPhiUESubCell) ;
1647 fhConeSumPtEtaUESubCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubCellTrigEtaPhi",
1648 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1649 netabins,etamin,etamax,nphibins,phimin,phimax);
1650 fhConeSumPtEtaUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1651 fhConeSumPtEtaUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1652 fhConeSumPtEtaUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1653 outputContainer->Add(fhConeSumPtEtaUESubCellTrigEtaPhi) ;
1655 fhConeSumPtPhiUESubCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubCellTrigEtaPhi",
1656 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1657 netabins,etamin,etamax,nphibins,phimin,phimax);
1658 fhConeSumPtPhiUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1659 fhConeSumPtPhiUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1660 fhConeSumPtPhiUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1661 outputContainer->Add(fhConeSumPtPhiUESubCellTrigEtaPhi) ;
1664 fhFractionClusterOutConeEta = new TH2F("hFractionClusterOutConeEta",
1665 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance",r),
1666 nptbins,ptmin,ptmax,100,0,1);
1667 fhFractionClusterOutConeEta->SetYTitle("fraction");
1668 fhFractionClusterOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1669 outputContainer->Add(fhFractionClusterOutConeEta) ;
1671 fhFractionClusterOutConeEtaTrigEtaPhi = new TH2F("hFractionClusterOutConeEtaTrigEtaPhi",
1672 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance, in trigger #eta-#phi ",r),
1673 netabins,etamin,etamax,nphibins,phimin,phimax);
1674 fhFractionClusterOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1675 fhFractionClusterOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1676 fhFractionClusterOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1677 outputContainer->Add(fhFractionClusterOutConeEtaTrigEtaPhi) ;
1679 fhFractionClusterOutConePhi = new TH2F("hFractionClusterOutConePhi",
1680 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance",r),
1681 nptbins,ptmin,ptmax,100,0,1);
1682 fhFractionClusterOutConePhi->SetYTitle("fraction");
1683 fhFractionClusterOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1684 outputContainer->Add(fhFractionClusterOutConePhi) ;
1686 fhFractionClusterOutConePhiTrigEtaPhi = new TH2F("hFractionClusterOutConePhiTrigEtaPhi",
1687 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance, in trigger #eta-#phi ",r),
1688 netabins,etamin,etamax,nphibins,phimin,phimax);
1689 fhFractionClusterOutConePhiTrigEtaPhi->SetZTitle("fraction");
1690 fhFractionClusterOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1691 fhFractionClusterOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1692 outputContainer->Add(fhFractionClusterOutConePhiTrigEtaPhi) ;
1694 fhConeSumPtSubvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCluster",
1695 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),
1696 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1697 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1698 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1699 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCluster);
1701 fhConeSumPtSubNormvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCluster",
1702 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),
1703 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1704 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1705 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1706 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCluster);
1708 fhConeSumPtSubvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCluster",
1709 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),
1710 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1711 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1712 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1713 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCluster);
1715 fhConeSumPtSubNormvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCluster",
1716 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),
1717 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1718 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1719 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1720 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCluster);
1723 fhFractionCellOutConeEta = new TH2F("hFractionCellOutConeEta",
1724 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance",r),
1725 nptbins,ptmin,ptmax,100,0,1);
1726 fhFractionCellOutConeEta->SetYTitle("fraction");
1727 fhFractionCellOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1728 outputContainer->Add(fhFractionCellOutConeEta) ;
1730 fhFractionCellOutConeEtaTrigEtaPhi = new TH2F("hFractionCellOutConeEtaTrigEtaPhi",
1731 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance, in trigger #eta-#phi ",r),
1732 netabins,etamin,etamax,nphibins,phimin,phimax);
1733 fhFractionCellOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1734 fhFractionCellOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1735 fhFractionCellOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1736 outputContainer->Add(fhFractionCellOutConeEtaTrigEtaPhi) ;
1738 fhFractionCellOutConePhi = new TH2F("hFractionCellOutConePhi",
1739 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance",r),
1740 nptbins,ptmin,ptmax,100,0,1);
1741 fhFractionCellOutConePhi->SetYTitle("fraction");
1742 fhFractionCellOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1743 outputContainer->Add(fhFractionCellOutConePhi) ;
1745 fhFractionCellOutConePhiTrigEtaPhi = new TH2F("hFractionCellOutConePhiTrigEtaPhi",
1746 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance, in trigger #eta-#phi ",r),
1747 netabins,etamin,etamax,nphibins,phimin,phimax);
1748 fhFractionCellOutConePhiTrigEtaPhi->SetZTitle("fraction");
1749 fhFractionCellOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1750 fhFractionCellOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1751 outputContainer->Add(fhFractionCellOutConePhiTrigEtaPhi) ;
1754 fhConeSumPtSubvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCell",
1755 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),
1756 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1757 fhConeSumPtSubvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1758 fhConeSumPtSubvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1759 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCell);
1761 fhConeSumPtSubNormvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCell",
1762 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),
1763 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1764 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1765 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1766 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCell);
1768 fhConeSumPtSubvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCell",
1769 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),
1770 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1771 fhConeSumPtSubvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1772 fhConeSumPtSubvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1773 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCell);
1775 fhConeSumPtSubNormvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCell",
1776 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),
1777 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1778 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1779 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1780 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCell);
1784 // Track only histograms
1785 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
1787 fhConeSumPtTrack = new TH2F("hConePtSumTrack",
1788 Form("Track #Sigma p_{T} in isolation cone for R = %2.2f",r),
1789 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1790 fhConeSumPtTrack->SetYTitle("#Sigma p_{T}");
1791 fhConeSumPtTrack->SetXTitle("p_{T, trigger} (GeV/c)");
1792 outputContainer->Add(fhConeSumPtTrack) ;
1795 fhConeSumPtEtaBandUETrack = new TH2F("hConePtSumEtaBandUETrack",
1796 "#Sigma track p_{T} in UE Eta Band",
1797 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1798 fhConeSumPtEtaBandUETrack->SetYTitle("#Sigma p_{T}");
1799 fhConeSumPtEtaBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1800 outputContainer->Add(fhConeSumPtEtaBandUETrack) ;
1802 fhConeSumPtPhiBandUETrack = new TH2F("hConePtSumPhiBandUETrack",
1803 "#Sigma track p_{T} in UE Phi Band",
1804 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax*8);
1805 fhConeSumPtPhiBandUETrack->SetYTitle("#Sigma p_{T}");
1806 fhConeSumPtPhiBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1807 outputContainer->Add(fhConeSumPtPhiBandUETrack) ;
1810 fhConeSumPtEtaBandUETrackTrigEtaPhi = new TH2F("hConePtSumEtaBandUETrackTrigEtaPhi",
1811 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Eta Band",
1812 netabins,etamin,etamax,nphibins,phimin,phimax);
1813 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1814 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1815 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1816 outputContainer->Add(fhConeSumPtEtaBandUETrackTrigEtaPhi) ;
1818 fhConeSumPtPhiBandUETrackTrigEtaPhi = new TH2F("hConePtSumPhiBandUETrackTrigEtaPhi",
1819 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Phi Band",
1820 netabins,etamin,etamax,nphibins,phimin,phimax);
1821 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1822 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1823 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1824 outputContainer->Add(fhConeSumPtPhiBandUETrackTrigEtaPhi) ;
1827 fhPtTrackInCone = new TH2F("hPtTrackInCone",
1828 Form("p_{T} of tracks in isolation cone for R = %2.2f",r),
1829 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1830 fhPtTrackInCone->SetYTitle("p_{T in cone} (GeV/c)");
1831 fhPtTrackInCone->SetXTitle("p_{T} (GeV/c)");
1832 outputContainer->Add(fhPtTrackInCone) ;
1835 fhEtaBandTrack = new TH2F("hEtaBandTrack",
1836 Form("#eta vs #phi of tracks in #eta band isolation cone for R = %2.2f",r),
1837 netabins,-1,1,nphibins,0,TMath::TwoPi());
1838 fhEtaBandTrack->SetXTitle("#eta");
1839 fhEtaBandTrack->SetYTitle("#phi");
1840 outputContainer->Add(fhEtaBandTrack) ;
1842 fhPhiBandTrack = new TH2F("hPhiBandTrack",
1843 Form("#eta vs #phi of tracks in #phi band isolation cone for R = %2.2f",r),
1844 netabins,-1,1,nphibins,0,TMath::TwoPi());
1845 fhPhiBandTrack->SetXTitle("#eta");
1846 fhPhiBandTrack->SetYTitle("#phi");
1847 outputContainer->Add(fhPhiBandTrack) ;
1850 fhConeSumPtEtaUESubTrack = new TH2F("hConeSumPtEtaUESubTrack",
1851 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1852 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1853 fhConeSumPtEtaUESubTrack->SetYTitle("#Sigma p_{T}");
1854 fhConeSumPtEtaUESubTrack->SetXTitle("p_{T} (GeV/c)");
1855 outputContainer->Add(fhConeSumPtEtaUESubTrack) ;
1857 fhConeSumPtPhiUESubTrack = new TH2F("hConeSumPtPhiUESubTrack",
1858 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1859 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1860 fhConeSumPtPhiUESubTrack->SetYTitle("#Sigma p_{T}");
1861 fhConeSumPtPhiUESubTrack->SetXTitle("p_{T} (GeV/c)");
1862 outputContainer->Add(fhConeSumPtPhiUESubTrack) ;
1864 fhConeSumPtEtaUESubTrackTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackTrigEtaPhi",
1865 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1866 netabins,etamin,etamax,nphibins,phimin,phimax);
1867 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1868 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1869 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1870 outputContainer->Add(fhConeSumPtEtaUESubTrackTrigEtaPhi) ;
1872 fhConeSumPtPhiUESubTrackTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackTrigEtaPhi",
1873 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1874 netabins,etamin,etamax,nphibins,phimin,phimax);
1875 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1876 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1877 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1878 outputContainer->Add(fhConeSumPtPhiUESubTrackTrigEtaPhi) ;
1880 fhFractionTrackOutConeEta = new TH2F("hFractionTrackOutConeEta",
1881 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance",r),
1882 nptbins,ptmin,ptmax,100,0,1);
1883 fhFractionTrackOutConeEta->SetYTitle("fraction");
1884 fhFractionTrackOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1885 outputContainer->Add(fhFractionTrackOutConeEta) ;
1887 fhFractionTrackOutConeEtaTrigEtaPhi = new TH2F("hFractionTrackOutConeEtaTrigEtaPhi",
1888 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance, in trigger #eta-#phi ",r),
1889 netabins,etamin,etamax,nphibins,phimin,phimax);
1890 fhFractionTrackOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1891 fhFractionTrackOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1892 fhFractionTrackOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1893 outputContainer->Add(fhFractionTrackOutConeEtaTrigEtaPhi) ;
1895 fhConeSumPtSubvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubvsConeSumPtTotPhiTrack",
1896 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),
1897 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1898 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1899 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1900 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiTrack);
1902 fhConeSumPtSubNormvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiTrack",
1903 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),
1904 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1905 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1906 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1907 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiTrack);
1909 fhConeSumPtSubvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubvsConeSumPtTotEtaTrack",
1910 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),
1911 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1912 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1913 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1914 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaTrack);
1916 fhConeSumPtSubNormvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaTrack",
1917 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),
1918 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1919 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1920 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1921 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaTrack);
1923 // UE in perpendicular cone
1924 fhPerpConeSumPt = new TH2F("hPerpConePtSum",
1925 Form("#Sigma p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
1926 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1927 fhPerpConeSumPt->SetYTitle("#Sigma p_{T}");
1928 fhPerpConeSumPt->SetXTitle("p_{T} (GeV/c)");
1929 outputContainer->Add(fhPerpConeSumPt) ;
1931 fhPtInPerpCone = new TH2F("hPtInPerpCone",
1932 Form("p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
1933 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1934 fhPtInPerpCone->SetYTitle("p_{T in cone} (GeV/c)");
1935 fhPtInPerpCone->SetXTitle("p_{T} (GeV/c)");
1936 outputContainer->Add(fhPtInPerpCone) ;
1939 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
1941 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
1942 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1943 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1944 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
1945 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
1946 outputContainer->Add(fhConeSumPtEtaUESub) ;
1948 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
1949 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1950 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1951 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
1952 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
1953 outputContainer->Add(fhConeSumPtPhiUESub) ;
1955 fhConeSumPtEtaUESubTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrigEtaPhi",
1956 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1957 netabins,etamin,etamax,nphibins,phimin,phimax);
1958 fhConeSumPtEtaUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1959 fhConeSumPtEtaUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
1960 fhConeSumPtEtaUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1961 outputContainer->Add(fhConeSumPtEtaUESubTrigEtaPhi) ;
1963 fhConeSumPtPhiUESubTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrigEtaPhi",
1964 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1965 netabins,etamin,etamax,nphibins,phimin,phimax);
1966 fhConeSumPtPhiUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1967 fhConeSumPtPhiUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
1968 fhConeSumPtPhiUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1969 outputContainer->Add(fhConeSumPtPhiUESubTrigEtaPhi) ;
1971 fhConeSumPtClustervsTrack = new TH2F("hConePtSumClustervsTrack",
1972 Form("Track vs Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1973 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1974 fhConeSumPtClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1975 fhConeSumPtClustervsTrack->SetYTitle("#Sigma p_{T} track");
1976 outputContainer->Add(fhConeSumPtClustervsTrack) ;
1978 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
1979 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
1980 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1981 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1982 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1983 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
1985 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
1986 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
1987 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1988 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1989 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
1990 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
1992 fhEtaBandClustervsTrack = new TH2F("hEtaBandClustervsTrack",
1993 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
1994 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
1995 fhEtaBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
1996 fhEtaBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
1997 outputContainer->Add(fhEtaBandClustervsTrack) ;
1999 fhPhiBandClustervsTrack = new TH2F("hPhiBandClustervsTrack",
2000 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2001 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2002 fhPhiBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2003 fhPhiBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
2004 outputContainer->Add(fhPhiBandClustervsTrack) ;
2006 fhEtaBandNormClustervsTrack = new TH2F("hEtaBandNormClustervsTrack",
2007 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2008 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2009 fhEtaBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2010 fhEtaBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
2011 outputContainer->Add(fhEtaBandNormClustervsTrack) ;
2013 fhPhiBandNormClustervsTrack = new TH2F("hPhiBandNormClustervsTrack",
2014 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2015 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2016 fhPhiBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2017 fhPhiBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
2018 outputContainer->Add(fhPhiBandNormClustervsTrack) ;
2022 fhConeSumPtCellTrack = new TH2F("hConePtSumCellTrack",
2023 Form("Track and Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
2024 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2025 fhConeSumPtCellTrack->SetYTitle("#Sigma p_{T}");
2026 fhConeSumPtCellTrack->SetXTitle("p_{T, trigger} (GeV/c)");
2027 outputContainer->Add(fhConeSumPtCellTrack) ;
2029 fhConeSumPtCellTrackTrigEtaPhi = new TH2F("hConePtSumCellTrackTrigEtaPhi",
2030 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
2031 netabins,etamin,etamax,nphibins,phimin,phimax);
2032 fhConeSumPtCellTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2033 fhConeSumPtCellTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2034 fhConeSumPtCellTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2035 outputContainer->Add(fhConeSumPtCellTrackTrigEtaPhi) ;
2038 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2039 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2040 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2041 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2042 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2043 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2045 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2046 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2047 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2048 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2049 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2050 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2052 fhConeSumPtCellvsTrack = new TH2F("hConePtSumCellvsTrack",
2053 Form("Track vs cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
2054 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2055 fhConeSumPtCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2056 fhConeSumPtCellvsTrack->SetYTitle("#Sigma p_{T} track");
2057 outputContainer->Add(fhConeSumPtCellvsTrack) ;
2059 fhConeSumPtEtaUESubCellvsTrack = new TH2F("hConePtSumEtaUESubCellvsTrack",
2060 Form("Track vs Cell #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2061 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2062 fhConeSumPtEtaUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2063 fhConeSumPtEtaUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
2064 outputContainer->Add(fhConeSumPtEtaUESubCellvsTrack) ;
2066 fhConeSumPtPhiUESubCellvsTrack = new TH2F("hConePhiUESubPtSumCellvsTrack",
2067 Form("Track vs Cell #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2068 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2069 fhConeSumPtPhiUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2070 fhConeSumPtPhiUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
2071 outputContainer->Add(fhConeSumPtPhiUESubCellvsTrack) ;
2073 fhEtaBandCellvsTrack = new TH2F("hEtaBandCellvsTrack",
2074 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2075 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2076 fhEtaBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2077 fhEtaBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
2078 outputContainer->Add(fhEtaBandCellvsTrack) ;
2080 fhPhiBandCellvsTrack = new TH2F("hPhiBandCellvsTrack",
2081 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2082 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2083 fhPhiBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2084 fhPhiBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
2085 outputContainer->Add(fhPhiBandCellvsTrack) ;
2087 fhEtaBandNormCellvsTrack = new TH2F("hEtaBandNormCellvsTrack",
2088 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2089 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2090 fhEtaBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2091 fhEtaBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
2092 outputContainer->Add(fhEtaBandNormCellvsTrack) ;
2094 fhPhiBandNormCellvsTrack = new TH2F("hPhiBandNormCellvsTrack",
2095 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2096 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2097 fhPhiBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2098 fhPhiBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
2099 outputContainer->Add(fhPhiBandNormCellvsTrack) ;
2101 fhConeSumPtEtaUESubTrackCell = new TH2F("hConeSumPtEtaUESubTrackCell",
2102 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2103 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2104 fhConeSumPtEtaUESubTrackCell->SetYTitle("#Sigma p_{T}");
2105 fhConeSumPtEtaUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
2106 outputContainer->Add(fhConeSumPtEtaUESubTrackCell) ;
2108 fhConeSumPtPhiUESubTrackCell = new TH2F("hConeSumPtPhiUESubTrackCell",
2109 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2110 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2111 fhConeSumPtPhiUESubTrackCell->SetYTitle("#Sigma p_{T}");
2112 fhConeSumPtPhiUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
2113 outputContainer->Add(fhConeSumPtPhiUESubTrackCell) ;
2115 fhConeSumPtEtaUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackCellTrigEtaPhi",
2116 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2117 netabins,etamin,etamax,nphibins,phimin,phimax);
2118 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2119 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2120 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2121 outputContainer->Add(fhConeSumPtEtaUESubTrackCellTrigEtaPhi) ;
2123 fhConeSumPtPhiUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackCellTrigEtaPhi",
2124 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2125 netabins,etamin,etamax,nphibins,phimin,phimax);
2126 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2127 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2128 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2129 outputContainer->Add(fhConeSumPtPhiUESubTrackCellTrigEtaPhi) ;
2135 fhELambda0SSBkg = new TH2F
2136 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2137 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
2138 fhELambda0SSBkg->SetXTitle("E (GeV)");
2139 outputContainer->Add(fhELambda0SSBkg) ;
2142 for(Int_t iso = 0; iso < 2; iso++)
2146 fhTrackMatchedDEta[iso] = new TH2F
2147 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
2148 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),
2149 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2150 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
2151 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
2153 fhTrackMatchedDPhi[iso] = new TH2F
2154 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
2155 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),
2156 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2157 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
2158 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
2160 fhTrackMatchedDEtaDPhi[iso] = new TH2F
2161 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
2162 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),
2163 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2164 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
2165 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
2167 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
2168 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
2169 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
2171 fhdEdx[iso] = new TH2F
2172 (Form("hdEdx%s",hName[iso].Data()),
2173 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),
2174 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
2175 fhdEdx[iso]->SetXTitle("E (GeV)");
2176 fhdEdx[iso]->SetYTitle("<dE/dx>");
2177 outputContainer->Add(fhdEdx[iso]);
2179 fhEOverP[iso] = new TH2F
2180 (Form("hEOverP%s",hName[iso].Data()),
2181 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),
2182 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2183 fhEOverP[iso]->SetXTitle("E (GeV)");
2184 fhEOverP[iso]->SetYTitle("E/p");
2185 outputContainer->Add(fhEOverP[iso]);
2189 fhTrackMatchedMCParticle[iso] = new TH2F
2190 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
2191 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),
2192 nptbins,ptmin,ptmax,8,0,8);
2193 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
2194 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
2196 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
2197 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
2198 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
2199 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
2200 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
2201 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
2202 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
2203 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
2205 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
2211 fhELambda0[iso] = new TH2F
2212 (Form("hELambda0%s",hName[iso].Data()),
2213 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2214 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
2215 fhELambda0[iso]->SetXTitle("E (GeV)");
2216 outputContainer->Add(fhELambda0[iso]) ;
2220 fhELambda0MCPhoton[iso] = new TH2F
2221 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
2222 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2223 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
2224 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
2225 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
2227 fhELambda0MCPi0[iso] = new TH2F
2228 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
2229 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2230 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
2231 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
2232 outputContainer->Add(fhELambda0MCPi0[iso]) ;
2234 fhELambda0MCPi0Decay[iso] = new TH2F
2235 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
2236 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2237 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
2238 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
2239 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
2241 fhELambda0MCEtaDecay[iso] = new TH2F
2242 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
2243 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2244 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2245 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
2246 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
2248 fhELambda0MCOtherDecay[iso] = new TH2F
2249 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
2250 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2251 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2252 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
2253 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
2255 fhELambda0MCHadron[iso] = new TH2F
2256 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
2257 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2258 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
2259 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
2260 outputContainer->Add(fhELambda0MCHadron[iso]) ;
2263 fhELambda1[iso] = new TH2F
2264 (Form("hELambda1%s",hName[iso].Data()),
2265 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2266 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
2267 fhELambda1[iso]->SetXTitle("E (GeV)");
2268 outputContainer->Add(fhELambda1[iso]) ;
2270 if(fCalorimeter=="EMCAL")
2272 fhELambda0TRD[iso] = new TH2F
2273 (Form("hELambda0TRD%s",hName[iso].Data()),
2274 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2275 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
2276 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
2277 outputContainer->Add(fhELambda0TRD[iso]) ;
2279 fhELambda1TRD[iso] = new TH2F
2280 (Form("hELambda1TRD%s",hName[iso].Data()),
2281 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2282 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
2283 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
2284 outputContainer->Add(fhELambda1TRD[iso]) ;
2287 fhNLocMax[iso] = new TH2F
2288 (Form("hNLocMax%s",hName[iso].Data()),
2289 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
2290 nptbins,ptmin,ptmax,10,0,10);
2291 fhNLocMax[iso]->SetYTitle("N maxima");
2292 fhNLocMax[iso]->SetXTitle("E (GeV)");
2293 outputContainer->Add(fhNLocMax[iso]) ;
2295 fhELambda0LocMax1[iso] = new TH2F
2296 (Form("hELambda0LocMax1%s",hName[iso].Data()),
2297 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2298 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
2299 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
2300 outputContainer->Add(fhELambda0LocMax1[iso]) ;
2302 fhELambda1LocMax1[iso] = new TH2F
2303 (Form("hELambda1LocMax1%s",hName[iso].Data()),
2304 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2305 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
2306 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
2307 outputContainer->Add(fhELambda1LocMax1[iso]) ;
2309 fhELambda0LocMax2[iso] = new TH2F
2310 (Form("hELambda0LocMax2%s",hName[iso].Data()),
2311 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2312 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
2313 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
2314 outputContainer->Add(fhELambda0LocMax2[iso]) ;
2316 fhELambda1LocMax2[iso] = new TH2F
2317 (Form("hELambda1LocMax2%s",hName[iso].Data()),
2318 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2319 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
2320 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
2321 outputContainer->Add(fhELambda1LocMax2[iso]) ;
2323 fhELambda0LocMaxN[iso] = new TH2F
2324 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
2325 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2326 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
2327 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
2328 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
2330 fhELambda1LocMaxN[iso] = new TH2F
2331 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
2332 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2333 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
2334 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
2335 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
2338 } // control histograms for isolated and non isolated objects
2341 if(fFillPileUpHistograms)
2343 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
2344 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0",r),
2345 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2346 fhPtTrackInConeOtherBC->SetYTitle("p_{T in cone} (GeV/c)");
2347 fhPtTrackInConeOtherBC->SetXTitle("p_{T} (GeV/c)");
2348 outputContainer->Add(fhPtTrackInConeOtherBC) ;
2350 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
2351 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0, pile-up from SPD",r),
2352 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2353 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2354 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("p_{T} (GeV/c)");
2355 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
2357 fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0",
2358 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2359 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2360 fhPtTrackInConeBC0->SetYTitle("p_{T in cone} (GeV/c)");
2361 fhPtTrackInConeBC0->SetXTitle("p_{T} (GeV/c)");
2362 outputContainer->Add(fhPtTrackInConeBC0) ;
2364 fhPtTrackInConeVtxBC0 = new TH2F("hPtTrackInConeVtxBC0",
2365 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2366 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2367 fhPtTrackInConeVtxBC0->SetYTitle("p_{T in cone} (GeV/c)");
2368 fhPtTrackInConeVtxBC0->SetXTitle("p_{T} (GeV/c)");
2369 outputContainer->Add(fhPtTrackInConeVtxBC0) ;
2372 fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD",
2373 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0, pile-up from SPD",r),
2374 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2375 fhPtTrackInConeBC0PileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2376 fhPtTrackInConeBC0PileUpSPD->SetXTitle("p_{T} (GeV/c)");
2377 outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ;
2380 for (Int_t i = 0; i < 7 ; i++)
2382 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
2383 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
2384 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2385 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/c)");
2386 fhPtInConePileUp[i]->SetXTitle("p_{T} (GeV/c)");
2387 outputContainer->Add(fhPtInConePileUp[i]) ;
2393 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
2394 fhPtIsoPrompt->SetYTitle("N");
2395 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
2396 outputContainer->Add(fhPtIsoPrompt) ;
2398 fhPhiIsoPrompt = new TH2F
2399 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2400 fhPhiIsoPrompt->SetYTitle("#phi");
2401 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2402 outputContainer->Add(fhPhiIsoPrompt) ;
2404 fhEtaIsoPrompt = new TH2F
2405 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2406 fhEtaIsoPrompt->SetYTitle("#eta");
2407 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2408 outputContainer->Add(fhEtaIsoPrompt) ;
2410 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
2411 fhPtIsoFragmentation->SetYTitle("N");
2412 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
2413 outputContainer->Add(fhPtIsoFragmentation) ;
2415 fhPhiIsoFragmentation = new TH2F
2416 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2417 fhPhiIsoFragmentation->SetYTitle("#phi");
2418 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2419 outputContainer->Add(fhPhiIsoFragmentation) ;
2421 fhEtaIsoFragmentation = new TH2F
2422 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2423 fhEtaIsoFragmentation->SetYTitle("#eta");
2424 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2425 outputContainer->Add(fhEtaIsoFragmentation) ;
2427 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2428 fhPtIsoPi0->SetYTitle("N");
2429 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
2430 outputContainer->Add(fhPtIsoPi0) ;
2432 fhPhiIsoPi0 = new TH2F
2433 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2434 fhPhiIsoPi0->SetYTitle("#phi");
2435 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2436 outputContainer->Add(fhPhiIsoPi0) ;
2438 fhEtaIsoPi0 = new TH2F
2439 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2440 fhEtaIsoPi0->SetYTitle("#eta");
2441 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2442 outputContainer->Add(fhEtaIsoPi0) ;
2444 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2445 fhPtIsoPi0Decay->SetYTitle("N");
2446 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
2447 outputContainer->Add(fhPtIsoPi0Decay) ;
2449 fhPhiIsoPi0Decay = new TH2F
2450 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2451 fhPhiIsoPi0Decay->SetYTitle("#phi");
2452 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2453 outputContainer->Add(fhPhiIsoPi0Decay) ;
2455 fhEtaIsoPi0Decay = new TH2F
2456 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2457 fhEtaIsoPi0Decay->SetYTitle("#eta");
2458 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2459 outputContainer->Add(fhEtaIsoPi0Decay) ;
2461 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
2462 fhPtIsoEtaDecay->SetYTitle("N");
2463 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2464 outputContainer->Add(fhPtIsoEtaDecay) ;
2466 fhPhiIsoEtaDecay = new TH2F
2467 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2468 fhPhiIsoEtaDecay->SetYTitle("#phi");
2469 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2470 outputContainer->Add(fhPhiIsoEtaDecay) ;
2472 fhEtaIsoEtaDecay = new TH2F
2473 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2474 fhEtaIsoEtaDecay->SetYTitle("#eta");
2475 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2476 outputContainer->Add(fhEtaIsoEtaDecay) ;
2478 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
2479 fhPtIsoOtherDecay->SetYTitle("N");
2480 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2481 outputContainer->Add(fhPtIsoOtherDecay) ;
2483 fhPhiIsoOtherDecay = new TH2F
2484 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2485 fhPhiIsoOtherDecay->SetYTitle("#phi");
2486 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2487 outputContainer->Add(fhPhiIsoOtherDecay) ;
2489 fhEtaIsoOtherDecay = new TH2F
2490 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2491 fhEtaIsoOtherDecay->SetYTitle("#eta");
2492 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2493 outputContainer->Add(fhEtaIsoOtherDecay) ;
2495 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
2496 // fhPtIsoConversion->SetYTitle("N");
2497 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
2498 // outputContainer->Add(fhPtIsoConversion) ;
2500 // fhPhiIsoConversion = new TH2F
2501 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2502 // fhPhiIsoConversion->SetYTitle("#phi");
2503 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2504 // outputContainer->Add(fhPhiIsoConversion) ;
2506 // fhEtaIsoConversion = new TH2F
2507 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2508 // fhEtaIsoConversion->SetYTitle("#eta");
2509 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2510 // outputContainer->Add(fhEtaIsoConversion) ;
2512 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
2513 fhPtIsoHadron->SetYTitle("N");
2514 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
2515 outputContainer->Add(fhPtIsoHadron) ;
2518 fhPhiIsoHadron = new TH2F
2519 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2520 fhPhiIsoHadron->SetYTitle("#phi");
2521 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
2522 outputContainer->Add(fhPhiIsoHadron) ;
2524 fhEtaIsoHadron = new TH2F
2525 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2526 fhEtaIsoHadron->SetYTitle("#eta");
2527 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
2528 outputContainer->Add(fhEtaIsoHadron) ;
2534 // Not Isolated histograms, reference histograms
2536 fhENoIso = new TH1F("hENoIso",
2537 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),
2538 nptbins,ptmin,ptmax);
2539 fhENoIso->SetYTitle("N");
2540 fhENoIso->SetXTitle("E (GeV/c)");
2541 outputContainer->Add(fhENoIso) ;
2543 fhPtNoIso = new TH1F("hPtNoIso",
2544 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),
2545 nptbins,ptmin,ptmax);
2546 fhPtNoIso->SetYTitle("N");
2547 fhPtNoIso->SetXTitle("p_{T} (GeV/c)");
2548 outputContainer->Add(fhPtNoIso) ;
2550 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
2551 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),
2552 nptbins,ptmin,ptmax,10,0,10);
2553 fhPtNLocMaxNoIso->SetYTitle("NLM");
2554 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
2555 outputContainer->Add(fhPtNLocMaxNoIso) ;
2557 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
2558 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),
2559 netabins,etamin,etamax,nphibins,phimin,phimax);
2560 fhEtaPhiNoIso->SetXTitle("#eta");
2561 fhEtaPhiNoIso->SetYTitle("#phi");
2562 outputContainer->Add(fhEtaPhiNoIso) ;
2564 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
2565 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),
2566 nptbins,ptmin,ptmax);
2567 fhPtDecayNoIso->SetYTitle("N");
2568 fhPtDecayNoIso->SetXTitle("p_{T} (GeV/c)");
2569 outputContainer->Add(fhPtDecayNoIso) ;
2571 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
2572 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),
2573 netabins,etamin,etamax,nphibins,phimin,phimax);
2574 fhEtaPhiDecayNoIso->SetXTitle("#eta");
2575 fhEtaPhiDecayNoIso->SetYTitle("#phi");
2576 outputContainer->Add(fhEtaPhiDecayNoIso) ;
2581 fhPtNoIsoPi0 = new TH1F
2582 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2583 fhPtNoIsoPi0->SetYTitle("N");
2584 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
2585 outputContainer->Add(fhPtNoIsoPi0) ;
2587 fhPtNoIsoPi0Decay = new TH1F
2588 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2589 fhPtNoIsoPi0Decay->SetYTitle("N");
2590 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
2591 outputContainer->Add(fhPtNoIsoPi0Decay) ;
2593 fhPtNoIsoEtaDecay = new TH1F
2594 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
2595 fhPtNoIsoEtaDecay->SetYTitle("N");
2596 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
2597 outputContainer->Add(fhPtNoIsoEtaDecay) ;
2599 fhPtNoIsoOtherDecay = new TH1F
2600 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
2601 fhPtNoIsoOtherDecay->SetYTitle("N");
2602 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
2603 outputContainer->Add(fhPtNoIsoOtherDecay) ;
2605 fhPtNoIsoPrompt = new TH1F
2606 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
2607 fhPtNoIsoPrompt->SetYTitle("N");
2608 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
2609 outputContainer->Add(fhPtNoIsoPrompt) ;
2611 fhPtIsoMCPhoton = new TH1F
2612 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
2613 fhPtIsoMCPhoton->SetYTitle("N");
2614 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2615 outputContainer->Add(fhPtIsoMCPhoton) ;
2617 fhPtNoIsoMCPhoton = new TH1F
2618 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
2619 fhPtNoIsoMCPhoton->SetYTitle("N");
2620 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2621 outputContainer->Add(fhPtNoIsoMCPhoton) ;
2623 // fhPtNoIsoConversion = new TH1F
2624 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
2625 // fhPtNoIsoConversion->SetYTitle("N");
2626 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
2627 // outputContainer->Add(fhPtNoIsoConversion) ;
2629 fhPtNoIsoFragmentation = new TH1F
2630 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
2631 fhPtNoIsoFragmentation->SetYTitle("N");
2632 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
2633 outputContainer->Add(fhPtNoIsoFragmentation) ;
2635 fhPtNoIsoHadron = new TH1F
2636 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
2637 fhPtNoIsoHadron->SetYTitle("N");
2638 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
2639 outputContainer->Add(fhPtNoIsoHadron) ;
2646 const Int_t buffersize = 255;
2647 char name[buffersize];
2648 char title[buffersize];
2649 for(Int_t icone = 0; icone<fNCones; icone++)
2651 // sum pt in cone vs. pt leading
2652 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
2653 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2654 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2655 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2656 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2657 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
2659 // pt in cone vs. pt leading
2660 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
2661 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2662 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2663 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2664 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2665 outputContainer->Add(fhPtLeadingPt[icone]) ;
2667 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
2668 snprintf(name, buffersize,"hPerpSumPtLeadingPt_Cone_%d",icone);
2669 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2670 fhPerpSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2671 fhPerpSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2672 fhPerpSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2673 outputContainer->Add(fhPerpSumPtLeadingPt[icone]) ;
2675 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
2676 snprintf(name, buffersize,"hPerpPtLeadingPt_Cone_%d",icone);
2677 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2678 fhPerpPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2679 fhPerpPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2680 fhPerpPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2681 outputContainer->Add(fhPerpPtLeadingPt[icone]) ;
2686 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
2687 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2688 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2689 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2690 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
2691 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
2693 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
2694 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
2695 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2696 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2697 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
2698 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
2700 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
2701 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2702 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2703 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2704 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
2705 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
2707 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
2708 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2709 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2710 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2711 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
2712 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
2714 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
2715 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2716 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2717 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2718 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2719 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
2721 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
2722 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2723 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2724 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2725 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2726 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
2728 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
2729 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2730 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2731 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2732 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
2733 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
2735 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
2736 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2737 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2738 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2739 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
2740 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
2744 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
2747 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
2748 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2749 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2750 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2751 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
2753 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
2754 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2755 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2756 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2757 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
2760 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
2761 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2762 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2763 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2764 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2765 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
2767 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
2768 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]);
2769 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2770 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2771 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2772 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
2774 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
2775 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]);
2776 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2777 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2778 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2779 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
2781 // pt decays isolated
2782 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2783 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]);
2784 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2785 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2786 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
2788 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2789 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]);
2790 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2791 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2792 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
2794 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2795 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]);
2796 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2797 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2798 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2799 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
2801 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2802 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]);
2803 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2804 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2805 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2806 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
2808 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2809 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]);
2810 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2811 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2812 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2813 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
2817 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
2818 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2819 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2820 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
2821 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
2822 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
2824 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
2825 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2826 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2827 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
2828 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
2829 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
2831 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
2832 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2833 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2834 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
2835 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
2836 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
2838 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
2839 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]);
2840 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2841 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
2842 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
2843 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
2845 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
2846 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]);
2847 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2848 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
2849 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
2850 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
2853 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2854 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]);
2855 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2856 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
2857 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
2858 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
2860 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2861 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]);
2862 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2863 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
2864 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
2865 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
2868 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2869 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]);
2870 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2871 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2872 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2873 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
2875 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2876 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]);
2877 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2878 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
2879 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
2880 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
2882 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2883 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]);
2884 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2885 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2886 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2887 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
2892 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
2893 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2894 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2895 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2896 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
2898 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
2899 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2900 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2901 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2902 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
2904 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
2905 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2906 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2907 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2908 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
2910 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
2911 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2912 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2913 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2914 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
2916 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
2917 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2918 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2919 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2920 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
2922 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
2923 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2924 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2925 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2926 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
2928 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
2929 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2930 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2931 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2932 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
2934 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
2935 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2936 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2937 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2938 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
2940 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
2941 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2942 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2943 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2944 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
2946 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
2947 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2948 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2949 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2950 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
2953 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
2954 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2955 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2956 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2957 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
2959 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
2960 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2961 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2962 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2963 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
2965 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
2966 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2967 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2968 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2969 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
2971 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
2972 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2973 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2974 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2975 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
2977 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
2978 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2979 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2980 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2981 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
2983 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
2984 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
2985 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2986 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2987 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
2994 if(fFillPileUpHistograms)
2996 for (Int_t i = 0; i < 7 ; i++)
2998 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
2999 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()),
3000 nptbins,ptmin,ptmax);
3001 fhEIsoPileUp[i]->SetYTitle("dN / dE");
3002 fhEIsoPileUp[i]->SetXTitle("E (GeV)");
3003 outputContainer->Add(fhEIsoPileUp[i]) ;
3005 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
3006 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()),
3007 nptbins,ptmin,ptmax);
3008 fhPtIsoPileUp[i]->SetYTitle("dN / p_{T}");
3009 fhPtIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
3010 outputContainer->Add(fhPtIsoPileUp[i]) ;
3012 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
3013 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()),
3014 nptbins,ptmin,ptmax);
3015 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
3016 fhENoIsoPileUp[i]->SetXTitle("E (GeV)");
3017 outputContainer->Add(fhENoIsoPileUp[i]) ;
3019 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
3020 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()),
3021 nptbins,ptmin,ptmax);
3022 fhPtNoIsoPileUp[i]->SetYTitle("dN / p_{T}");
3023 fhPtNoIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
3024 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
3027 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3028 fhTimeENoCut->SetXTitle("E (GeV)");
3029 fhTimeENoCut->SetYTitle("time (ns)");
3030 outputContainer->Add(fhTimeENoCut);
3032 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3033 fhTimeESPD->SetXTitle("E (GeV)");
3034 fhTimeESPD->SetYTitle("time (ns)");
3035 outputContainer->Add(fhTimeESPD);
3037 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3038 fhTimeESPDMulti->SetXTitle("E (GeV)");
3039 fhTimeESPDMulti->SetYTitle("time (ns)");
3040 outputContainer->Add(fhTimeESPDMulti);
3042 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3043 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
3044 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
3045 outputContainer->Add(fhTimeNPileUpVertSPD);
3047 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
3048 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
3049 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
3050 outputContainer->Add(fhTimeNPileUpVertTrack);
3052 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3053 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
3054 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
3055 outputContainer->Add(fhTimeNPileUpVertContributors);
3057 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);
3058 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
3059 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
3060 outputContainer->Add(fhTimePileUpMainVertexZDistance);
3062 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
3063 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
3064 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
3065 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
3068 return outputContainer ;
3072 //__________________________________
3073 void AliAnaParticleIsolation::Init()
3075 // Do some checks and init stuff
3077 // In case of several cone and thresholds analysis, open the cuts for the filling of the
3078 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
3079 // The different cones, thresholds are tested for this list of tracks, clusters.
3082 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
3083 GetIsolationCut()->SetPtThreshold(100);
3084 GetIsolationCut()->SetPtFraction(100);
3085 GetIsolationCut()->SetConeSize(1);
3089 //____________________________________________
3090 void AliAnaParticleIsolation::InitParameters()
3093 //Initialize the parameters of the analysis.
3094 SetInputAODName("PWG4Particle");
3095 SetAODObjArrayName("IsolationCone");
3096 AddToHistogramsName("AnaIsolation_");
3098 fCalorimeter = "PHOS" ;
3099 fReMakeIC = kFALSE ;
3100 fMakeSeveralIC = kFALSE ;
3102 //----------- Several IC-----------------
3105 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
3106 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
3107 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
3108 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
3110 //------------- Histograms settings -------
3111 fHistoNPtSumBins = 100 ;
3112 fHistoPtSumMax = 50 ;
3113 fHistoPtSumMin = 0. ;
3115 fHistoNPtInConeBins = 100 ;
3116 fHistoPtInConeMax = 50 ;
3117 fHistoPtInConeMin = 0. ;
3121 //__________________________________________________
3122 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
3124 //Do analysis and fill aods
3125 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
3127 if(!GetInputAODBranch())
3129 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
3133 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
3135 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());
3139 Int_t n = 0, nfrac = 0;
3140 Bool_t isolated = kFALSE ;
3141 Float_t coneptsum = 0 ;
3142 TObjArray * pl = 0x0; ;
3144 //Select the calorimeter for candidate isolation with neutral particles
3145 if (fCalorimeter == "PHOS" )
3146 pl = GetPHOSClusters();
3147 else if (fCalorimeter == "EMCAL")
3148 pl = GetEMCALClusters();
3150 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
3151 Double_t ptLeading = 0. ;
3152 Int_t idLeading = -1 ;
3153 TLorentzVector mom ;
3154 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3155 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
3157 for(Int_t iaod = 0; iaod < naod; iaod++)
3159 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3161 //If too small or too large pt, skip
3162 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
3164 //check if it is low pt trigger particle
3165 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
3166 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
3169 continue ; //trigger should not come from underlying event
3172 //vertex cut in case of mixing
3173 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
3174 if(check == 0) continue;
3175 if(check == -1) return;
3177 //find the leading particles with highest momentum
3178 if ( aodinput->Pt() > ptLeading )
3180 ptLeading = aodinput->Pt() ;
3184 aodinput->SetLeadingParticle(kFALSE);
3186 }//finish searching for leading trigger particle
3188 // Check isolation of leading particle
3189 if(idLeading < 0) return;
3191 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
3192 aodinput->SetLeadingParticle(kTRUE);
3194 // Check isolation only of clusters in fiducial region
3195 if(IsFiducialCutOn())
3197 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
3201 //After cuts, study isolation
3202 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
3203 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
3204 GetReader(), GetCaloPID(),
3205 kTRUE, aodinput, GetAODObjArrayName(),
3206 n,nfrac,coneptsum, isolated);
3208 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
3212 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
3213 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
3218 //_________________________________________________________
3219 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
3221 //Do analysis and fill histograms
3223 //Loop on stored AOD
3224 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3225 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
3227 for(Int_t iaod = 0; iaod < naod ; iaod++)
3229 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3231 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
3233 // Check isolation only of clusters in fiducial region
3234 if(IsFiducialCutOn())
3236 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
3237 if(! in ) continue ;
3240 Float_t pt = aod->Pt();
3241 //If too small or too large pt, skip
3242 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
3244 Bool_t isolated = aod->IsIsolated();
3245 Bool_t decay = aod->IsTagged();
3246 Float_t energy = aod->E();
3247 Float_t phi = aod->Phi();
3248 Float_t eta = aod->Eta();
3250 // --- In case of redoing isolation from delta AOD ----
3254 //Analysis of multiple IC at same time
3255 MakeSeveralICAnalysis(aod);
3260 //In case a more strict IC is needed in the produced AOD
3262 Int_t n = 0, nfrac = 0;
3263 Float_t coneptsum = 0 ;
3265 //Recover reference arrays with clusters and tracks
3266 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
3267 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
3269 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3270 GetReader(), GetCaloPID(),
3272 n,nfrac,coneptsum, isolated);
3274 fhConeSumPt ->Fill(pt, coneptsum);
3275 fhConeSumPtTrigEtaPhi->Fill(eta,phi,coneptsum);
3277 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
3281 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
3283 FillTrackMatchingShowerShapeControlHistograms(aod,GetReader(), GetCaloPID());
3285 //Fill pt/sum pT distribution of particles in cone or in UE band
3286 Float_t coneptsumCluster = 0;
3287 Float_t coneptsumTrack = 0;
3288 Float_t coneptsumCell = 0;
3290 CalculateTrackSignalInCone (aod,coneptsumTrack );
3291 CalculateCaloSignalInCone (aod,coneptsumCluster);
3292 CalculateCaloCellSignalInCone(aod,coneptsumCell );
3294 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
3296 fhConeSumPtClustervsTrack ->Fill(coneptsumCluster,coneptsumTrack);
3297 fhConeSumPtCellvsTrack ->Fill(coneptsumCell, coneptsumTrack);
3298 fhConeSumPtCellTrack ->Fill(pt, coneptsumTrack+coneptsumCell);
3299 fhConeSumPtCellTrackTrigEtaPhi->Fill(eta,phi,coneptsumTrack+coneptsumCell);
3302 fhConeSumPt ->Fill(pt, coneptsumTrack+coneptsumCluster);
3303 fhConeSumPtTrigEtaPhi ->Fill(eta,phi,coneptsumTrack+coneptsumCluster);
3306 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsumTrack+coneptsumCluster);
3308 //normalize phi/eta band per area unit
3309 CalculateNormalizeUEBandPerUnitArea(aod, coneptsumCluster, coneptsumCell, coneptsumTrack) ;
3312 Int_t mcTag = aod->GetTag() ;
3316 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
3318 // Fill histograms to undertand pile-up before other cuts applied
3319 // Remember to relax time cuts in the reader
3320 FillPileUpHistograms(aod->GetCaloLabel(0));
3322 fhEIso ->Fill(energy);
3324 fhPhiIso ->Fill(pt,phi);
3325 fhEtaIso ->Fill(pt,eta);
3326 fhEtaPhiIso ->Fill(eta,phi);
3328 fhPtNLocMaxIso ->Fill(pt,aod->GetFiducialArea()) ;
3329 fhPtCentralityIso ->Fill(pt,GetEventCentrality()) ;
3330 fhPtEventPlaneIso ->Fill(pt,GetEventPlaneAngle() ) ;
3334 fhPtDecayIso ->Fill(pt);
3335 fhEtaPhiDecayIso->Fill(eta,phi);
3338 if(fFillPileUpHistograms)
3340 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
3341 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
3342 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
3343 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
3344 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
3345 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
3346 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
3352 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
3354 fhPtIsoMCPhoton ->Fill(pt);
3357 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
3359 fhPtIsoPrompt ->Fill(pt);
3360 fhPhiIsoPrompt ->Fill(pt,phi);
3361 fhEtaIsoPrompt ->Fill(pt,eta);
3363 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
3365 fhPtIsoFragmentation ->Fill(pt);
3366 fhPhiIsoFragmentation ->Fill(pt,phi);
3367 fhEtaIsoFragmentation ->Fill(pt,eta);
3369 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
3371 fhPtIsoPi0 ->Fill(pt);
3372 fhPhiIsoPi0 ->Fill(pt,phi);
3373 fhEtaIsoPi0 ->Fill(pt,eta);
3375 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
3377 fhPtIsoPi0Decay ->Fill(pt);
3378 fhPhiIsoPi0Decay ->Fill(pt,phi);
3379 fhEtaIsoPi0Decay ->Fill(pt,eta);
3381 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
3383 fhPtIsoEtaDecay ->Fill(pt);
3384 fhPhiIsoEtaDecay ->Fill(pt,phi);
3385 fhEtaIsoEtaDecay ->Fill(pt,eta);
3387 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
3389 fhPtIsoOtherDecay ->Fill(pt);
3390 fhPhiIsoOtherDecay ->Fill(pt,phi);
3391 fhEtaIsoOtherDecay ->Fill(pt,eta);
3393 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
3395 // fhPtIsoConversion ->Fill(pt);
3396 // fhPhiIsoConversion ->Fill(pt,phi);
3397 // fhEtaIsoConversion ->Fill(pt,eta);
3399 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
3401 fhPtIsoHadron ->Fill(pt);
3402 fhPhiIsoHadron ->Fill(pt,phi);
3403 fhEtaIsoHadron ->Fill(pt,eta);
3405 }//Histograms with MC
3407 }//Isolated histograms
3408 else // NON isolated
3410 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
3412 fhENoIso ->Fill(energy);
3413 fhPtNoIso ->Fill(pt);
3414 fhEtaPhiNoIso ->Fill(eta,phi);
3415 fhPtNLocMaxNoIso->Fill(pt,aod->GetFiducialArea());
3417 if(fFillPileUpHistograms)
3419 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
3420 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
3421 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
3422 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
3423 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
3424 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
3425 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
3430 fhPtDecayNoIso ->Fill(pt);
3431 fhEtaPhiDecayNoIso->Fill(eta,phi);
3436 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
3437 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
3438 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
3439 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
3440 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
3441 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
3442 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
3443 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
3444 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
3451 //_____________________________________________________________________________________
3452 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
3455 //Isolation Cut Analysis for both methods and different pt cuts and cones
3456 Float_t ptC = ph->Pt();
3457 Float_t etaC = ph->Eta();
3458 Float_t phiC = ph->Phi();
3459 Int_t tag = ph->GetTag();
3460 Bool_t decay = ph->IsTagged();
3462 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
3464 //Keep original setting used when filling AODs, reset at end of analysis
3465 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
3466 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
3467 Float_t rorg = GetIsolationCut()->GetConeSize();
3469 Float_t coneptsum = 0 ;
3470 Int_t n [10][10];//[fNCones][fNPtThresFrac];
3471 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
3472 Bool_t isolated = kFALSE;
3474 Int_t nFracCone = 0;
3476 // fill hist with all particles before isolation criteria
3477 fhPtNoIso ->Fill(ptC);
3478 fhEtaPhiNoIso->Fill(etaC,phiC);
3482 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
3483 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
3484 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
3485 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
3486 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
3487 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
3488 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
3489 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
3490 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
3495 fhPtDecayNoIso ->Fill(ptC);
3496 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
3498 //Get vertex for photon momentum calculation
3499 Double_t vertex[] = {0,0,0} ; //vertex ;
3500 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
3501 GetReader()->GetVertex(vertex);
3503 //Loop on cone sizes
3504 for(Int_t icone = 0; icone<fNCones; icone++)
3506 //Recover reference arrays with clusters and tracks
3507 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
3508 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
3510 //If too small or too large pt, skip
3511 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
3513 //In case a more strict IC is needed in the produced AOD
3515 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
3517 GetIsolationCut()->SetSumPtThreshold(100);
3518 GetIsolationCut()->SetPtThreshold(100);
3519 GetIsolationCut()->SetPtFraction(100);
3520 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
3521 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3522 GetReader(), GetCaloPID(),
3524 nCone,nFracCone,coneptsum, isolated);
3527 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
3529 // retreive pt tracks to fill histo vs. pt leading
3530 //Fill pt distribution of particles in cone
3531 //fhPtLeadingPt(),fhPerpSumPtLeadingPt(),fhPerpPtLeadingPt(),
3535 Double_t sumptPerp = 0. ;
3536 TObjArray * trackList = GetCTSTracks() ;
3537 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
3539 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
3540 //fill the histograms at forward range
3543 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
3547 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
3548 Double_t dEta = etaC - track->Eta();
3549 Double_t arg = dPhi*dPhi + dEta*dEta;
3550 if(TMath::Sqrt(arg) < fConeSizes[icone])
3552 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3553 sumptPerp+=track->Pt();
3556 dPhi = phiC - track->Phi() - TMath::PiOver2();
3557 arg = dPhi*dPhi + dEta*dEta;
3558 if(TMath::Sqrt(arg) < fConeSizes[icone])
3560 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3561 sumptPerp+=track->Pt();
3565 fhPerpSumPtLeadingPt[icone]->Fill(ptC,sumptPerp);
3569 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
3571 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
3572 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3573 coneptsum+=track->Pt();
3580 TLorentzVector mom ;
3581 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
3583 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
3584 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
3586 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
3587 coneptsum+=mom.Pt();
3593 //Loop on ptthresholds
3594 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
3597 nfrac[icone][ipt]=0;
3598 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
3599 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
3600 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
3602 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3603 GetReader(), GetCaloPID(),
3605 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3607 if(!isolated) continue;
3608 //Normal ptThreshold cut
3610 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",
3611 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3612 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
3614 if(n[icone][ipt] == 0)
3616 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
3617 fhPtThresIsolated[icone][ipt]->Fill(ptC);
3618 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
3622 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
3623 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
3628 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3629 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3630 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3631 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3632 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3633 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3634 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3635 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
3639 // pt in cone fraction
3640 if(nfrac[icone][ipt] == 0)
3642 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
3643 fhPtFracIsolated[icone][ipt]->Fill(ptC);
3644 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
3648 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
3649 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
3654 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3655 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3656 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3657 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3658 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3659 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3660 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3661 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
3665 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
3667 //Pt threshold on pt cand/ sum in cone histograms
3668 if(coneptsum<fSumPtThresholds[ipt])
3669 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
3670 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
3671 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
3672 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
3675 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
3676 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
3680 // pt sum pt frac method
3681 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
3683 if(coneptsum < fPtFractions[ipt]*ptC)
3685 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
3686 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
3687 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
3691 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
3692 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
3697 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
3698 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
3699 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
3700 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
3701 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
3702 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
3706 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
3707 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
3715 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
3716 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
3717 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
3718 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
3719 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
3720 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
3721 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
3722 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
3727 //Reset original parameters for AOD analysis
3728 GetIsolationCut()->SetPtThreshold(ptthresorg);
3729 GetIsolationCut()->SetPtFraction(ptfracorg);
3730 GetIsolationCut()->SetConeSize(rorg);
3734 //_____________________________________________________________
3735 void AliAnaParticleIsolation::Print(const Option_t * opt) const
3738 //Print some relevant parameters set for the analysis
3742 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3743 AliAnaCaloTrackCorrBaseClass::Print(" ");
3745 printf("ReMake Isolation = %d \n", fReMakeIC) ;
3746 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
3747 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
3751 printf("N Cone Sizes = %d\n", fNCones) ;
3752 printf("Cone Sizes = \n") ;
3753 for(Int_t i = 0; i < fNCones; i++)
3754 printf(" %1.2f;", fConeSizes[i]) ;
3757 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
3758 printf(" pT thresholds = \n") ;
3759 for(Int_t i = 0; i < fNPtThresFrac; i++)
3760 printf(" %2.2f;", fPtThresholds[i]) ;
3764 printf(" pT fractions = \n") ;
3765 for(Int_t i = 0; i < fNPtThresFrac; i++)
3766 printf(" %2.2f;", fPtFractions[i]) ;
3770 printf("sum pT thresholds = \n") ;
3771 for(Int_t i = 0; i < fNPtThresFrac; i++)
3772 printf(" %2.2f;", fSumPtThresholds[i]) ;
3777 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
3778 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);