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 fhEtaPhiInConeCluster(0),fhEtaPhiCluster(0),fhEtaPhiInConeTrack(0),fhEtaPhiTrack(0),
78 fhEtaBandCluster(0), fhPhiBandCluster(0),
79 fhEtaBandTrack(0), fhPhiBandTrack(0),
80 fhEtaBandCell(0), fhPhiBandCell(0),
81 fhConeSumPt(0), fhConeSumPtCellTrack(0),
82 fhConeSumPtCell(0), fhConeSumPtCluster(0), fhConeSumPtTrack(0),
83 fhConeSumPtEtaBandUECluster(0), fhConeSumPtPhiBandUECluster(0),
84 fhConeSumPtEtaBandUETrack(0), fhConeSumPtPhiBandUETrack(0),
85 fhConeSumPtEtaBandUECell(0), fhConeSumPtPhiBandUECell(0),
86 fhConeSumPtTrigEtaPhi(0),
87 fhConeSumPtCellTrackTrigEtaPhi(0),
88 fhConeSumPtEtaBandUEClusterTrigEtaPhi(0), fhConeSumPtPhiBandUEClusterTrigEtaPhi(0),
89 fhConeSumPtEtaBandUETrackTrigEtaPhi(0), fhConeSumPtPhiBandUETrackTrigEtaPhi(0),
90 fhConeSumPtEtaBandUECellTrigEtaPhi(0), fhConeSumPtPhiBandUECellTrigEtaPhi(0),
91 fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
92 fhConeSumPtEtaUESubTrigEtaPhi(0), fhConeSumPtPhiUESubTrigEtaPhi(0),
93 fhConeSumPtEtaUESubTrackCell(0), fhConeSumPtPhiUESubTrackCell(0),
94 fhConeSumPtEtaUESubTrackCellTrigEtaPhi(0), fhConeSumPtPhiUESubTrackCellTrigEtaPhi(0),
95 fhConeSumPtEtaUESubCluster(0), fhConeSumPtPhiUESubCluster(0),
96 fhConeSumPtEtaUESubClusterTrigEtaPhi(0), fhConeSumPtPhiUESubClusterTrigEtaPhi(0),
97 fhConeSumPtEtaUESubCell(0), fhConeSumPtPhiUESubCell(0),
98 fhConeSumPtEtaUESubCellTrigEtaPhi(0), fhConeSumPtPhiUESubCellTrigEtaPhi(0),
99 fhConeSumPtEtaUESubTrack(0), fhConeSumPtPhiUESubTrack(0),
100 fhConeSumPtEtaUESubTrackTrigEtaPhi(0), fhConeSumPtPhiUESubTrackTrigEtaPhi(0),
101 fhFractionTrackOutConeEta(0), fhFractionTrackOutConeEtaTrigEtaPhi(0),
102 fhFractionClusterOutConeEta(0), fhFractionClusterOutConeEtaTrigEtaPhi(0),
103 fhFractionClusterOutConePhi(0), fhFractionClusterOutConePhiTrigEtaPhi(0),
104 fhFractionCellOutConeEta(0), fhFractionCellOutConeEtaTrigEtaPhi(0),
105 fhFractionCellOutConePhi(0), fhFractionCellOutConePhiTrigEtaPhi(0),
106 fhConeSumPtClustervsTrack(0),
107 fhConeSumPtEtaUESubClustervsTrack(0), fhConeSumPtPhiUESubClustervsTrack(0),
108 fhConeSumPtCellvsTrack(0),
109 fhConeSumPtEtaUESubCellvsTrack(0), fhConeSumPtPhiUESubCellvsTrack(0),
110 fhEtaBandClustervsTrack(0), fhPhiBandClustervsTrack(0),
111 fhEtaBandNormClustervsTrack(0), fhPhiBandNormClustervsTrack(0),
112 fhEtaBandCellvsTrack(0), fhPhiBandCellvsTrack(0),
113 fhEtaBandNormCellvsTrack(0), fhPhiBandNormCellvsTrack(0),
114 fhConeSumPtSubvsConeSumPtTotPhiTrack(0), fhConeSumPtSubNormvsConeSumPtTotPhiTrack(0),
115 fhConeSumPtSubvsConeSumPtTotEtaTrack(0), fhConeSumPtSubNormvsConeSumPtTotEtaTrack(0),
116 fhConeSumPtSubvsConeSumPtTotPhiCluster(0), fhConeSumPtSubNormvsConeSumPtTotPhiCluster(0),
117 fhConeSumPtSubvsConeSumPtTotEtaCluster(0), fhConeSumPtSubNormvsConeSumPtTotEtaCluster(0),
118 fhConeSumPtSubvsConeSumPtTotPhiCell(0), fhConeSumPtSubNormvsConeSumPtTotPhiCell(0),
119 fhConeSumPtSubvsConeSumPtTotEtaCell(0), fhConeSumPtSubNormvsConeSumPtTotEtaCell(0),
121 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
122 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
123 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
124 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
125 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
126 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
127 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
128 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
129 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
130 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
131 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
132 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
133 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
134 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
135 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
136 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
137 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
138 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
139 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
140 //fhPtNoIsoConversion(0),
141 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
143 fhSumPtLeadingPt(), fhPtLeadingPt(),
144 fhPerpSumPtLeadingPt(), fhPerpPtLeadingPt(),
145 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
146 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
147 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
148 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
149 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
150 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
151 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
152 // Cluster control histograms
153 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
154 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
155 fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
156 fhELambda0TRD(), fhELambda1TRD(),
157 fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
158 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
159 // Number of local maxima in cluster
161 fhELambda0LocMax1(), fhELambda1LocMax1(),
162 fhELambda0LocMax2(), fhELambda1LocMax2(),
163 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
165 fhEIsoPileUp(), fhPtIsoPileUp(),
166 fhENoIsoPileUp(), fhPtNoIsoPileUp(),
167 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
168 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
169 fhTimeNPileUpVertContributors(0),
170 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
171 // Histograms settings
172 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
173 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
177 //Initialize parameters
180 for(Int_t i = 0; i < 5 ; i++)
184 fhPtSumIsolatedPrompt [i] = 0 ;
185 fhPtSumIsolatedFragmentation[i] = 0 ;
186 fhPtSumIsolatedPi0Decay [i] = 0 ;
187 fhPtSumIsolatedPi0 [i] = 0 ;
188 fhPtSumIsolatedEtaDecay [i] = 0 ;
189 fhPtSumIsolatedOtherDecay [i] = 0 ;
190 // fhPtSumIsolatedConversion [i] = 0 ;
191 fhPtSumIsolatedHadron [i] = 0 ;
193 for(Int_t j = 0; j < 5 ; j++)
195 fhPtThresIsolated [i][j] = 0 ;
196 fhPtFracIsolated [i][j] = 0 ;
197 fhPtSumIsolated [i][j] = 0 ;
199 fhEtaPhiPtThresIso [i][j] = 0 ;
200 fhEtaPhiPtThresDecayIso [i][j] = 0 ;
201 fhPtPtThresDecayIso [i][j] = 0 ;
203 fhEtaPhiPtFracIso [i][j] = 0 ;
204 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
205 fhPtPtFracDecayIso [i][j] = 0 ;
206 fhPtPtSumDecayIso [i][j] = 0 ;
207 fhPtSumDensityIso [i][j] = 0 ;
208 fhPtSumDensityDecayIso [i][j] = 0 ;
209 fhEtaPhiSumDensityIso [i][j] = 0 ;
210 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
211 fhPtFracPtSumIso [i][j] = 0 ;
212 fhPtFracPtSumDecayIso [i][j] = 0 ;
213 fhEtaPhiFracPtSumIso [i][j] = 0 ;
214 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
216 fhPtThresIsolatedPrompt [i][j] = 0 ;
217 fhPtThresIsolatedFragmentation[i][j] = 0 ;
218 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
219 fhPtThresIsolatedPi0 [i][j] = 0 ;
220 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
221 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
222 // fhPtThresIsolatedConversion [i][j] = 0 ;
223 fhPtThresIsolatedHadron [ i][j] = 0 ;
225 fhPtFracIsolatedPrompt [i][j] = 0 ;
226 fhPtFracIsolatedFragmentation [i][j] = 0 ;
227 fhPtFracIsolatedPi0 [i][j] = 0 ;
228 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
229 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
230 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
231 // fhPtFracIsolatedConversion [i][j] = 0 ;
232 fhPtFracIsolatedHadron [i][j] = 0 ;
237 for(Int_t i = 0; i < 5 ; i++)
239 fPtFractions [i] = 0 ;
240 fPtThresholds [i] = 0 ;
241 fSumPtThresholds[i] = 0 ;
245 for(Int_t i = 0; i < 2 ; i++)
247 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
248 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
249 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
250 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
252 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
253 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
256 // Number of local maxima in cluster
258 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
259 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
260 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
266 for(Int_t i = 0 ; i < 7 ; i++)
268 fhPtInConePileUp[i] = 0 ;
269 fhEIsoPileUp [i] = 0 ;
270 fhPtIsoPileUp [i] = 0 ;
271 fhENoIsoPileUp [i] = 0 ;
272 fhPtNoIsoPileUp [i] = 0 ;
277 //_______________________________________________________________________________________________
278 void AliAnaParticleIsolation::CalculateCaloUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
279 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
281 // Get the clusters pT or sum of pT in phi/eta bands or at 45 degrees from trigger
283 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
285 Float_t conesize = GetIsolationCut()->GetConeSize();
288 //Select the Calorimeter
289 TObjArray * pl = 0x0;
290 if (fCalorimeter == "PHOS" )
291 pl = GetPHOSClusters();
292 else if (fCalorimeter == "EMCAL")
293 pl = GetEMCALClusters();
297 //Get vertex for cluster momentum calculation
298 Double_t vertex[] = {0,0,0} ; //vertex ;
299 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
300 GetReader()->GetVertex(vertex);
302 Float_t ptTrig = pCandidate->Pt() ;
303 Float_t phiTrig = pCandidate->Phi();
304 Float_t etaTrig = pCandidate->Eta();
306 for(Int_t icluster=0; icluster < pl->GetEntriesFast(); icluster++)
308 AliVCluster* cluster = (AliVCluster *) pl->At(icluster);
312 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Cluster not available?");
316 //Do not count the candidate (photon or pi0) or the daughters of the candidate
317 if(cluster->GetID() == pCandidate->GetCaloLabel(0) ||
318 cluster->GetID() == pCandidate->GetCaloLabel(1) ) continue ;
320 //Remove matched clusters to tracks if Neutral and Track info is used
321 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged &&
322 IsTrackMatched(cluster,GetReader()->GetInputEvent())) continue ;
324 cluster->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
326 //exclude particles in cone
327 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, mom.Eta(), mom.Phi());
329 // histo of eta and phi for all clusters
330 fhEtaPhiCluster->Fill(mom.Eta(), mom.Phi());
332 // histos for all clusters in cone
333 fhEtaPhiInConeCluster->Fill(mom.Eta(), mom.Phi());
336 //fill histogram for UE in phi band in EMCal acceptance
337 if(mom.Eta() > (etaTrig-conesize) && mom.Eta() < (etaTrig+conesize))
339 phiBandPtSum+=mom.Pt();
340 fhPhiBandCluster->Fill(mom.Eta(),mom.Phi());
344 //fill histogram for UE in eta band in EMCal acceptance
345 if(mom.Phi() > (phiTrig-conesize) && mom.Phi() < (phiTrig+conesize))
347 etaBandPtSum+=mom.Pt();
348 fhEtaBandCluster->Fill(mom.Eta(),mom.Phi());
352 fhConeSumPtEtaBandUECluster ->Fill(ptTrig , etaBandPtSum);
353 fhConeSumPtPhiBandUECluster ->Fill(ptTrig , phiBandPtSum);
354 fhConeSumPtEtaBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
355 fhConeSumPtPhiBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
359 //________________________________________________________________________________________________
360 void AliAnaParticleIsolation::CalculateCaloCellUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
361 Float_t & etaBandPtSumCells, Float_t & phiBandPtSumCells)
363 // Get the cells amplitude or sum of amplitude in phi/eta bands or at 45 degrees from trigger
365 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
367 Float_t conesize = GetIsolationCut()->GetConeSize();
369 Float_t phiTrig = pCandidate->Phi();
370 if(phiTrig<0) phiTrig += TMath::TwoPi();
371 Float_t etaTrig = pCandidate->Eta();
373 if(pCandidate->GetDetector()=="EMCAL")
375 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
378 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
380 if(!eGeom->CheckAbsCellId(absId)) return ;
382 // Get absolute (col,row) of trigger particle
383 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
385 Int_t imEta=-1, imPhi=-1;
386 Int_t ieta =-1, iphi =-1;
388 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
390 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
392 Int_t colTrig = ieta;
393 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + ieta ;
394 Int_t rowTrig = iphi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
396 Int_t sqrSize = int(conesize/0.0143);
398 AliVCaloCells * cells = GetEMCALCells();
400 Int_t nTotalRows = AliEMCALGeoParams::fgkEMCALRows*16/3 ; // 24*(16/3) 5 full-size Sectors (2 SM) + 1 one-third Sector (2 SM)
401 Int_t nTotalCols = 2*AliEMCALGeoParams::fgkEMCALCols;
402 // printf("nTotalRows %i, nTotalCols %i\n",nTotalRows,nTotalCols);
403 // Loop on cells in eta band
405 Int_t irowmin = rowTrig-sqrSize;
406 if(irowmin<0) irowmin=0;
407 Int_t irowmax = rowTrig+sqrSize;
408 if(irowmax>AliEMCALGeoParams::fgkEMCALRows) irowmax=AliEMCALGeoParams::fgkEMCALRows;
411 for(Int_t irow = irowmin; irow <irowmax; irow++)
413 for(Int_t icol = 0; icol < nTotalCols; icol++)
415 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
416 if(inSector==5) continue;
419 if(icol < AliEMCALGeoParams::fgkEMCALCols)
421 inSupMod = 2*inSector + 1;
424 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
426 inSupMod = 2*inSector;
427 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
430 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
432 // Exclude cells in cone
433 if(TMath::Abs(icol-colTrig) < sqrSize || TMath::Abs(irow-rowTrig) < sqrSize){
436 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
437 if(!eGeom->CheckAbsCellId(iabsId)) continue;
438 etaBandPtSumCells += cells->GetCellAmplitude(iabsId);
439 fhEtaBandCell->Fill(colTrig,rowTrig);
441 // printf("ETA inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, etaBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,etaBandPtSumCells);
444 Int_t icolmin = colTrig-sqrSize;
445 if(icolmin<0) icolmin=0;
446 Int_t icolmax = colTrig+sqrSize;
447 if(icolmax>AliEMCALGeoParams::fgkEMCALCols) icolmax=AliEMCALGeoParams::fgkEMCALCols;
449 // Loop on cells in phi band
450 for(Int_t icol = icolmin; icol < icolmax; icol++)
452 for(Int_t irow = 0; irow < nTotalRows; irow++)
454 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
455 if(inSector==5) continue;
458 // printf("icol %i, irow %i, inSector %i\n",icol,irow ,inSector);
459 if(icol < AliEMCALGeoParams::fgkEMCALCols)
461 // printf("icol < AliEMCALGeoParams::fgkEMCALCols %i\n",AliEMCALGeoParams::fgkEMCALCols );
462 inSupMod = 2*inSector + 1;
465 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
467 // printf("icol > AliEMCALGeoParams::fgkEMCALCols -1 %i\n",AliEMCALGeoParams::fgkEMCALCols -1 );
468 inSupMod = 2*inSector;
469 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
472 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ; // Stesso problema di sopra //
474 // Exclude cells in cone
475 if(TMath::Abs(icol-colTrig) < sqrSize) {
476 //printf("TMath::Abs(icol-colTrig) %i < sqrSize %i\n",TMath::Abs(icol-colTrig) ,sqrSize);continue ;
478 if(TMath::Abs(irow-rowTrig) < sqrSize) {
479 //printf("TMath::Abs(irow-rowTrig) %i < sqrSize %i\n",TMath::Abs(irow-rowTrig) ,sqrSize);continue ;
482 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
483 if(!eGeom->CheckAbsCellId(iabsId)) {printf("!eGeom->CheckAbsCellId(iabsId=%i) inSupMod %i irowLoc %i icolLoc %i \n",iabsId,inSupMod, irowLoc, icolLoc);continue;}
484 phiBandPtSumCells += cells->GetCellAmplitude(iabsId);
485 fhPhiBandCell->Fill(colTrig,rowTrig);
486 //printf("inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, phiBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,phiBandPtSumCells);
493 Float_t ptTrig = pCandidate->Pt();
495 fhConeSumPtEtaBandUECell ->Fill(ptTrig , etaBandPtSumCells);
496 fhConeSumPtPhiBandUECell ->Fill(ptTrig , phiBandPtSumCells);
497 fhConeSumPtEtaBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSumCells);
498 fhConeSumPtPhiBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSumCells);
502 //________________________________________________________________________________________________
503 void AliAnaParticleIsolation::CalculateTrackUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
504 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
506 // Get the track pT or sum of pT in phi/eta bands or at 45 degrees from trigger
508 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
510 Float_t conesize = GetIsolationCut()->GetConeSize();
512 Double_t sumptPerp= 0. ;
513 Float_t ptTrig = pCandidate->Pt() ;
514 Float_t phiTrig = pCandidate->Phi();
515 Float_t etaTrig = pCandidate->Eta();
517 TObjArray * trackList = GetCTSTracks() ;
518 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
520 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
524 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
528 //Do not count the candidate (pion, conversion photon) or the daughters of the candidate
529 if(track->GetID() == pCandidate->GetTrackLabel(0) || track->GetID() == pCandidate->GetTrackLabel(1) ||
530 track->GetID() == pCandidate->GetTrackLabel(2) || track->GetID() == pCandidate->GetTrackLabel(3) ) continue ;
532 // histo of eta:phi for all tracks
533 fhEtaPhiTrack->Fill(track->Eta(),track->Phi());
535 //exclude particles in cone
536 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, track->Eta(), track->Phi());
538 // histo of eta:phi for all tracks in cone
539 fhEtaPhiInConeTrack->Fill(track->Eta(),track->Phi());
543 //fill histogram for UE in phi band
544 if(track->Eta() > (etaTrig-conesize) && track->Eta() < (etaTrig+conesize))
546 phiBandPtSum+=track->Pt();
547 fhPhiBandTrack->Fill(track->Eta(),track->Phi());
550 //fill histogram for UE in eta band in EMCal acceptance
551 if(track->Phi() > (phiTrig-conesize) && track->Phi() < (phiTrig+conesize))
553 etaBandPtSum+=track->Pt();
554 fhEtaBandTrack->Fill(track->Eta(),track->Phi());
557 //fill the histograms at +-45 degrees in phi from trigger particle, perpedicular to trigger axis in phi
558 Double_t dPhi = phiTrig - track->Phi() + TMath::PiOver2();
559 Double_t dEta = etaTrig - track->Eta();
560 Double_t arg = dPhi*dPhi + dEta*dEta;
561 if(TMath::Sqrt(arg) < conesize)
563 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
564 sumptPerp+=track->Pt();
567 dPhi = phiTrig - track->Phi() - TMath::PiOver2();
568 arg = dPhi*dPhi + dEta*dEta;
569 if(TMath::Sqrt(arg) < conesize)
571 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
572 sumptPerp+=track->Pt();
576 fhPerpConeSumPt ->Fill(ptTrig , sumptPerp );
577 fhConeSumPtEtaBandUETrack ->Fill(ptTrig , etaBandPtSum);
578 fhConeSumPtPhiBandUETrack ->Fill(ptTrig , phiBandPtSum);
579 fhConeSumPtEtaBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
580 fhConeSumPtPhiBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
585 //________________________________________________________________________________________________________
586 Float_t AliAnaParticleIsolation::CalculateExcessAreaFraction(const Float_t excess, const Float_t conesize)
588 // Area of a circunference segment segment 1/2 R^2 (angle-sin(angle)), angle = 2*ACos((R-excess)/R)
591 Float_t angle = 2*TMath::ACos( (conesize-excess) / conesize );
593 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
595 Float_t excessA = conesize*conesize / 2 * (angle-TMath::Sin(angle));
597 if(coneA > excessA) return coneA / (coneA-excessA);
600 printf("AliAnaParticleIsolation::CalculateExcessAreaFraction() - Please Check : Excess Track %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",
601 excess,coneA, excessA, angle*TMath::RadToDeg(), coneA / (coneA-excessA));
605 //__________________________________________________________________________________
606 void AliAnaParticleIsolation::GetCoeffNormBadCell(const AliAODPWG4ParticleCorrelation * pCandidate,
607 const AliCaloTrackReader * reader, Float_t & coneBadCellsCoeff, Float_t & etaBandBadCellsCoeff, Float_t & phiBandBadCellsCoeff, const Float_t conesize)
609 // Get good cell density (number of active cells over all cells in cone)
611 Double_t coneCells = 0.; //number of cells in cone with radius fConeSize
612 Double_t phiBandCells = 0.; //number of cells in band phi
613 Double_t etaBandCells = 0.; //number of cells in band eta
614 Float_t phiC = pCandidate->Phi() ;
615 if(phiC<0) phiC+=TMath::TwoPi();
616 Float_t etaC = pCandidate->Eta() ;
618 if(pCandidate->GetDetector()=="EMCAL")
620 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
621 AliCalorimeterUtils *cu = reader->GetCaloUtils();
624 if (eGeom->GetAbsCellIdFromEtaPhi(etaC,phiC,absId))
626 //Get absolute (col,row) of candidate
627 Int_t iEta=-1, iPhi=-1, iRCU = -1;
628 Int_t nSupMod = cu->GetModuleNumberCellIndexes(absId, pCandidate->GetDetector(), iEta, iPhi, iRCU);
631 if (nSupMod % 2) colC = AliEMCALGeoParams::fgkEMCALCols + iEta ;
632 Int_t rowC = iPhi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
634 Int_t sqrSize = int(conesize/0.0143) ; // Size of cell in radians
635 for(Int_t icol = 0; icol < 2*AliEMCALGeoParams::fgkEMCALCols-1;icol++)
637 for(Int_t irow = 0; irow < 5*AliEMCALGeoParams::fgkEMCALRows -1; irow++)
639 //loop on cells in a square of side fConeSize to check cells in cone
640 if ( GetIsolationCut()->Radius(colC, rowC, icol, irow) < sqrSize) { coneCells += 1.;}
641 else if(icol>colC-sqrSize && icol<colC+sqrSize ){ phiBandCells +=1;}
642 else if(irow>rowC-sqrSize && irow<rowC+sqrSize ){ etaBandCells +=1;}
645 Int_t cellEta = -999;
646 Int_t cellPhi = -999;
647 if(icol > AliEMCALGeoParams::fgkEMCALCols-1)
649 cellSM = 0+int(irow/AliEMCALGeoParams::fgkEMCALRows)*2;
650 cellEta = icol-AliEMCALGeoParams::fgkEMCALCols;
651 cellPhi = irow-AliEMCALGeoParams::fgkEMCALRows*int(cellSM/2);
653 if(icol < AliEMCALGeoParams::fgkEMCALCols)
655 cellSM = 1+int(irow/AliEMCALGeoParams::fgkEMCALRows)*2;
657 cellPhi = irow-AliEMCALGeoParams::fgkEMCALRows*int(cellSM/2);
660 if( (icol < 0 || icol > AliEMCALGeoParams::fgkEMCALCols*2-1 ||
661 irow < 0 || irow > AliEMCALGeoParams::fgkEMCALRows*5 - 1) //5*nRows+1/3*nRows //Count as bad "cells" out of EMCAL acceptance
662 || (cu->GetEMCALChannelStatus(cellSM,cellEta,cellPhi)==1)) //Count as bad "cells" marked as bad in the DataBase
664 if (GetIsolationCut()->Radius(colC, rowC, icol, irow) < sqrSize) coneBadCellsCoeff += 1.;
665 else if(icol>colC-sqrSize && icol<colC+sqrSize ) phiBandBadCellsCoeff +=1;
666 else if(irow>rowC-sqrSize && irow<rowC+sqrSize ) etaBandBadCellsCoeff +=1;
672 else if(GetDebug()>0) printf("cluster with bad (eta,phi) in EMCal for energy density coeff calculation\n");
676 // printf("Energy density coneBadCellsCoeff= %.2f coneCells%.2f\n", coneBadCellsCoeff,coneCells);
677 coneBadCellsCoeff = (coneCells-coneBadCellsCoeff)/coneCells;
678 // printf("coneBadCellsCoeff= %.2f\n", coneBadCellsCoeff);
680 if (phiBandCells > 0.)
682 printf("Energy density phiBandBadCellsCoeff = %.2f phiBandCells%.2f\n", phiBandBadCellsCoeff,phiBandCells);
683 phiBandBadCellsCoeff = (phiBandCells-phiBandBadCellsCoeff)/phiBandCells;
684 printf("phiBandBadCellsCoeff = %.2f\n", phiBandBadCellsCoeff);
686 if (etaBandCells > 0.)
688 printf("Energy density etaBandBadCellsCoeff = %.2f etaBandCells%.2f\n", etaBandBadCellsCoeff,etaBandCells);
689 etaBandBadCellsCoeff = (etaBandCells-etaBandBadCellsCoeff)/etaBandCells;
690 printf("etaBandBadCellsCoeff = %.2f\n",etaBandBadCellsCoeff);
697 //___________________________________________________________________________________________________________________________________
698 void AliAnaParticleIsolation::CalculateNormalizeUEBandPerUnitArea(AliAODPWG4ParticleCorrelation * pCandidate,
699 Float_t coneptsumCluster, Float_t coneptsumCell, Float_t coneptsumTrack)
701 //normalize phi/eta band per area unit
703 Float_t etaUEptsumTrack = 0 ;
704 Float_t phiUEptsumTrack = 0 ;
705 Float_t etaUEptsumCluster = 0 ;
706 Float_t phiUEptsumCluster = 0 ;
707 Float_t etaUEptsumCell = 0 ;
708 Float_t phiUEptsumCell = 0 ;
711 Int_t partTypeInCone = GetIsolationCut()->GetParticleTypeInCone();
713 // Sum the pT in the phi or eta band for clusters or tracks
715 CalculateTrackUEBand (pCandidate,etaUEptsumTrack ,phiUEptsumTrack );// rajouter ici l'histo eta phi
716 CalculateCaloUEBand (pCandidate,etaUEptsumCluster,phiUEptsumCluster);// rajouter ici l'histo eta phi
717 CalculateCaloCellUEBand(pCandidate,etaUEptsumCell ,phiUEptsumCell );
719 // Do the normalization
721 Float_t conesize = GetIsolationCut()->GetConeSize();
722 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
723 Float_t ptTrig = pCandidate->Pt() ;
724 Float_t phiTrig = pCandidate->Phi();
725 Float_t etaTrig = pCandidate->Eta();
727 Float_t coneBadCellsCoeff=1;
728 Float_t etaBandBadCellsCoeff=1;
729 Float_t phiBandBadCellsCoeff=1;
730 GetCoeffNormBadCell(pCandidate, GetReader(),coneBadCellsCoeff,etaBandBadCellsCoeff,phiBandBadCellsCoeff,conesize) ;
735 Float_t phiUEptsumTrackNorm = 0 ;
736 Float_t etaUEptsumTrackNorm = 0 ;
737 Float_t coneptsumTrackSubPhi = 0 ;
738 Float_t coneptsumTrackSubEta = 0 ;
739 Float_t coneptsumTrackSubPhiNorm = 0 ;
740 Float_t coneptsumTrackSubEtaNorm = 0 ;
742 if( partTypeInCone!=AliIsolationCut::kOnlyNeutral )
744 // Get the cut used for the TPC tracks in the reader, +-0.8, +-0.9 ...
745 // Only valid in simple fidutial cut case and if the cut is applied, careful!
746 Float_t tpcEtaSize = GetReader()->GetFiducialCut()->GetCTSFidCutMaxEtaArray()->At(0) -
747 GetReader()->GetFiducialCut()->GetCTSFidCutMinEtaArray()->At(0) ;
748 Float_t tpcPhiSize = TMath::TwoPi();
751 //printf("tracks eta fiducial acceptance %f\n",tpcEtaSize);
753 /* phiUEptsumTrackNorm = phiUEptsumTrack*(coneA*coneBadCellsCoeff / (((2*conesize*tpcPhiSize)-coneA))*phiBandBadCellsCoeff); // pi * R^2 / (2 R * 2 pi) - trigger cone
754 etaUEptsumTrackNorm = etaUEptsumTrack*(coneA*coneBadCellsCoeff / (((2*conesize*tpcEtaSize)-coneA))*etaBandBadCellsCoeff); // pi * R^2 / (2 R * 1.6) - trigger cone
756 if((2*conesize*tpcPhiSize-coneA)!=0)phiUEptsumTrackNorm = phiUEptsumTrack*(coneA / (((2*conesize*tpcPhiSize)-coneA))); // pi * R^2 / (2 R * 2 pi) - trigger cone
757 if((2*conesize*tpcEtaSize-coneA)!=0)etaUEptsumTrackNorm = etaUEptsumTrack*(coneA / (((2*conesize*tpcEtaSize)-coneA))); // pi * R^2 / (2 R * 1.6) - trigger cone
759 // Need to correct coneptsumTrack by the fraction of the cone out of track cut acceptance!
760 Float_t correctConeSumTrack = 1;
761 if(TMath::Abs(etaTrig)+conesize > tpcEtaSize/2.)
763 Float_t excess = TMath::Abs(etaTrig) + conesize - tpcEtaSize/2.;
764 correctConeSumTrack = CalculateExcessAreaFraction(excess,conesize);
765 //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);
767 // Need to correct phi band surface if part of the cone falls out of track cut acceptance! Not sure this will happen.
768 if((2*(conesize-excess)*tpcPhiSize)-(coneA-correctConeSumTrack)!=0)phiUEptsumTrackNorm = phiUEptsumTrack*(coneA / (((2*(conesize-excess)*tpcPhiSize)-(coneA/correctConeSumTrack))));
769 // phiUEptsumTrackNorm = phiUEptsumTrack*(coneA *coneBadCellsCoeff/ (((2*(conesize-excess)*tpcPhiSize)-(coneA-correctConeSumTrack))*phiBandBadCellsCoeff));
772 coneptsumTrackSubPhi = coneptsumTrack*correctConeSumTrack - phiUEptsumTrackNorm;
773 coneptsumTrackSubEta = coneptsumTrack*correctConeSumTrack - etaUEptsumTrackNorm;
775 fhConeSumPtPhiUESubTrack ->Fill(ptTrig , coneptsumTrackSubPhi);
776 fhConeSumPtPhiUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubPhi);
777 fhConeSumPtEtaUESubTrack ->Fill(ptTrig , coneptsumTrackSubEta);
778 fhConeSumPtEtaUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubEta);
780 fhFractionTrackOutConeEta ->Fill(ptTrig , correctConeSumTrack-1);
781 fhFractionTrackOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig,correctConeSumTrack-1);
783 if(coneptsumTrack!=0){
784 coneptsumTrackSubPhiNorm = coneptsumTrackSubPhi/coneptsumTrack;
785 coneptsumTrackSubEtaNorm = coneptsumTrackSubEta/coneptsumTrack;
787 fhConeSumPtSubvsConeSumPtTotPhiTrack ->Fill(coneptsumTrack,coneptsumTrackSubPhi);
788 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->Fill(coneptsumTrack,coneptsumTrackSubPhiNorm);
789 fhConeSumPtSubvsConeSumPtTotEtaTrack ->Fill(coneptsumTrack,coneptsumTrackSubEta);
790 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->Fill(coneptsumTrack,coneptsumTrackSubEtaNorm);
794 // ------------------------ //
795 // EMCal Clusters and cells //
796 // ------------------------ //
797 Float_t phiUEptsumClusterNorm = 0 ;
798 Float_t etaUEptsumClusterNorm = 0 ;
799 Float_t coneptsumClusterSubPhi = 0 ;
800 Float_t coneptsumClusterSubEta = 0 ;
801 Float_t coneptsumClusterSubPhiNorm = 0 ;
802 Float_t coneptsumClusterSubEtaNorm = 0 ;
803 Float_t phiUEptsumCellNorm = 0 ;
804 Float_t etaUEptsumCellNorm = 0 ;
805 Float_t coneptsumCellSubPhi = 0 ;
806 Float_t coneptsumCellSubEta = 0 ;
807 Float_t coneptsumCellSubPhiNorm = 0 ;
808 Float_t coneptsumCellSubEtaNorm = 0 ;
810 if( partTypeInCone!=AliIsolationCut::kOnlyCharged )
812 //Careful here if EMCal limits changed .. 2010 (4 SM) to 2011-12 (10 SM), for the moment consider 100 deg in phi
813 Float_t emcEtaSize = 0.7*2;
814 Float_t emcPhiSize = TMath::DegToRad()*100;
820 if(((((2*conesize*emcPhiSize)-coneA))*phiBandBadCellsCoeff)!=0)phiUEptsumClusterNorm = phiUEptsumCluster*(coneA*coneBadCellsCoeff / (((2*conesize*emcPhiSize)-coneA))*phiBandBadCellsCoeff); // pi * R^2 / (2 R * 2 100 deg) - trigger cone
821 if(((((2*conesize*emcEtaSize)-coneA))*etaBandBadCellsCoeff)!=0) etaUEptsumClusterNorm = etaUEptsumCluster*(coneA*coneBadCellsCoeff / (((2*conesize*emcEtaSize)-coneA))*etaBandBadCellsCoeff); // pi * R^2 / (2 R * 2*1.7) - trigger cone
823 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
824 Float_t correctConeSumClusterEta = 1;
825 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
827 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
828 correctConeSumClusterEta = CalculateExcessAreaFraction(excess,conesize);
829 //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);
831 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
832 if(((((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumClusterEta))*etaBandBadCellsCoeff))!=0)phiUEptsumClusterNorm = phiUEptsumCluster*(coneA *coneBadCellsCoeff/ (((2*(conesize-excess)*emcPhiSize)-(coneA/correctConeSumClusterEta))*etaBandBadCellsCoeff));
835 Float_t correctConeSumClusterPhi = 1;
836 //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() );
837 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
838 (phiTrig-conesize < 80*TMath::DegToRad()))
841 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
842 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
844 correctConeSumClusterPhi = CalculateExcessAreaFraction(excess,conesize);
845 //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);
847 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
848 if(((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumClusterPhi))*phiBandBadCellsCoeff!=0) etaUEptsumClusterNorm = etaUEptsumCluster*(coneA*coneBadCellsCoeff / (((2*(conesize-excess)*emcEtaSize)-(coneA/correctConeSumClusterPhi))*phiBandBadCellsCoeff));
851 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
852 coneptsumCluster=coneptsumCluster*coneBadCellsCoeff*correctConeSumClusterEta*correctConeSumClusterPhi;
853 coneptsumClusterSubPhi = coneptsumCluster - phiUEptsumClusterNorm;
854 coneptsumClusterSubEta = coneptsumCluster - etaUEptsumClusterNorm;
858 fhConeSumPtPhiUESubCluster ->Fill(ptTrig , coneptsumClusterSubPhi);
859 fhConeSumPtPhiUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubPhi);
860 fhConeSumPtEtaUESubCluster ->Fill(ptTrig , coneptsumClusterSubEta);
861 fhConeSumPtEtaUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubEta);
863 fhFractionClusterOutConeEta ->Fill(ptTrig , correctConeSumClusterEta-1);
864 fhFractionClusterOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterEta-1);
865 fhFractionClusterOutConePhi ->Fill(ptTrig , correctConeSumClusterPhi-1);
866 fhFractionClusterOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterPhi-1);
868 if(coneptsumCluster!=0){
869 coneptsumClusterSubPhiNorm = coneptsumClusterSubPhi/coneptsumCluster;
870 coneptsumClusterSubEtaNorm = coneptsumClusterSubEta/coneptsumCluster;
872 fhConeSumPtSubvsConeSumPtTotPhiCluster ->Fill(coneptsumCluster,coneptsumClusterSubPhi);
873 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->Fill(coneptsumCluster,coneptsumClusterSubPhiNorm);
874 fhConeSumPtSubvsConeSumPtTotEtaCluster ->Fill(coneptsumCluster,coneptsumClusterSubEta);
875 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->Fill(coneptsumCluster,coneptsumClusterSubEtaNorm);
881 if(((2*conesize*emcPhiSize)-coneA)!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*conesize*emcPhiSize)-coneA));
882 if((((2*conesize*emcEtaSize)-coneA))!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*conesize*emcEtaSize)-coneA));
884 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
886 Float_t correctConeSumCellEta = 1;
887 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
889 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
890 correctConeSumCellEta = CalculateExcessAreaFraction(excess,conesize);
891 //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);
892 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
893 if(((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta))!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta)));
896 Float_t correctConeSumCellPhi = 1;
897 //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() );
898 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
899 (phiTrig-conesize < 80*TMath::DegToRad()))
902 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
903 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
905 correctConeSumCellPhi = CalculateExcessAreaFraction(excess,conesize);
906 //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);
908 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
909 if(((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi))!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi)));
913 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
914 coneptsumCellSubPhi = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - phiUEptsumCellNorm;
915 coneptsumCellSubEta = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - etaUEptsumCellNorm;
917 fhConeSumPtPhiUESubCell ->Fill(ptTrig , coneptsumCellSubPhi);
918 fhConeSumPtPhiUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubPhi);
919 fhConeSumPtEtaUESubCell ->Fill(ptTrig , coneptsumCellSubEta);
920 fhConeSumPtEtaUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubEta);
922 fhFractionCellOutConeEta ->Fill(ptTrig , correctConeSumCellEta-1);
923 fhFractionCellOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellEta-1);
924 fhFractionCellOutConePhi ->Fill(ptTrig , correctConeSumCellPhi-1);
925 fhFractionCellOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellPhi-1);
926 if(coneptsumCell!=0){
927 coneptsumCellSubPhiNorm = coneptsumCellSubPhi/coneptsumCell;
928 coneptsumCellSubEtaNorm = coneptsumCellSubEta/coneptsumCell;
930 fhConeSumPtSubvsConeSumPtTotPhiCell ->Fill(coneptsumCell,coneptsumCellSubPhi);
931 fhConeSumPtSubNormvsConeSumPtTotPhiCell->Fill(coneptsumCell,coneptsumCellSubPhiNorm);
932 fhConeSumPtSubvsConeSumPtTotEtaCell ->Fill(coneptsumCell,coneptsumCellSubEta);
933 fhConeSumPtSubNormvsConeSumPtTotEtaCell->Fill(coneptsumCell,coneptsumCellSubEtaNorm);
937 if( partTypeInCone==AliIsolationCut::kNeutralAndCharged )
940 // --------------------------- //
941 // Tracks and clusters in cone //
942 // --------------------------- //
944 Double_t sumPhiUESub = coneptsumClusterSubPhi + coneptsumTrackSubPhi;
945 Double_t sumEtaUESub = coneptsumClusterSubEta + coneptsumTrackSubEta;
947 fhConeSumPtPhiUESub ->Fill(ptTrig , sumPhiUESub);
948 fhConeSumPtPhiUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESub);
949 fhConeSumPtEtaUESub ->Fill(ptTrig , sumEtaUESub);
950 fhConeSumPtEtaUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESub);
952 fhEtaBandClustervsTrack ->Fill(etaUEptsumCluster ,etaUEptsumTrack );
953 fhPhiBandClustervsTrack ->Fill(phiUEptsumCluster ,phiUEptsumTrack );
954 fhEtaBandNormClustervsTrack->Fill(etaUEptsumClusterNorm,etaUEptsumTrackNorm);
955 fhPhiBandNormClustervsTrack->Fill(phiUEptsumClusterNorm,phiUEptsumTrackNorm);
957 fhConeSumPtEtaUESubClustervsTrack->Fill(coneptsumClusterSubEta,coneptsumTrackSubEta);
958 fhConeSumPtPhiUESubClustervsTrack->Fill(coneptsumClusterSubPhi,coneptsumTrackSubPhi);
960 // ------------------------ //
961 // Tracks and cells in cone //
962 // ------------------------ //
964 Double_t sumPhiUESubTrackCell = coneptsumCellSubPhi + coneptsumTrackSubPhi;
965 Double_t sumEtaUESubTrackCell = coneptsumCellSubEta + coneptsumTrackSubEta;
967 fhConeSumPtPhiUESubTrackCell ->Fill(ptTrig , sumPhiUESubTrackCell);
968 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESubTrackCell);
969 fhConeSumPtEtaUESubTrackCell ->Fill(ptTrig , sumEtaUESubTrackCell);
970 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESubTrackCell);
972 fhEtaBandCellvsTrack ->Fill(etaUEptsumCell ,etaUEptsumTrack );
973 fhPhiBandCellvsTrack ->Fill(phiUEptsumCell ,phiUEptsumTrack );
974 fhEtaBandNormCellvsTrack->Fill(etaUEptsumCellNorm,etaUEptsumTrackNorm);
975 fhPhiBandNormCellvsTrack->Fill(phiUEptsumCellNorm,phiUEptsumTrackNorm);
977 fhConeSumPtEtaUESubCellvsTrack->Fill(coneptsumCellSubEta,coneptsumTrackSubEta);
978 fhConeSumPtPhiUESubCellvsTrack->Fill(coneptsumCellSubPhi,coneptsumTrackSubPhi);
985 //__________________________________________________________________________________________________
986 void AliAnaParticleIsolation::CalculateCaloSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
987 Float_t & coneptsumCluster)
989 // Get the cluster pT or sum of pT in isolation cone
991 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
993 //Recover reference arrays with clusters and tracks
994 TObjArray * refclusters = aodParticle->GetObjArray(GetAODObjArrayName()+"Clusters");
995 if(!refclusters) return ;
997 Float_t ptTrig = aodParticle->Pt();
999 //Get vertex for cluster momentum calculation
1000 Double_t vertex[] = {0,0,0} ; //vertex ;
1001 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
1002 GetReader()->GetVertex(vertex);
1004 TLorentzVector mom ;
1005 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
1007 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
1008 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
1010 fhPtInCone ->Fill(ptTrig, mom.Pt());
1011 fhPtClusterInCone->Fill(ptTrig, mom.Pt());
1013 if(fFillPileUpHistograms)
1015 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(ptTrig,mom.Pt());
1016 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,mom.Pt());
1017 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,mom.Pt());
1018 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,mom.Pt());
1019 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,mom.Pt());
1020 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,mom.Pt());
1021 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,mom.Pt());
1024 fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
1025 coneptsumCluster+=mom.Pt();
1028 fhConeSumPtCluster ->Fill(ptTrig, coneptsumCluster);
1031 //__________________________________________________________________________________________________
1032 void AliAnaParticleIsolation::CalculateCaloCellSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
1033 Float_t & coneptsumCell)
1035 // Get the cell amplityde or sum of amplitudes in isolation cone
1036 // Mising: Remove signal cells in cone in case the trigger is a cluster!
1038 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
1040 Float_t conesize = GetIsolationCut()->GetConeSize();
1042 Float_t ptTrig = aodParticle->Pt();
1043 Float_t phiTrig = aodParticle->Phi();
1044 if(phiTrig<0) phiTrig += TMath::TwoPi();
1045 Float_t etaTrig = aodParticle->Eta();
1047 if(aodParticle->GetDetector()=="EMCAL")
1049 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
1052 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
1054 if(!eGeom->CheckAbsCellId(absId)) return ;
1056 // Get absolute (col,row) of trigger particle
1057 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
1059 Int_t imEta=-1, imPhi=-1;
1060 Int_t ieta =-1, iphi =-1;
1062 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
1064 Int_t iEta=-1, iPhi=-1;
1065 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
1067 Int_t colTrig = iEta;
1068 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + iEta ;
1069 Int_t rowTrig = iPhi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
1071 Int_t sqrSize = int(conesize/0.0143);
1073 AliVCaloCells * cells = GetEMCALCells();
1075 // Loop on cells in cone
1076 for(Int_t irow = rowTrig-sqrSize; irow < rowTrig+sqrSize; irow++)
1078 for(Int_t icol = colTrig-sqrSize; icol < colTrig+sqrSize; icol++)
1080 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
1081 if(inSector==5) continue;
1083 Int_t inSupMod = -1;
1085 if(icol < AliEMCALGeoParams::fgkEMCALCols)
1087 inSupMod = 2*inSector + 1;
1090 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
1092 inSupMod = 2*inSector;
1093 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
1096 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
1098 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
1099 if(!eGeom->CheckAbsCellId(iabsId)) continue;
1101 fhPtCellInCone->Fill(ptTrig, cells->GetCellAmplitude(iabsId));
1102 coneptsumCell += cells->GetCellAmplitude(iabsId);
1109 fhConeSumPtCell->Fill(ptTrig,coneptsumCell);
1113 //___________________________________________________________________________________________________
1114 void AliAnaParticleIsolation::CalculateTrackSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
1115 Float_t & coneptsumTrack)
1117 // Get the track pT or sum of pT in isolation cone
1119 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
1121 //Recover reference arrays with clusters and tracks
1122 TObjArray * reftracks = aodParticle->GetObjArray(GetAODObjArrayName()+"Tracks");
1123 if(!reftracks) return ;
1125 Float_t ptTrig = aodParticle->Pt();
1126 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
1128 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1130 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1131 Float_t pTtrack = track->Pt();
1133 fhPtInCone ->Fill(ptTrig,pTtrack);
1134 fhPtTrackInCone->Fill(ptTrig,pTtrack);
1136 if(fFillPileUpHistograms)
1138 ULong_t status = track->GetStatus();
1139 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1140 //Double32_t tof = track->GetTOFsignal()*1e-3;
1141 Int_t trackBC = track->GetTOFBunchCrossing(bz);
1143 if ( okTOF && trackBC!=0 ) fhPtTrackInConeOtherBC->Fill(ptTrig,pTtrack);
1144 else if( okTOF && trackBC==0 ) fhPtTrackInConeBC0 ->Fill(ptTrig,pTtrack);
1146 Int_t vtxBC = GetReader()->GetVertexBC();
1147 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtTrackInConeVtxBC0->Fill(ptTrig,pTtrack);
1149 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(ptTrig,pTtrack);
1150 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(ptTrig,pTtrack);
1151 if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(ptTrig,pTtrack); }
1152 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,pTtrack);
1153 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,pTtrack);
1154 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,pTtrack);
1155 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,pTtrack);
1156 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,pTtrack);
1157 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,pTtrack);
1160 fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1161 coneptsumTrack+=pTtrack;
1164 fhConeSumPtTrack->Fill(ptTrig, coneptsumTrack);
1168 //_________________________________________________________________
1169 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
1171 // Fill some histograms to understand pile-up
1172 if(!fFillPileUpHistograms) return;
1176 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
1181 TObjArray* clusters = 0x0;
1182 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1183 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1186 Float_t time = -1000;
1190 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1191 energy = cluster->E();
1192 time = cluster->GetTOF()*1e9;
1195 //printf("E %f, time %f\n",energy,time);
1196 AliVEvent * event = GetReader()->GetInputEvent();
1198 fhTimeENoCut->Fill(energy,time);
1199 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
1200 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
1202 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
1204 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
1205 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
1207 // N pile up vertices
1208 Int_t nVerticesSPD = -1;
1209 Int_t nVerticesTracks = -1;
1213 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
1214 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
1219 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
1220 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
1223 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
1224 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
1226 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
1227 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
1230 Float_t z1 = -1, z2 = -1;
1232 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
1236 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
1237 ncont=pv->GetNContributors();
1238 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
1240 diamZ = esdEv->GetDiamondZ();
1244 AliAODVertex *pv=aodEv->GetVertex(iVert);
1245 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
1246 ncont=pv->GetNContributors();
1247 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
1249 diamZ = aodEv->GetDiamondZ();
1252 Double_t distZ = TMath::Abs(z2-z1);
1253 diamZ = TMath::Abs(z2-diamZ);
1255 fhTimeNPileUpVertContributors ->Fill(time,ncont);
1256 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
1257 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
1262 //_____________________________________________________________________________________________________________________
1263 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation *pCandidate,
1264 const AliCaloTrackReader * reader,
1265 const AliCaloPID * pid)
1267 // Fill Track matching and Shower Shape control histograms
1268 if(!fFillTMHisto && !fFillSSHisto) return;
1270 Int_t clusterID = pCandidate->GetCaloLabel(0) ;
1271 Int_t nMaxima = pCandidate->GetFiducialArea(); // bad name, just place holder for the moment
1272 Int_t mcTag = pCandidate->GetTag() ;
1273 Bool_t isolated = pCandidate->IsIsolated();
1277 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
1282 TObjArray* clusters = 0x0;
1283 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1284 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1288 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
1289 Float_t energy = cluster->E();
1293 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
1294 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
1298 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
1299 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
1300 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
1301 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
1302 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
1303 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
1305 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
1306 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
1310 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
1312 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
1313 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
1316 fhNLocMax[isolated]->Fill(energy,nMaxima);
1317 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
1318 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
1319 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
1323 //Analyse non-isolated events
1326 Bool_t iso = kFALSE ;
1327 Float_t coneptsum = 0 ;
1329 TObjArray * plNe = pCandidate->GetObjArray(GetAODObjArrayName()+"Clusters");
1330 TObjArray * plCTS = pCandidate->GetObjArray(GetAODObjArrayName()+"Tracks");
1332 GetIsolationCut()->SetPtThresholdMax(1.);
1333 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
1335 kFALSE, pCandidate, "",
1336 n,nfrac,coneptsum, iso);
1338 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
1340 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1343 GetIsolationCut()->SetPtThresholdMax(10000.);
1350 Float_t dZ = cluster->GetTrackDz();
1351 Float_t dR = cluster->GetTrackDx();
1353 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1355 dR = 2000., dZ = 2000.;
1356 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1359 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
1360 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
1362 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
1363 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
1364 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
1367 // Check dEdx and E/p of matched clusters
1369 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1372 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
1376 Float_t dEdx = track->GetTPCsignal();
1377 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
1379 Float_t eOverp = cluster->E()/track->P();
1380 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
1383 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
1388 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
1390 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1391 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
1392 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
1393 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
1394 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
1399 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
1400 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
1401 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
1402 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
1403 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
1412 } // clusters array available
1416 //______________________________________________________
1417 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
1419 //Save parameters used for analysis
1420 TString parList ; //this will be list of parameters used for this analysis.
1421 const Int_t buffersize = 255;
1422 char onePar[buffersize] ;
1424 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
1426 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
1428 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
1430 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
1432 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
1434 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
1439 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
1441 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
1444 for(Int_t icone = 0; icone < fNCones ; icone++)
1446 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
1449 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1451 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
1454 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1456 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
1459 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1461 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
1466 //Get parameters set in base class.
1467 parList += GetBaseParametersList() ;
1469 //Get parameters set in IC class.
1470 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
1472 return new TObjString(parList) ;
1476 //________________________________________________________
1477 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
1479 // Create histograms to be saved in output file and
1480 // store them in outputContainer
1481 TList * outputContainer = new TList() ;
1482 outputContainer->SetName("IsolatedParticleHistos") ;
1484 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
1485 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
1486 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
1487 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
1488 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
1489 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
1490 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
1491 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
1492 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
1493 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
1494 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
1495 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
1496 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
1497 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
1498 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
1500 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
1501 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
1502 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
1503 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
1504 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
1505 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
1507 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
1508 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
1509 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
1510 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
1511 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
1512 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
1514 Int_t nptsumbins = fHistoNPtSumBins;
1515 Float_t ptsummax = fHistoPtSumMax;
1516 Float_t ptsummin = fHistoPtSumMin;
1517 Int_t nptinconebins = fHistoNPtInConeBins;
1518 Float_t ptinconemax = fHistoPtInConeMax;
1519 Float_t ptinconemin = fHistoPtInConeMin;
1521 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
1522 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
1523 Float_t r = GetIsolationCut()->GetConeSize();
1525 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
1529 TString hName [] = {"NoIso",""};
1530 TString hTitle[] = {"Not isolated" ,"isolated"};
1532 fhEIso = new TH1F("hE",
1533 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1534 nptbins,ptmin,ptmax);
1535 fhEIso->SetYTitle("dN / dE");
1536 fhEIso->SetXTitle("E (GeV/c)");
1537 outputContainer->Add(fhEIso) ;
1539 fhPtIso = new TH1F("hPt",
1540 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),
1541 nptbins,ptmin,ptmax);
1542 fhPtIso->SetYTitle("dN / p_{T}");
1543 fhPtIso->SetXTitle("p_{T} (GeV/c)");
1544 outputContainer->Add(fhPtIso) ;
1546 fhPtCentralityIso = new TH2F("hPtCentrality","centrality vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,100);
1547 fhPtCentralityIso->SetYTitle("centrality");
1548 fhPtCentralityIso->SetXTitle("p_{T}(GeV/c)");
1549 outputContainer->Add(fhPtCentralityIso) ;
1551 fhPtEventPlaneIso = new TH2F("hPtEventPlane","event plane angle vs p_{T} for isolated particles",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1552 fhPtEventPlaneIso->SetYTitle("Event plane angle (rad)");
1553 fhPtEventPlaneIso->SetXTitle("p_{T} (GeV/c)");
1554 outputContainer->Add(fhPtEventPlaneIso) ;
1557 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
1558 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),
1559 nptbins,ptmin,ptmax,10,0,10);
1560 fhPtNLocMaxIso->SetYTitle("NLM");
1561 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
1562 outputContainer->Add(fhPtNLocMaxIso) ;
1564 fhPhiIso = new TH2F("hPhi",
1565 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1566 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1567 fhPhiIso->SetYTitle("#phi");
1568 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
1569 outputContainer->Add(fhPhiIso) ;
1571 fhEtaIso = new TH2F("hEta",
1572 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
1573 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1574 fhEtaIso->SetYTitle("#eta");
1575 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
1576 outputContainer->Add(fhEtaIso) ;
1578 fhEtaPhiIso = new TH2F("hEtaPhiIso",
1579 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),
1580 netabins,etamin,etamax,nphibins,phimin,phimax);
1581 fhEtaPhiIso->SetXTitle("#eta");
1582 fhEtaPhiIso->SetYTitle("#phi");
1583 outputContainer->Add(fhEtaPhiIso) ;
1585 fhPtDecayIso = new TH1F("hPtDecayIso",
1586 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),
1587 nptbins,ptmin,ptmax);
1588 fhPtDecayIso->SetYTitle("N");
1589 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
1590 outputContainer->Add(fhPtDecayIso) ;
1592 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
1593 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),
1594 netabins,etamin,etamax,nphibins,phimin,phimax);
1595 fhEtaPhiDecayIso->SetXTitle("#eta");
1596 fhEtaPhiDecayIso->SetYTitle("#phi");
1597 outputContainer->Add(fhEtaPhiDecayIso) ;
1599 fhConeSumPt = new TH2F("hConePtSum",
1600 Form("Track and Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1601 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1602 fhConeSumPt->SetYTitle("#Sigma p_{T}");
1603 fhConeSumPt->SetXTitle("p_{T, trigger} (GeV/c)");
1604 outputContainer->Add(fhConeSumPt) ;
1606 fhConeSumPtTrigEtaPhi = new TH2F("hConePtSumTrigEtaPhi",
1607 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
1608 netabins,etamin,etamax,nphibins,phimin,phimax);
1609 fhConeSumPtTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1610 fhConeSumPtTrigEtaPhi->SetXTitle("#eta_{trigger}");
1611 fhConeSumPtTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1612 outputContainer->Add(fhConeSumPtTrigEtaPhi) ;
1614 fhPtInCone = new TH2F("hPtInCone",
1615 Form("p_{T} of clusters and tracks in isolation cone for R = %2.2f",r),
1616 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1617 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
1618 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
1619 outputContainer->Add(fhPtInCone) ;
1621 fhPtInConeCent = new TH2F("hPtInConeCent",
1622 Form("p_{T} in isolation cone for R = %2.2f",r),
1623 100,0,100,nptinconebins,ptinconemin,ptinconemax);
1624 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
1625 fhPtInConeCent->SetXTitle("centrality");
1626 outputContainer->Add(fhPtInConeCent) ;
1628 // Cluster only histograms
1629 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyCharged)
1631 fhConeSumPtCluster = new TH2F("hConePtSumCluster",
1632 Form("Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
1633 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1634 fhConeSumPtCluster->SetYTitle("#Sigma p_{T}");
1635 fhConeSumPtCluster->SetXTitle("p_{T, trigger} (GeV/c)");
1636 outputContainer->Add(fhConeSumPtCluster) ;
1638 fhConeSumPtCell = new TH2F("hConePtSumCell",
1639 Form("Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
1640 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1641 fhConeSumPtCell->SetYTitle("#Sigma p_{T}");
1642 fhConeSumPtCell->SetXTitle("p_{T, trigger} (GeV/c)");
1643 outputContainer->Add(fhConeSumPtCell) ;
1645 fhConeSumPtEtaBandUECluster = new TH2F("hConePtSumEtaBandUECluster",
1646 "#Sigma cluster p_{T} in UE Eta Band",
1647 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1648 fhConeSumPtEtaBandUECluster->SetYTitle("#Sigma p_{T}");
1649 fhConeSumPtEtaBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1650 outputContainer->Add(fhConeSumPtEtaBandUECluster) ;
1652 fhConeSumPtPhiBandUECluster = new TH2F("hConePtSumPhiBandUECluster",
1653 "#Sigma cluster p_{T} UE Phi Band",
1654 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1655 fhConeSumPtPhiBandUECluster->SetYTitle("#Sigma p_{T}");
1656 fhConeSumPtPhiBandUECluster->SetXTitle("p_{T, trigger} (GeV/c)");
1657 outputContainer->Add(fhConeSumPtPhiBandUECluster) ;
1659 fhConeSumPtEtaBandUEClusterTrigEtaPhi = new TH2F("hConePtSumEtaBandUEClusterTrigEtaPhi",
1660 "Trigger #eta vs #phi, #Sigma cluster p_{T} in UE Eta Band",
1661 netabins,etamin,etamax,nphibins,phimin,phimax);
1662 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1663 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1664 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1665 outputContainer->Add(fhConeSumPtEtaBandUEClusterTrigEtaPhi) ;
1667 fhConeSumPtPhiBandUEClusterTrigEtaPhi = new TH2F("hConePtSumPhiBandUEClusterTrigEtaPhi",
1668 "Trigger #eta vs #phi, #Sigma cluster p_{T} UE Phi Band",
1669 netabins,etamin,etamax,nphibins,phimin,phimax);
1670 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1671 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1672 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1673 outputContainer->Add(fhConeSumPtPhiBandUEClusterTrigEtaPhi) ;
1676 fhConeSumPtEtaBandUECell = new TH2F("hConePtSumEtaBandUECell",
1677 "#Sigma cell p_{T} in UE Eta Band",
1678 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1679 fhConeSumPtEtaBandUECell->SetYTitle("#Sigma p_{T}");
1680 fhConeSumPtEtaBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1681 outputContainer->Add(fhConeSumPtEtaBandUECell) ;
1683 fhConeSumPtPhiBandUECell = new TH2F("hConePtSumPhiBandUECell",
1684 "#Sigma cell p_{T} UE Phi Band",
1685 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1686 fhConeSumPtPhiBandUECell->SetYTitle("#Sigma p_{T}");
1687 fhConeSumPtPhiBandUECell->SetXTitle("p_{T, trigger} (GeV/c)");
1688 outputContainer->Add(fhConeSumPtPhiBandUECell) ;
1690 fhConeSumPtEtaBandUECellTrigEtaPhi = new TH2F("hConePtSumEtaBandUECellTrigEtaPhi",
1691 "Trigger #eta vs #phi, #Sigma cell p_{T} in UE Eta Band",
1692 netabins,etamin,etamax,nphibins,phimin,phimax);
1693 fhConeSumPtEtaBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1694 fhConeSumPtEtaBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1695 fhConeSumPtEtaBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1696 outputContainer->Add(fhConeSumPtEtaBandUECellTrigEtaPhi) ;
1698 fhConeSumPtPhiBandUECellTrigEtaPhi = new TH2F("hConePtSumPhiBandUECellTrigEtaPhi",
1699 "Trigger #eta vs #phi, #Sigma cell p_{T} UE Phi Band",
1700 netabins,etamin,etamax,nphibins,phimin,phimax);
1701 fhConeSumPtPhiBandUECellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1702 fhConeSumPtPhiBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1703 fhConeSumPtPhiBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1704 outputContainer->Add(fhConeSumPtPhiBandUECellTrigEtaPhi) ;
1707 fhPtClusterInCone = new TH2F("hPtClusterInCone",
1708 Form("p_{T} of clusters in isolation cone for R = %2.2f",r),
1709 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1710 fhPtClusterInCone->SetYTitle("p_{T in cone} (GeV/c)");
1711 fhPtClusterInCone->SetXTitle("p_{T} (GeV/c)");
1712 outputContainer->Add(fhPtClusterInCone) ;
1714 fhEtaBandCluster = new TH2F("hEtaBandCluster",
1715 Form("#eta vs #phi of clusters in #eta band isolation cone for R = %2.2f",r),
1716 netabins,-1,1,nphibins,0,TMath::TwoPi());
1717 fhEtaBandCluster->SetXTitle("#eta");
1718 fhEtaBandCluster->SetYTitle("#phi");
1719 outputContainer->Add(fhEtaBandCluster) ;
1721 fhPhiBandCluster = new TH2F("hPhiBandCluster",
1722 Form("#eta vs #phi of clusters in #phi band isolation cone for R = %2.2f",r),
1723 netabins,-1,1,nphibins,0,TMath::TwoPi());
1724 fhPhiBandCluster->SetXTitle("#eta");
1725 fhPhiBandCluster->SetYTitle("#phi");
1726 outputContainer->Add(fhPhiBandCluster) ;
1728 fhEtaPhiInConeCluster= new TH2F("hEtaPhiInConeCluster",
1729 Form("#eta vs #phi of clusters in cone for R = %2.2f",r),
1730 netabins,-1,1,nphibins,0,TMath::TwoPi());
1731 fhEtaPhiInConeCluster->SetXTitle("#eta");
1732 fhEtaPhiInConeCluster->SetYTitle("#phi");
1733 outputContainer->Add(fhEtaPhiInConeCluster) ;
1735 fhEtaPhiCluster= new TH2F("hEtaPhiCluster",
1736 Form("#eta vs #phi of all clusters"),
1737 netabins,-1,1,nphibins,0,TMath::TwoPi());
1738 fhEtaPhiCluster->SetXTitle("#eta");
1739 fhEtaPhiCluster->SetYTitle("#phi");
1740 outputContainer->Add(fhEtaPhiCluster) ;
1742 fhEtaPhiInConeTrack= new TH2F("hEtaPhiInConeTrack",
1743 Form("#eta vs #phi of Tracks in cone for R = %2.2f",r),
1744 netabins,-1,1,nphibins,0,TMath::TwoPi());
1745 fhEtaPhiInConeTrack->SetXTitle("#eta");
1746 fhEtaPhiInConeTrack->SetYTitle("#phi");
1747 outputContainer->Add(fhEtaPhiInConeTrack) ;
1749 fhEtaPhiTrack= new TH2F("hEtaPhiTrack",
1750 Form("#eta vs #phi of all Tracks"),
1751 netabins,-1,1,nphibins,0,TMath::TwoPi());
1752 fhEtaPhiTrack->SetXTitle("#eta");
1753 fhEtaPhiTrack->SetYTitle("#phi");
1754 outputContainer->Add(fhEtaPhiTrack) ;
1756 fhPtCellInCone = new TH2F("hPtCellInCone",
1757 Form("p_{T} of cells in isolation cone for R = %2.2f",r),
1758 nptbins,ptmin,ptmax,1000,0,50);
1759 fhPtCellInCone->SetYTitle("p_{T in cone} (GeV/c)");
1760 fhPtCellInCone->SetXTitle("p_{T} (GeV/c)");
1761 outputContainer->Add(fhPtCellInCone) ;
1763 fhEtaBandCell = new TH2F("hEtaBandCell",
1764 Form("#col vs #row of cells in #eta band isolation cone for R = %2.2f",r),
1766 fhEtaBandCell->SetXTitle("#col");
1767 fhEtaBandCell->SetYTitle("#row");
1768 outputContainer->Add(fhEtaBandCell) ;
1770 fhPhiBandCell = new TH2F("hPhiBandCell",
1771 Form("#col vs #row of cells in #phi band isolation cone for R = %2.2f",r),
1773 fhPhiBandCell->SetXTitle("#col");
1774 fhPhiBandCell->SetYTitle("#row");
1775 outputContainer->Add(fhPhiBandCell) ;
1777 fhConeSumPtEtaUESubCluster = new TH2F("hConeSumPtEtaUESubCluster",
1778 Form("Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1779 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1780 fhConeSumPtEtaUESubCluster->SetYTitle("#Sigma p_{T}");
1781 fhConeSumPtEtaUESubCluster->SetXTitle("p_{T} (GeV/c)");
1782 outputContainer->Add(fhConeSumPtEtaUESubCluster) ;
1784 fhConeSumPtPhiUESubCluster = new TH2F("hConeSumPtPhiUESubCluster",
1785 Form("Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1786 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1787 fhConeSumPtPhiUESubCluster->SetYTitle("#Sigma p_{T}");
1788 fhConeSumPtPhiUESubCluster->SetXTitle("p_{T} (GeV/c)");
1789 outputContainer->Add(fhConeSumPtPhiUESubCluster) ;
1791 fhConeSumPtEtaUESubClusterTrigEtaPhi = new TH2F("hConeSumPtEtaUESubClusterTrigEtaPhi",
1792 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1793 netabins,etamin,etamax,nphibins,phimin,phimax);
1794 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1795 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1796 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1797 outputContainer->Add(fhConeSumPtEtaUESubClusterTrigEtaPhi) ;
1799 fhConeSumPtPhiUESubClusterTrigEtaPhi = new TH2F("hConeSumPtPhiUESubClusterTrigEtaPhi",
1800 Form("Trigger #eta vs #phi, Clusters #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1801 netabins,etamin,etamax,nphibins,phimin,phimax);
1802 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1803 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1804 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1805 outputContainer->Add(fhConeSumPtPhiUESubClusterTrigEtaPhi) ;
1808 fhConeSumPtEtaUESubCell = new TH2F("hConeSumPtEtaUESubCell",
1809 Form("Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1810 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1811 fhConeSumPtEtaUESubCell->SetYTitle("#Sigma p_{T}");
1812 fhConeSumPtEtaUESubCell->SetXTitle("p_{T} (GeV/c)");
1813 outputContainer->Add(fhConeSumPtEtaUESubCell) ;
1815 fhConeSumPtPhiUESubCell = new TH2F("hConeSumPtPhiUESubCell",
1816 Form("Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1817 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1818 fhConeSumPtPhiUESubCell->SetYTitle("#Sigma p_{T}");
1819 fhConeSumPtPhiUESubCell->SetXTitle("p_{T} (GeV/c)");
1820 outputContainer->Add(fhConeSumPtPhiUESubCell) ;
1822 fhConeSumPtEtaUESubCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubCellTrigEtaPhi",
1823 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
1824 netabins,etamin,etamax,nphibins,phimin,phimax);
1825 fhConeSumPtEtaUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1826 fhConeSumPtEtaUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1827 fhConeSumPtEtaUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1828 outputContainer->Add(fhConeSumPtEtaUESubCellTrigEtaPhi) ;
1830 fhConeSumPtPhiUESubCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubCellTrigEtaPhi",
1831 Form("Trigger #eta vs #phi, Cells #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
1832 netabins,etamin,etamax,nphibins,phimin,phimax);
1833 fhConeSumPtPhiUESubCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1834 fhConeSumPtPhiUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1835 fhConeSumPtPhiUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1836 outputContainer->Add(fhConeSumPtPhiUESubCellTrigEtaPhi) ;
1839 fhFractionClusterOutConeEta = new TH2F("hFractionClusterOutConeEta",
1840 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance",r),
1841 nptbins,ptmin,ptmax,100,0,1);
1842 fhFractionClusterOutConeEta->SetYTitle("fraction");
1843 fhFractionClusterOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1844 outputContainer->Add(fhFractionClusterOutConeEta) ;
1846 fhFractionClusterOutConeEtaTrigEtaPhi = new TH2F("hFractionClusterOutConeEtaTrigEtaPhi",
1847 Form("Fraction of the isolation cone R = %2.2f, out of clusters #eta acceptance, in trigger #eta-#phi ",r),
1848 netabins,etamin,etamax,nphibins,phimin,phimax);
1849 fhFractionClusterOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1850 fhFractionClusterOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1851 fhFractionClusterOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1852 outputContainer->Add(fhFractionClusterOutConeEtaTrigEtaPhi) ;
1854 fhFractionClusterOutConePhi = new TH2F("hFractionClusterOutConePhi",
1855 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance",r),
1856 nptbins,ptmin,ptmax,100,0,1);
1857 fhFractionClusterOutConePhi->SetYTitle("fraction");
1858 fhFractionClusterOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1859 outputContainer->Add(fhFractionClusterOutConePhi) ;
1861 fhFractionClusterOutConePhiTrigEtaPhi = new TH2F("hFractionClusterOutConePhiTrigEtaPhi",
1862 Form("Fraction of the isolation cone R = %2.2f, out of clusters #phi acceptance, in trigger #eta-#phi ",r),
1863 netabins,etamin,etamax,nphibins,phimin,phimax);
1864 fhFractionClusterOutConePhiTrigEtaPhi->SetZTitle("fraction");
1865 fhFractionClusterOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1866 fhFractionClusterOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1867 outputContainer->Add(fhFractionClusterOutConePhiTrigEtaPhi) ;
1869 fhConeSumPtSubvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCluster",
1870 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),
1871 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1872 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1873 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1874 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCluster);
1876 fhConeSumPtSubNormvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCluster",
1877 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),
1878 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1879 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1880 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1881 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCluster);
1883 fhConeSumPtSubvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCluster",
1884 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),
1885 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1886 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1887 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1888 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCluster);
1890 fhConeSumPtSubNormvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCluster",
1891 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),
1892 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1893 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1894 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1895 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCluster);
1898 fhFractionCellOutConeEta = new TH2F("hFractionCellOutConeEta",
1899 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance",r),
1900 nptbins,ptmin,ptmax,100,0,1);
1901 fhFractionCellOutConeEta->SetYTitle("fraction");
1902 fhFractionCellOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
1903 outputContainer->Add(fhFractionCellOutConeEta) ;
1905 fhFractionCellOutConeEtaTrigEtaPhi = new TH2F("hFractionCellOutConeEtaTrigEtaPhi",
1906 Form("Fraction of the isolation cone R = %2.2f, out of cells #eta acceptance, in trigger #eta-#phi ",r),
1907 netabins,etamin,etamax,nphibins,phimin,phimax);
1908 fhFractionCellOutConeEtaTrigEtaPhi->SetZTitle("fraction");
1909 fhFractionCellOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1910 fhFractionCellOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1911 outputContainer->Add(fhFractionCellOutConeEtaTrigEtaPhi) ;
1913 fhFractionCellOutConePhi = new TH2F("hFractionCellOutConePhi",
1914 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance",r),
1915 nptbins,ptmin,ptmax,100,0,1);
1916 fhFractionCellOutConePhi->SetYTitle("fraction");
1917 fhFractionCellOutConePhi->SetXTitle("p_{T,trigger} (GeV/c)");
1918 outputContainer->Add(fhFractionCellOutConePhi) ;
1920 fhFractionCellOutConePhiTrigEtaPhi = new TH2F("hFractionCellOutConePhiTrigEtaPhi",
1921 Form("Fraction of the isolation cone R = %2.2f, out of cells #phi acceptance, in trigger #eta-#phi ",r),
1922 netabins,etamin,etamax,nphibins,phimin,phimax);
1923 fhFractionCellOutConePhiTrigEtaPhi->SetZTitle("fraction");
1924 fhFractionCellOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1925 fhFractionCellOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1926 outputContainer->Add(fhFractionCellOutConePhiTrigEtaPhi) ;
1929 fhConeSumPtSubvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCell",
1930 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),
1931 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1932 fhConeSumPtSubvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1933 fhConeSumPtSubvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1934 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCell);
1936 fhConeSumPtSubNormvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCell",
1937 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),
1938 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1939 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1940 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1941 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCell);
1943 fhConeSumPtSubvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCell",
1944 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),
1945 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1946 fhConeSumPtSubvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1947 fhConeSumPtSubvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
1948 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCell);
1950 fhConeSumPtSubNormvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCell",
1951 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),
1952 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1953 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
1954 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
1955 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCell);
1959 // Track only histograms
1960 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
1962 fhConeSumPtTrack = new TH2F("hConePtSumTrack",
1963 Form("Track #Sigma p_{T} in isolation cone for R = %2.2f",r),
1964 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1965 fhConeSumPtTrack->SetYTitle("#Sigma p_{T}");
1966 fhConeSumPtTrack->SetXTitle("p_{T, trigger} (GeV/c)");
1967 outputContainer->Add(fhConeSumPtTrack) ;
1970 fhConeSumPtEtaBandUETrack = new TH2F("hConePtSumEtaBandUETrack",
1971 "#Sigma track p_{T} in UE Eta Band",
1972 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1973 fhConeSumPtEtaBandUETrack->SetYTitle("#Sigma p_{T}");
1974 fhConeSumPtEtaBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1975 outputContainer->Add(fhConeSumPtEtaBandUETrack) ;
1977 fhConeSumPtPhiBandUETrack = new TH2F("hConePtSumPhiBandUETrack",
1978 "#Sigma track p_{T} in UE Phi Band",
1979 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax*8);
1980 fhConeSumPtPhiBandUETrack->SetYTitle("#Sigma p_{T}");
1981 fhConeSumPtPhiBandUETrack->SetXTitle("p_{T, trigger} (GeV/c)");
1982 outputContainer->Add(fhConeSumPtPhiBandUETrack) ;
1985 fhConeSumPtEtaBandUETrackTrigEtaPhi = new TH2F("hConePtSumEtaBandUETrackTrigEtaPhi",
1986 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Eta Band",
1987 netabins,etamin,etamax,nphibins,phimin,phimax);
1988 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1989 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1990 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1991 outputContainer->Add(fhConeSumPtEtaBandUETrackTrigEtaPhi) ;
1993 fhConeSumPtPhiBandUETrackTrigEtaPhi = new TH2F("hConePtSumPhiBandUETrackTrigEtaPhi",
1994 "Trigger #eta vs #phi, #Sigma track p_{T} in UE Phi Band",
1995 netabins,etamin,etamax,nphibins,phimin,phimax);
1996 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
1997 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
1998 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1999 outputContainer->Add(fhConeSumPtPhiBandUETrackTrigEtaPhi) ;
2002 fhPtTrackInCone = new TH2F("hPtTrackInCone",
2003 Form("p_{T} of tracks in isolation cone for R = %2.2f",r),
2004 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2005 fhPtTrackInCone->SetYTitle("p_{T in cone} (GeV/c)");
2006 fhPtTrackInCone->SetXTitle("p_{T} (GeV/c)");
2007 outputContainer->Add(fhPtTrackInCone) ;
2010 fhEtaBandTrack = new TH2F("hEtaBandTrack",
2011 Form("#eta vs #phi of tracks in #eta band isolation cone for R = %2.2f",r),
2012 netabins,-1,1,nphibins,0,TMath::TwoPi());
2013 fhEtaBandTrack->SetXTitle("#eta");
2014 fhEtaBandTrack->SetYTitle("#phi");
2015 outputContainer->Add(fhEtaBandTrack) ;
2017 fhPhiBandTrack = new TH2F("hPhiBandTrack",
2018 Form("#eta vs #phi of tracks in #phi band isolation cone for R = %2.2f",r),
2019 netabins,-1,1,nphibins,0,TMath::TwoPi());
2020 fhPhiBandTrack->SetXTitle("#eta");
2021 fhPhiBandTrack->SetYTitle("#phi");
2022 outputContainer->Add(fhPhiBandTrack) ;
2025 fhConeSumPtEtaUESubTrack = new TH2F("hConeSumPtEtaUESubTrack",
2026 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2027 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2028 fhConeSumPtEtaUESubTrack->SetYTitle("#Sigma p_{T}");
2029 fhConeSumPtEtaUESubTrack->SetXTitle("p_{T} (GeV/c)");
2030 outputContainer->Add(fhConeSumPtEtaUESubTrack) ;
2032 fhConeSumPtPhiUESubTrack = new TH2F("hConeSumPtPhiUESubTrack",
2033 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2034 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2035 fhConeSumPtPhiUESubTrack->SetYTitle("#Sigma p_{T}");
2036 fhConeSumPtPhiUESubTrack->SetXTitle("p_{T} (GeV/c)");
2037 outputContainer->Add(fhConeSumPtPhiUESubTrack) ;
2039 fhConeSumPtEtaUESubTrackTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackTrigEtaPhi",
2040 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2041 netabins,etamin,etamax,nphibins,phimin,phimax);
2042 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2043 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2044 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2045 outputContainer->Add(fhConeSumPtEtaUESubTrackTrigEtaPhi) ;
2047 fhConeSumPtPhiUESubTrackTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackTrigEtaPhi",
2048 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2049 netabins,etamin,etamax,nphibins,phimin,phimax);
2050 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2051 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2052 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2053 outputContainer->Add(fhConeSumPtPhiUESubTrackTrigEtaPhi) ;
2055 fhFractionTrackOutConeEta = new TH2F("hFractionTrackOutConeEta",
2056 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance",r),
2057 nptbins,ptmin,ptmax,100,0,1);
2058 fhFractionTrackOutConeEta->SetYTitle("fraction");
2059 fhFractionTrackOutConeEta->SetXTitle("p_{T,trigger} (GeV/c)");
2060 outputContainer->Add(fhFractionTrackOutConeEta) ;
2062 fhFractionTrackOutConeEtaTrigEtaPhi = new TH2F("hFractionTrackOutConeEtaTrigEtaPhi",
2063 Form("Fraction of the isolation cone R = %2.2f, out of tracks #eta acceptance, in trigger #eta-#phi ",r),
2064 netabins,etamin,etamax,nphibins,phimin,phimax);
2065 fhFractionTrackOutConeEtaTrigEtaPhi->SetZTitle("fraction");
2066 fhFractionTrackOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
2067 fhFractionTrackOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2068 outputContainer->Add(fhFractionTrackOutConeEtaTrigEtaPhi) ;
2070 fhConeSumPtSubvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubvsConeSumPtTotPhiTrack",
2071 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),
2072 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2073 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
2074 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
2075 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiTrack);
2077 fhConeSumPtSubNormvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiTrack",
2078 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),
2079 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2080 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
2081 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
2082 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiTrack);
2084 fhConeSumPtSubvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubvsConeSumPtTotEtaTrack",
2085 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),
2086 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2087 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
2088 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub} (GeV/c)");
2089 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaTrack);
2091 fhConeSumPtSubNormvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaTrack",
2092 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),
2093 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2094 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetXTitle("#Sigma p_{T, tot} (GeV/c)");
2095 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetYTitle("#Sigma p_{T, sub norm} (GeV/c)");
2096 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaTrack);
2098 // UE in perpendicular cone
2099 fhPerpConeSumPt = new TH2F("hPerpConePtSum",
2100 Form("#Sigma p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
2101 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2102 fhPerpConeSumPt->SetYTitle("#Sigma p_{T}");
2103 fhPerpConeSumPt->SetXTitle("p_{T} (GeV/c)");
2104 outputContainer->Add(fhPerpConeSumPt) ;
2106 fhPtInPerpCone = new TH2F("hPtInPerpCone",
2107 Form("p_{T} in isolation cone at #pm 45 degree phi from trigger particle, R = %2.2f",r),
2108 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2109 fhPtInPerpCone->SetYTitle("p_{T in cone} (GeV/c)");
2110 fhPtInPerpCone->SetXTitle("p_{T} (GeV/c)");
2111 outputContainer->Add(fhPtInPerpCone) ;
2114 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
2116 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
2117 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2118 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2119 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
2120 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
2121 outputContainer->Add(fhConeSumPtEtaUESub) ;
2123 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
2124 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2125 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2126 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
2127 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
2128 outputContainer->Add(fhConeSumPtPhiUESub) ;
2130 fhConeSumPtEtaUESubTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrigEtaPhi",
2131 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2132 netabins,etamin,etamax,nphibins,phimin,phimax);
2133 fhConeSumPtEtaUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2134 fhConeSumPtEtaUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
2135 fhConeSumPtEtaUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2136 outputContainer->Add(fhConeSumPtEtaUESubTrigEtaPhi) ;
2138 fhConeSumPtPhiUESubTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrigEtaPhi",
2139 Form("Trigger #eta vs #phi, #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2140 netabins,etamin,etamax,nphibins,phimin,phimax);
2141 fhConeSumPtPhiUESubTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2142 fhConeSumPtPhiUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
2143 fhConeSumPtPhiUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2144 outputContainer->Add(fhConeSumPtPhiUESubTrigEtaPhi) ;
2146 fhConeSumPtClustervsTrack = new TH2F("hConePtSumClustervsTrack",
2147 Form("Track vs Cluster #Sigma p_{T} in isolation cone for R = %2.2f",r),
2148 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2149 fhConeSumPtClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2150 fhConeSumPtClustervsTrack->SetYTitle("#Sigma p_{T} track");
2151 outputContainer->Add(fhConeSumPtClustervsTrack) ;
2153 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2154 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2155 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2156 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2157 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2158 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2160 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2161 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2162 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2163 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2164 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2165 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2167 fhEtaBandClustervsTrack = new TH2F("hEtaBandClustervsTrack",
2168 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2169 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2170 fhEtaBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2171 fhEtaBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
2172 outputContainer->Add(fhEtaBandClustervsTrack) ;
2174 fhPhiBandClustervsTrack = new TH2F("hPhiBandClustervsTrack",
2175 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2176 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2177 fhPhiBandClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2178 fhPhiBandClustervsTrack->SetYTitle("#Sigma p_{T} track");
2179 outputContainer->Add(fhPhiBandClustervsTrack) ;
2181 fhEtaBandNormClustervsTrack = new TH2F("hEtaBandNormClustervsTrack",
2182 "Track vs Cluster #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2183 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2184 fhEtaBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2185 fhEtaBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
2186 outputContainer->Add(fhEtaBandNormClustervsTrack) ;
2188 fhPhiBandNormClustervsTrack = new TH2F("hPhiBandNormClustervsTrack",
2189 "Track vs Cluster #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2190 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2191 fhPhiBandNormClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2192 fhPhiBandNormClustervsTrack->SetYTitle("#Sigma p_{T} track");
2193 outputContainer->Add(fhPhiBandNormClustervsTrack) ;
2196 fhConeSumPtCellTrack = new TH2F("hConePtSumCellTrack",
2197 Form("Track and Cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
2198 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2199 fhConeSumPtCellTrack->SetYTitle("#Sigma p_{T}");
2200 fhConeSumPtCellTrack->SetXTitle("p_{T, trigger} (GeV/c)");
2201 outputContainer->Add(fhConeSumPtCellTrack) ;
2203 fhConeSumPtCellTrackTrigEtaPhi = new TH2F("hConePtSumCellTrackTrigEtaPhi",
2204 Form("Trigger #eta vs #phi, #Sigma p_{T} in isolation cone for R = %2.2f",r),
2205 netabins,etamin,etamax,nphibins,phimin,phimax);
2206 fhConeSumPtCellTrackTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2207 fhConeSumPtCellTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2208 fhConeSumPtCellTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2209 outputContainer->Add(fhConeSumPtCellTrackTrigEtaPhi) ;
2212 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2213 Form("Track vs Cluster #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2214 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2215 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2216 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2217 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2219 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2220 Form("Track vs Cluster #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2221 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2222 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma p_{T} cluster");
2223 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma p_{T} track");
2224 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2226 fhConeSumPtCellvsTrack = new TH2F("hConePtSumCellvsTrack",
2227 Form("Track vs cell #Sigma p_{T} in isolation cone for R = %2.2f",r),
2228 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2229 fhConeSumPtCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2230 fhConeSumPtCellvsTrack->SetYTitle("#Sigma p_{T} track");
2231 outputContainer->Add(fhConeSumPtCellvsTrack) ;
2233 fhConeSumPtEtaUESubCellvsTrack = new TH2F("hConePtSumEtaUESubCellvsTrack",
2234 Form("Track vs Cell #Sigma p_{T} UE sub eta band in isolation cone for R = %2.2f",r),
2235 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2236 fhConeSumPtEtaUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2237 fhConeSumPtEtaUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
2238 outputContainer->Add(fhConeSumPtEtaUESubCellvsTrack) ;
2240 fhConeSumPtPhiUESubCellvsTrack = new TH2F("hConePhiUESubPtSumCellvsTrack",
2241 Form("Track vs Cell #Sigma p_{T} UE sub phi band in isolation cone for R = %2.2f",r),
2242 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2243 fhConeSumPtPhiUESubCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2244 fhConeSumPtPhiUESubCellvsTrack->SetYTitle("#Sigma p_{T} track");
2245 outputContainer->Add(fhConeSumPtPhiUESubCellvsTrack) ;
2247 fhEtaBandCellvsTrack = new TH2F("hEtaBandCellvsTrack",
2248 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2249 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2250 fhEtaBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2251 fhEtaBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
2252 outputContainer->Add(fhEtaBandCellvsTrack) ;
2254 fhPhiBandCellvsTrack = new TH2F("hPhiBandCellvsTrack",
2255 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2256 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2257 fhPhiBandCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2258 fhPhiBandCellvsTrack->SetYTitle("#Sigma p_{T} track");
2259 outputContainer->Add(fhPhiBandCellvsTrack) ;
2261 fhEtaBandNormCellvsTrack = new TH2F("hEtaBandNormCellvsTrack",
2262 "Track vs Cell #Sigma p_{T} in Eta band in isolation cone for R = %2.2f",
2263 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2264 fhEtaBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2265 fhEtaBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
2266 outputContainer->Add(fhEtaBandNormCellvsTrack) ;
2268 fhPhiBandNormCellvsTrack = new TH2F("hPhiBandNormCellvsTrack",
2269 "Track vs Cell #Sigma p_{T} in Phi band in isolation cone for R = %2.2f",
2270 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2271 fhPhiBandNormCellvsTrack->SetXTitle("#Sigma p_{T} cell");
2272 fhPhiBandNormCellvsTrack->SetYTitle("#Sigma p_{T} track");
2273 outputContainer->Add(fhPhiBandNormCellvsTrack) ;
2275 fhConeSumPtEtaUESubTrackCell = new TH2F("hConeSumPtEtaUESubTrackCell",
2276 Form("Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2277 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2278 fhConeSumPtEtaUESubTrackCell->SetYTitle("#Sigma p_{T}");
2279 fhConeSumPtEtaUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
2280 outputContainer->Add(fhConeSumPtEtaUESubTrackCell) ;
2282 fhConeSumPtPhiUESubTrackCell = new TH2F("hConeSumPtPhiUESubTrackCell",
2283 Form("Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2284 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2285 fhConeSumPtPhiUESubTrackCell->SetYTitle("#Sigma p_{T}");
2286 fhConeSumPtPhiUESubTrackCell->SetXTitle("p_{T} (GeV/c)");
2287 outputContainer->Add(fhConeSumPtPhiUESubTrackCell) ;
2289 fhConeSumPtEtaUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackCellTrigEtaPhi",
2290 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
2291 netabins,etamin,etamax,nphibins,phimin,phimax);
2292 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2293 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2294 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2295 outputContainer->Add(fhConeSumPtEtaUESubTrackCellTrigEtaPhi) ;
2297 fhConeSumPtPhiUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackCellTrigEtaPhi",
2298 Form("Trigger #eta vs #phi, Tracks #Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
2299 netabins,etamin,etamax,nphibins,phimin,phimax);
2300 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma p_{T}");
2301 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2302 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2303 outputContainer->Add(fhConeSumPtPhiUESubTrackCellTrigEtaPhi) ;
2309 fhELambda0SSBkg = new TH2F
2310 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2311 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
2312 fhELambda0SSBkg->SetXTitle("E (GeV)");
2313 outputContainer->Add(fhELambda0SSBkg) ;
2316 for(Int_t iso = 0; iso < 2; iso++)
2320 fhTrackMatchedDEta[iso] = new TH2F
2321 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
2322 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),
2323 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
2324 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
2325 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
2327 fhTrackMatchedDPhi[iso] = new TH2F
2328 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
2329 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),
2330 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
2331 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
2332 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
2334 fhTrackMatchedDEtaDPhi[iso] = new TH2F
2335 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
2336 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),
2337 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
2338 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
2339 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
2341 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
2342 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
2343 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
2345 fhdEdx[iso] = new TH2F
2346 (Form("hdEdx%s",hName[iso].Data()),
2347 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),
2348 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
2349 fhdEdx[iso]->SetXTitle("E (GeV)");
2350 fhdEdx[iso]->SetYTitle("<dE/dx>");
2351 outputContainer->Add(fhdEdx[iso]);
2353 fhEOverP[iso] = new TH2F
2354 (Form("hEOverP%s",hName[iso].Data()),
2355 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),
2356 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
2357 fhEOverP[iso]->SetXTitle("E (GeV)");
2358 fhEOverP[iso]->SetYTitle("E/p");
2359 outputContainer->Add(fhEOverP[iso]);
2363 fhTrackMatchedMCParticle[iso] = new TH2F
2364 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
2365 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),
2366 nptbins,ptmin,ptmax,8,0,8);
2367 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
2368 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
2370 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
2371 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
2372 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
2373 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
2374 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
2375 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
2376 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
2377 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
2379 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
2385 fhELambda0[iso] = new TH2F
2386 (Form("hELambda0%s",hName[iso].Data()),
2387 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2388 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
2389 fhELambda0[iso]->SetXTitle("E (GeV)");
2390 outputContainer->Add(fhELambda0[iso]) ;
2394 fhELambda0MCPhoton[iso] = new TH2F
2395 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
2396 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2397 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
2398 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
2399 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
2401 fhELambda0MCPi0[iso] = new TH2F
2402 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
2403 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2404 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
2405 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
2406 outputContainer->Add(fhELambda0MCPi0[iso]) ;
2408 fhELambda0MCPi0Decay[iso] = new TH2F
2409 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
2410 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2411 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
2412 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
2413 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
2415 fhELambda0MCEtaDecay[iso] = new TH2F
2416 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
2417 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2418 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2419 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
2420 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
2422 fhELambda0MCOtherDecay[iso] = new TH2F
2423 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
2424 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2425 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
2426 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
2427 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
2429 fhELambda0MCHadron[iso] = new TH2F
2430 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
2431 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2432 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
2433 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
2434 outputContainer->Add(fhELambda0MCHadron[iso]) ;
2437 fhELambda1[iso] = new TH2F
2438 (Form("hELambda1%s",hName[iso].Data()),
2439 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2440 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
2441 fhELambda1[iso]->SetXTitle("E (GeV)");
2442 outputContainer->Add(fhELambda1[iso]) ;
2444 if(fCalorimeter=="EMCAL")
2446 fhELambda0TRD[iso] = new TH2F
2447 (Form("hELambda0TRD%s",hName[iso].Data()),
2448 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2449 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
2450 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
2451 outputContainer->Add(fhELambda0TRD[iso]) ;
2453 fhELambda1TRD[iso] = new TH2F
2454 (Form("hELambda1TRD%s",hName[iso].Data()),
2455 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2456 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
2457 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
2458 outputContainer->Add(fhELambda1TRD[iso]) ;
2461 fhNLocMax[iso] = new TH2F
2462 (Form("hNLocMax%s",hName[iso].Data()),
2463 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
2464 nptbins,ptmin,ptmax,10,0,10);
2465 fhNLocMax[iso]->SetYTitle("N maxima");
2466 fhNLocMax[iso]->SetXTitle("E (GeV)");
2467 outputContainer->Add(fhNLocMax[iso]) ;
2469 fhELambda0LocMax1[iso] = new TH2F
2470 (Form("hELambda0LocMax1%s",hName[iso].Data()),
2471 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2472 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
2473 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
2474 outputContainer->Add(fhELambda0LocMax1[iso]) ;
2476 fhELambda1LocMax1[iso] = new TH2F
2477 (Form("hELambda1LocMax1%s",hName[iso].Data()),
2478 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2479 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
2480 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
2481 outputContainer->Add(fhELambda1LocMax1[iso]) ;
2483 fhELambda0LocMax2[iso] = new TH2F
2484 (Form("hELambda0LocMax2%s",hName[iso].Data()),
2485 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2486 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
2487 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
2488 outputContainer->Add(fhELambda0LocMax2[iso]) ;
2490 fhELambda1LocMax2[iso] = new TH2F
2491 (Form("hELambda1LocMax2%s",hName[iso].Data()),
2492 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2493 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
2494 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
2495 outputContainer->Add(fhELambda1LocMax2[iso]) ;
2497 fhELambda0LocMaxN[iso] = new TH2F
2498 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
2499 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2500 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
2501 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
2502 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
2504 fhELambda1LocMaxN[iso] = new TH2F
2505 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
2506 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2507 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
2508 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
2509 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
2512 } // control histograms for isolated and non isolated objects
2515 if(fFillPileUpHistograms)
2517 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
2518 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0",r),
2519 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2520 fhPtTrackInConeOtherBC->SetYTitle("p_{T in cone} (GeV/c)");
2521 fhPtTrackInConeOtherBC->SetXTitle("p_{T} (GeV/c)");
2522 outputContainer->Add(fhPtTrackInConeOtherBC) ;
2524 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
2525 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0, pile-up from SPD",r),
2526 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2527 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2528 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("p_{T} (GeV/c)");
2529 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
2531 fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0",
2532 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2533 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2534 fhPtTrackInConeBC0->SetYTitle("p_{T in cone} (GeV/c)");
2535 fhPtTrackInConeBC0->SetXTitle("p_{T} (GeV/c)");
2536 outputContainer->Add(fhPtTrackInConeBC0) ;
2538 fhPtTrackInConeVtxBC0 = new TH2F("hPtTrackInConeVtxBC0",
2539 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
2540 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2541 fhPtTrackInConeVtxBC0->SetYTitle("p_{T in cone} (GeV/c)");
2542 fhPtTrackInConeVtxBC0->SetXTitle("p_{T} (GeV/c)");
2543 outputContainer->Add(fhPtTrackInConeVtxBC0) ;
2546 fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD",
2547 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0, pile-up from SPD",r),
2548 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2549 fhPtTrackInConeBC0PileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
2550 fhPtTrackInConeBC0PileUpSPD->SetXTitle("p_{T} (GeV/c)");
2551 outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ;
2554 for (Int_t i = 0; i < 7 ; i++)
2556 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
2557 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
2558 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2559 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/c)");
2560 fhPtInConePileUp[i]->SetXTitle("p_{T} (GeV/c)");
2561 outputContainer->Add(fhPtInConePileUp[i]) ;
2567 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
2568 fhPtIsoPrompt->SetYTitle("N");
2569 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
2570 outputContainer->Add(fhPtIsoPrompt) ;
2572 fhPhiIsoPrompt = new TH2F
2573 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2574 fhPhiIsoPrompt->SetYTitle("#phi");
2575 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2576 outputContainer->Add(fhPhiIsoPrompt) ;
2578 fhEtaIsoPrompt = new TH2F
2579 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2580 fhEtaIsoPrompt->SetYTitle("#eta");
2581 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
2582 outputContainer->Add(fhEtaIsoPrompt) ;
2584 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
2585 fhPtIsoFragmentation->SetYTitle("N");
2586 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
2587 outputContainer->Add(fhPtIsoFragmentation) ;
2589 fhPhiIsoFragmentation = new TH2F
2590 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2591 fhPhiIsoFragmentation->SetYTitle("#phi");
2592 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2593 outputContainer->Add(fhPhiIsoFragmentation) ;
2595 fhEtaIsoFragmentation = new TH2F
2596 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2597 fhEtaIsoFragmentation->SetYTitle("#eta");
2598 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
2599 outputContainer->Add(fhEtaIsoFragmentation) ;
2601 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2602 fhPtIsoPi0->SetYTitle("N");
2603 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
2604 outputContainer->Add(fhPtIsoPi0) ;
2606 fhPhiIsoPi0 = new TH2F
2607 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2608 fhPhiIsoPi0->SetYTitle("#phi");
2609 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2610 outputContainer->Add(fhPhiIsoPi0) ;
2612 fhEtaIsoPi0 = new TH2F
2613 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2614 fhEtaIsoPi0->SetYTitle("#eta");
2615 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
2616 outputContainer->Add(fhEtaIsoPi0) ;
2618 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2619 fhPtIsoPi0Decay->SetYTitle("N");
2620 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
2621 outputContainer->Add(fhPtIsoPi0Decay) ;
2623 fhPhiIsoPi0Decay = new TH2F
2624 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2625 fhPhiIsoPi0Decay->SetYTitle("#phi");
2626 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2627 outputContainer->Add(fhPhiIsoPi0Decay) ;
2629 fhEtaIsoPi0Decay = new TH2F
2630 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2631 fhEtaIsoPi0Decay->SetYTitle("#eta");
2632 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
2633 outputContainer->Add(fhEtaIsoPi0Decay) ;
2635 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
2636 fhPtIsoEtaDecay->SetYTitle("N");
2637 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2638 outputContainer->Add(fhPtIsoEtaDecay) ;
2640 fhPhiIsoEtaDecay = new TH2F
2641 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2642 fhPhiIsoEtaDecay->SetYTitle("#phi");
2643 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2644 outputContainer->Add(fhPhiIsoEtaDecay) ;
2646 fhEtaIsoEtaDecay = new TH2F
2647 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2648 fhEtaIsoEtaDecay->SetYTitle("#eta");
2649 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2650 outputContainer->Add(fhEtaIsoEtaDecay) ;
2652 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
2653 fhPtIsoOtherDecay->SetYTitle("N");
2654 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
2655 outputContainer->Add(fhPtIsoOtherDecay) ;
2657 fhPhiIsoOtherDecay = new TH2F
2658 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2659 fhPhiIsoOtherDecay->SetYTitle("#phi");
2660 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2661 outputContainer->Add(fhPhiIsoOtherDecay) ;
2663 fhEtaIsoOtherDecay = new TH2F
2664 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2665 fhEtaIsoOtherDecay->SetYTitle("#eta");
2666 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
2667 outputContainer->Add(fhEtaIsoOtherDecay) ;
2669 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
2670 // fhPtIsoConversion->SetYTitle("N");
2671 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
2672 // outputContainer->Add(fhPtIsoConversion) ;
2674 // fhPhiIsoConversion = new TH2F
2675 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2676 // fhPhiIsoConversion->SetYTitle("#phi");
2677 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2678 // outputContainer->Add(fhPhiIsoConversion) ;
2680 // fhEtaIsoConversion = new TH2F
2681 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2682 // fhEtaIsoConversion->SetYTitle("#eta");
2683 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
2684 // outputContainer->Add(fhEtaIsoConversion) ;
2686 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
2687 fhPtIsoHadron->SetYTitle("N");
2688 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
2689 outputContainer->Add(fhPtIsoHadron) ;
2692 fhPhiIsoHadron = new TH2F
2693 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2694 fhPhiIsoHadron->SetYTitle("#phi");
2695 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
2696 outputContainer->Add(fhPhiIsoHadron) ;
2698 fhEtaIsoHadron = new TH2F
2699 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2700 fhEtaIsoHadron->SetYTitle("#eta");
2701 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
2702 outputContainer->Add(fhEtaIsoHadron) ;
2708 // Not Isolated histograms, reference histograms
2710 fhENoIso = new TH1F("hENoIso",
2711 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),
2712 nptbins,ptmin,ptmax);
2713 fhENoIso->SetYTitle("N");
2714 fhENoIso->SetXTitle("E (GeV/c)");
2715 outputContainer->Add(fhENoIso) ;
2717 fhPtNoIso = new TH1F("hPtNoIso",
2718 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),
2719 nptbins,ptmin,ptmax);
2720 fhPtNoIso->SetYTitle("N");
2721 fhPtNoIso->SetXTitle("p_{T} (GeV/c)");
2722 outputContainer->Add(fhPtNoIso) ;
2724 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
2725 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),
2726 nptbins,ptmin,ptmax,10,0,10);
2727 fhPtNLocMaxNoIso->SetYTitle("NLM");
2728 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
2729 outputContainer->Add(fhPtNLocMaxNoIso) ;
2731 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
2732 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),
2733 netabins,etamin,etamax,nphibins,phimin,phimax);
2734 fhEtaPhiNoIso->SetXTitle("#eta");
2735 fhEtaPhiNoIso->SetYTitle("#phi");
2736 outputContainer->Add(fhEtaPhiNoIso) ;
2738 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
2739 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),
2740 nptbins,ptmin,ptmax);
2741 fhPtDecayNoIso->SetYTitle("N");
2742 fhPtDecayNoIso->SetXTitle("p_{T} (GeV/c)");
2743 outputContainer->Add(fhPtDecayNoIso) ;
2745 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
2746 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),
2747 netabins,etamin,etamax,nphibins,phimin,phimax);
2748 fhEtaPhiDecayNoIso->SetXTitle("#eta");
2749 fhEtaPhiDecayNoIso->SetYTitle("#phi");
2750 outputContainer->Add(fhEtaPhiDecayNoIso) ;
2755 fhPtNoIsoPi0 = new TH1F
2756 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
2757 fhPtNoIsoPi0->SetYTitle("N");
2758 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
2759 outputContainer->Add(fhPtNoIsoPi0) ;
2761 fhPtNoIsoPi0Decay = new TH1F
2762 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
2763 fhPtNoIsoPi0Decay->SetYTitle("N");
2764 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
2765 outputContainer->Add(fhPtNoIsoPi0Decay) ;
2767 fhPtNoIsoEtaDecay = new TH1F
2768 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
2769 fhPtNoIsoEtaDecay->SetYTitle("N");
2770 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
2771 outputContainer->Add(fhPtNoIsoEtaDecay) ;
2773 fhPtNoIsoOtherDecay = new TH1F
2774 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
2775 fhPtNoIsoOtherDecay->SetYTitle("N");
2776 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
2777 outputContainer->Add(fhPtNoIsoOtherDecay) ;
2779 fhPtNoIsoPrompt = new TH1F
2780 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
2781 fhPtNoIsoPrompt->SetYTitle("N");
2782 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
2783 outputContainer->Add(fhPtNoIsoPrompt) ;
2785 fhPtIsoMCPhoton = new TH1F
2786 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
2787 fhPtIsoMCPhoton->SetYTitle("N");
2788 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2789 outputContainer->Add(fhPtIsoMCPhoton) ;
2791 fhPtNoIsoMCPhoton = new TH1F
2792 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
2793 fhPtNoIsoMCPhoton->SetYTitle("N");
2794 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
2795 outputContainer->Add(fhPtNoIsoMCPhoton) ;
2797 // fhPtNoIsoConversion = new TH1F
2798 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
2799 // fhPtNoIsoConversion->SetYTitle("N");
2800 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
2801 // outputContainer->Add(fhPtNoIsoConversion) ;
2803 fhPtNoIsoFragmentation = new TH1F
2804 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
2805 fhPtNoIsoFragmentation->SetYTitle("N");
2806 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
2807 outputContainer->Add(fhPtNoIsoFragmentation) ;
2809 fhPtNoIsoHadron = new TH1F
2810 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
2811 fhPtNoIsoHadron->SetYTitle("N");
2812 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
2813 outputContainer->Add(fhPtNoIsoHadron) ;
2820 const Int_t buffersize = 255;
2821 char name[buffersize];
2822 char title[buffersize];
2823 for(Int_t icone = 0; icone<fNCones; icone++)
2825 // sum pt in cone vs. pt leading
2826 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
2827 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2828 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2829 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2830 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2831 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
2833 // pt in cone vs. pt leading
2834 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
2835 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2836 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2837 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2838 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2839 outputContainer->Add(fhPtLeadingPt[icone]) ;
2841 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
2842 snprintf(name, buffersize,"hPerpSumPtLeadingPt_Cone_%d",icone);
2843 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2844 fhPerpSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2845 fhPerpSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
2846 fhPerpSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2847 outputContainer->Add(fhPerpSumPtLeadingPt[icone]) ;
2849 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
2850 snprintf(name, buffersize,"hPerpPtLeadingPt_Cone_%d",icone);
2851 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
2852 fhPerpPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2853 fhPerpPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
2854 fhPerpPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
2855 outputContainer->Add(fhPerpPtLeadingPt[icone]) ;
2860 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
2861 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2862 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2863 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2864 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
2865 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
2867 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
2868 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
2869 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2870 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2871 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
2872 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
2874 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
2875 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2876 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2877 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2878 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
2879 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
2881 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
2882 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2883 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2884 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2885 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
2886 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
2888 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
2889 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2890 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2891 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2892 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2893 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
2895 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
2896 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2897 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2898 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2899 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
2900 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
2902 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
2903 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2904 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2905 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2906 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
2907 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
2909 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
2910 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
2911 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2912 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2913 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
2914 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
2918 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
2921 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
2922 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2923 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2924 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2925 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
2927 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
2928 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
2929 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2930 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2931 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
2934 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
2935 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
2936 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2937 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2938 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2939 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
2941 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
2942 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]);
2943 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2944 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2945 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2946 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
2948 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
2949 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]);
2950 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2951 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
2952 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2953 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
2955 // pt decays isolated
2956 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2957 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]);
2958 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2959 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2960 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
2962 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2963 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]);
2964 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2965 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2966 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
2968 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2969 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]);
2970 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2971 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2972 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2973 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
2975 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2976 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]);
2977 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2978 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2979 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2980 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
2982 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2983 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]);
2984 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2985 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
2986 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
2987 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
2991 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
2992 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
2993 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2994 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
2995 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
2996 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
2998 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
2999 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
3000 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3001 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
3002 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
3003 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
3005 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
3006 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
3007 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3008 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
3009 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
3010 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
3012 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
3013 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]);
3014 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3015 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
3016 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
3017 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
3019 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
3020 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]);
3021 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3022 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
3023 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
3024 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
3027 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
3028 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]);
3029 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3030 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
3031 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
3032 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
3034 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
3035 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]);
3036 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3037 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
3038 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
3039 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
3042 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
3043 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]);
3044 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3045 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
3046 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
3047 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
3049 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
3050 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]);
3051 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3052 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
3053 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
3054 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
3056 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
3057 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]);
3058 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
3059 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
3060 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
3061 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
3066 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
3067 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3068 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3069 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3070 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
3072 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
3073 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3074 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3075 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3076 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
3078 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
3079 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3080 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3081 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3082 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
3084 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
3085 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3086 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3087 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3088 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
3090 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
3091 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3092 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3093 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3094 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
3096 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
3097 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3098 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3099 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3100 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
3102 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
3103 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3104 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3105 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3106 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
3108 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
3109 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3110 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3111 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3112 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
3114 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
3115 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3116 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3117 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3118 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
3120 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
3121 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3122 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3123 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3124 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
3127 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
3128 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3129 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3130 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3131 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
3133 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
3134 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3135 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3136 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3137 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
3139 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
3140 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3141 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3142 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3143 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
3145 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
3146 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3147 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3148 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3149 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
3151 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
3152 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3153 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3154 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3155 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
3157 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
3158 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
3159 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
3160 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
3161 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
3168 if(fFillPileUpHistograms)
3170 for (Int_t i = 0; i < 7 ; i++)
3172 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
3173 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()),
3174 nptbins,ptmin,ptmax);
3175 fhEIsoPileUp[i]->SetYTitle("dN / dE");
3176 fhEIsoPileUp[i]->SetXTitle("E (GeV)");
3177 outputContainer->Add(fhEIsoPileUp[i]) ;
3179 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
3180 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()),
3181 nptbins,ptmin,ptmax);
3182 fhPtIsoPileUp[i]->SetYTitle("dN / p_{T}");
3183 fhPtIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
3184 outputContainer->Add(fhPtIsoPileUp[i]) ;
3186 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
3187 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()),
3188 nptbins,ptmin,ptmax);
3189 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
3190 fhENoIsoPileUp[i]->SetXTitle("E (GeV)");
3191 outputContainer->Add(fhENoIsoPileUp[i]) ;
3193 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
3194 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()),
3195 nptbins,ptmin,ptmax);
3196 fhPtNoIsoPileUp[i]->SetYTitle("dN / p_{T}");
3197 fhPtNoIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
3198 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
3201 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3202 fhTimeENoCut->SetXTitle("E (GeV)");
3203 fhTimeENoCut->SetYTitle("time (ns)");
3204 outputContainer->Add(fhTimeENoCut);
3206 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3207 fhTimeESPD->SetXTitle("E (GeV)");
3208 fhTimeESPD->SetYTitle("time (ns)");
3209 outputContainer->Add(fhTimeESPD);
3211 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
3212 fhTimeESPDMulti->SetXTitle("E (GeV)");
3213 fhTimeESPDMulti->SetYTitle("time (ns)");
3214 outputContainer->Add(fhTimeESPDMulti);
3216 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3217 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
3218 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
3219 outputContainer->Add(fhTimeNPileUpVertSPD);
3221 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
3222 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
3223 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
3224 outputContainer->Add(fhTimeNPileUpVertTrack);
3226 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
3227 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
3228 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
3229 outputContainer->Add(fhTimeNPileUpVertContributors);
3231 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);
3232 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
3233 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
3234 outputContainer->Add(fhTimePileUpMainVertexZDistance);
3236 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
3237 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
3238 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
3239 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
3242 return outputContainer ;
3246 //__________________________________
3247 void AliAnaParticleIsolation::Init()
3249 // Do some checks and init stuff
3251 // In case of several cone and thresholds analysis, open the cuts for the filling of the
3252 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
3253 // The different cones, thresholds are tested for this list of tracks, clusters.
3256 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
3257 GetIsolationCut()->SetPtThreshold(100);
3258 GetIsolationCut()->SetPtFraction(100);
3259 GetIsolationCut()->SetConeSize(1);
3263 //____________________________________________
3264 void AliAnaParticleIsolation::InitParameters()
3267 //Initialize the parameters of the analysis.
3268 SetInputAODName("PWG4Particle");
3269 SetAODObjArrayName("IsolationCone");
3270 AddToHistogramsName("AnaIsolation_");
3272 fCalorimeter = "PHOS" ;
3273 fReMakeIC = kFALSE ;
3274 fMakeSeveralIC = kFALSE ;
3276 //----------- Several IC-----------------
3279 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
3280 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
3281 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
3282 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
3284 //------------- Histograms settings -------
3285 fHistoNPtSumBins = 100 ;
3286 fHistoPtSumMax = 50 ;
3287 fHistoPtSumMin = 0. ;
3289 fHistoNPtInConeBins = 100 ;
3290 fHistoPtInConeMax = 50 ;
3291 fHistoPtInConeMin = 0. ;
3295 //__________________________________________________
3296 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
3298 //Do analysis and fill aods
3299 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
3301 if(!GetInputAODBranch())
3303 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
3307 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
3309 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());
3313 Int_t n = 0, nfrac = 0;
3314 Bool_t isolated = kFALSE ;
3315 Float_t coneptsum = 0 ;
3316 TObjArray * pl = 0x0; ;
3318 //Select the calorimeter for candidate isolation with neutral particles
3319 if (fCalorimeter == "PHOS" )
3320 pl = GetPHOSClusters();
3321 else if (fCalorimeter == "EMCAL")
3322 pl = GetEMCALClusters();
3324 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
3325 Double_t ptLeading = 0. ;
3326 Int_t idLeading = -1 ;
3327 TLorentzVector mom ;
3328 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3329 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
3331 for(Int_t iaod = 0; iaod < naod; iaod++)
3333 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3335 //If too small or too large pt, skip
3336 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
3338 //check if it is low pt trigger particle
3339 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
3340 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
3343 continue ; //trigger should not come from underlying event
3346 //vertex cut in case of mixing
3347 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
3348 if(check == 0) continue;
3349 if(check == -1) return;
3351 //find the leading particles with highest momentum
3352 if ( aodinput->Pt() > ptLeading )
3354 ptLeading = aodinput->Pt() ;
3358 aodinput->SetLeadingParticle(kFALSE);
3360 }//finish searching for leading trigger particle
3362 // Check isolation of leading particle
3363 if(idLeading < 0) return;
3365 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
3366 aodinput->SetLeadingParticle(kTRUE);
3368 // Check isolation only of clusters in fiducial region
3369 if(IsFiducialCutOn())
3371 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
3375 //After cuts, study isolation
3376 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
3377 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
3378 GetReader(), GetCaloPID(),
3379 kTRUE, aodinput, GetAODObjArrayName(),
3380 n,nfrac,coneptsum, isolated);
3382 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
3386 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
3387 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
3392 //_________________________________________________________
3393 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
3395 //Do analysis and fill histograms
3397 //Loop on stored AOD
3398 Int_t naod = GetInputAODBranch()->GetEntriesFast();
3399 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
3401 for(Int_t iaod = 0; iaod < naod ; iaod++)
3403 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3405 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
3407 // Check isolation only of clusters in fiducial region
3408 if(IsFiducialCutOn())
3410 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
3411 if(! in ) continue ;
3414 Float_t pt = aod->Pt();
3415 //If too small or too large pt, skip
3416 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
3418 Bool_t isolated = aod->IsIsolated();
3419 Bool_t decay = aod->IsTagged();
3420 Float_t energy = aod->E();
3421 Float_t phi = aod->Phi();
3422 Float_t eta = aod->Eta();
3424 // --- In case of redoing isolation from delta AOD ----
3428 //Analysis of multiple IC at same time
3429 MakeSeveralICAnalysis(aod);
3434 //In case a more strict IC is needed in the produced AOD
3436 Int_t n = 0, nfrac = 0;
3437 Float_t coneptsum = 0 ;
3439 //Recover reference arrays with clusters and tracks
3440 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
3441 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
3443 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3444 GetReader(), GetCaloPID(),
3446 n,nfrac,coneptsum, isolated);
3448 fhConeSumPt ->Fill(pt, coneptsum);
3449 fhConeSumPtTrigEtaPhi->Fill(eta,phi,coneptsum);
3451 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
3455 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
3457 FillTrackMatchingShowerShapeControlHistograms(aod,GetReader(), GetCaloPID());
3459 //Fill pt/sum pT distribution of particles in cone or in UE band
3460 Float_t coneptsumCluster = 0;
3461 Float_t coneptsumTrack = 0;
3462 Float_t coneptsumCell = 0;
3464 CalculateTrackSignalInCone (aod,coneptsumTrack );
3465 CalculateCaloSignalInCone (aod,coneptsumCluster);
3466 CalculateCaloCellSignalInCone(aod,coneptsumCell );
3468 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
3470 fhConeSumPtClustervsTrack ->Fill(coneptsumCluster,coneptsumTrack);
3471 fhConeSumPtCellvsTrack ->Fill(coneptsumCell, coneptsumTrack);
3472 fhConeSumPtCellTrack ->Fill(pt, coneptsumTrack+coneptsumCell);
3473 fhConeSumPtCellTrackTrigEtaPhi->Fill(eta,phi,coneptsumTrack+coneptsumCell);
3476 fhConeSumPt ->Fill(pt, coneptsumTrack+coneptsumCluster);
3477 fhConeSumPtTrigEtaPhi ->Fill(eta,phi,coneptsumTrack+coneptsumCluster);
3480 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsumTrack+coneptsumCluster);
3482 //normalize phi/eta band per area unit
3483 CalculateNormalizeUEBandPerUnitArea(aod, coneptsumCluster, coneptsumCell, coneptsumTrack) ;
3486 Int_t mcTag = aod->GetTag() ;
3490 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
3492 // Fill histograms to undertand pile-up before other cuts applied
3493 // Remember to relax time cuts in the reader
3494 FillPileUpHistograms(aod->GetCaloLabel(0));
3496 fhEIso ->Fill(energy);
3498 fhPhiIso ->Fill(pt,phi);
3499 fhEtaIso ->Fill(pt,eta);
3500 fhEtaPhiIso ->Fill(eta,phi);
3502 fhPtNLocMaxIso ->Fill(pt,aod->GetFiducialArea()) ;
3503 fhPtCentralityIso ->Fill(pt,GetEventCentrality()) ;
3504 fhPtEventPlaneIso ->Fill(pt,GetEventPlaneAngle() ) ;
3508 fhPtDecayIso ->Fill(pt);
3509 fhEtaPhiDecayIso->Fill(eta,phi);
3512 if(fFillPileUpHistograms)
3514 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
3515 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
3516 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
3517 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
3518 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
3519 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
3520 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
3526 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
3528 fhPtIsoMCPhoton ->Fill(pt);
3531 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
3533 fhPtIsoPrompt ->Fill(pt);
3534 fhPhiIsoPrompt ->Fill(pt,phi);
3535 fhEtaIsoPrompt ->Fill(pt,eta);
3537 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
3539 fhPtIsoFragmentation ->Fill(pt);
3540 fhPhiIsoFragmentation ->Fill(pt,phi);
3541 fhEtaIsoFragmentation ->Fill(pt,eta);
3543 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
3545 fhPtIsoPi0 ->Fill(pt);
3546 fhPhiIsoPi0 ->Fill(pt,phi);
3547 fhEtaIsoPi0 ->Fill(pt,eta);
3549 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
3551 fhPtIsoPi0Decay ->Fill(pt);
3552 fhPhiIsoPi0Decay ->Fill(pt,phi);
3553 fhEtaIsoPi0Decay ->Fill(pt,eta);
3555 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
3557 fhPtIsoEtaDecay ->Fill(pt);
3558 fhPhiIsoEtaDecay ->Fill(pt,phi);
3559 fhEtaIsoEtaDecay ->Fill(pt,eta);
3561 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
3563 fhPtIsoOtherDecay ->Fill(pt);
3564 fhPhiIsoOtherDecay ->Fill(pt,phi);
3565 fhEtaIsoOtherDecay ->Fill(pt,eta);
3567 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
3569 // fhPtIsoConversion ->Fill(pt);
3570 // fhPhiIsoConversion ->Fill(pt,phi);
3571 // fhEtaIsoConversion ->Fill(pt,eta);
3573 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
3575 fhPtIsoHadron ->Fill(pt);
3576 fhPhiIsoHadron ->Fill(pt,phi);
3577 fhEtaIsoHadron ->Fill(pt,eta);
3579 }//Histograms with MC
3581 }//Isolated histograms
3582 else // NON isolated
3584 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
3586 fhENoIso ->Fill(energy);
3587 fhPtNoIso ->Fill(pt);
3588 fhEtaPhiNoIso ->Fill(eta,phi);
3589 fhPtNLocMaxNoIso->Fill(pt,aod->GetFiducialArea());
3591 if(fFillPileUpHistograms)
3593 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
3594 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
3595 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
3596 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
3597 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
3598 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
3599 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
3604 fhPtDecayNoIso ->Fill(pt);
3605 fhEtaPhiDecayNoIso->Fill(eta,phi);
3610 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
3611 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
3612 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
3613 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
3614 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
3615 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
3616 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
3617 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
3618 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
3625 //_____________________________________________________________________________________
3626 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
3629 //Isolation Cut Analysis for both methods and different pt cuts and cones
3630 Float_t ptC = ph->Pt();
3631 Float_t etaC = ph->Eta();
3632 Float_t phiC = ph->Phi();
3633 Int_t tag = ph->GetTag();
3634 Bool_t decay = ph->IsTagged();
3636 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
3638 //Keep original setting used when filling AODs, reset at end of analysis
3639 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
3640 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
3641 Float_t rorg = GetIsolationCut()->GetConeSize();
3643 Float_t coneptsum = 0 ;
3644 Int_t n [10][10];//[fNCones][fNPtThresFrac];
3645 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
3646 Bool_t isolated = kFALSE;
3648 Int_t nFracCone = 0;
3650 // fill hist with all particles before isolation criteria
3651 fhPtNoIso ->Fill(ptC);
3652 fhEtaPhiNoIso->Fill(etaC,phiC);
3656 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
3657 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
3658 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
3659 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
3660 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
3661 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
3662 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
3663 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
3664 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
3669 fhPtDecayNoIso ->Fill(ptC);
3670 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
3672 //Get vertex for photon momentum calculation
3673 Double_t vertex[] = {0,0,0} ; //vertex ;
3674 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
3675 GetReader()->GetVertex(vertex);
3677 //Loop on cone sizes
3678 for(Int_t icone = 0; icone<fNCones; icone++)
3680 //Recover reference arrays with clusters and tracks
3681 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
3682 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
3684 //If too small or too large pt, skip
3685 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
3687 //In case a more strict IC is needed in the produced AOD
3689 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
3691 GetIsolationCut()->SetSumPtThreshold(100);
3692 GetIsolationCut()->SetPtThreshold(100);
3693 GetIsolationCut()->SetPtFraction(100);
3694 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
3695 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3696 GetReader(), GetCaloPID(),
3698 nCone,nFracCone,coneptsum, isolated);
3701 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
3703 // retreive pt tracks to fill histo vs. pt leading
3704 //Fill pt distribution of particles in cone
3705 //fhPtLeadingPt(),fhPerpSumPtLeadingPt(),fhPerpPtLeadingPt(),
3709 Double_t sumptPerp = 0. ;
3710 TObjArray * trackList = GetCTSTracks() ;
3711 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
3713 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
3714 //fill the histograms at forward range
3717 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
3721 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
3722 Double_t dEta = etaC - track->Eta();
3723 Double_t arg = dPhi*dPhi + dEta*dEta;
3724 if(TMath::Sqrt(arg) < fConeSizes[icone])
3726 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3727 sumptPerp+=track->Pt();
3730 dPhi = phiC - track->Phi() - TMath::PiOver2();
3731 arg = dPhi*dPhi + dEta*dEta;
3732 if(TMath::Sqrt(arg) < fConeSizes[icone])
3734 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3735 sumptPerp+=track->Pt();
3739 fhPerpSumPtLeadingPt[icone]->Fill(ptC,sumptPerp);
3743 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
3745 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
3746 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3747 coneptsum+=track->Pt();
3754 TLorentzVector mom ;
3755 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
3757 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
3758 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
3760 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
3761 coneptsum+=mom.Pt();
3767 //Loop on ptthresholds
3768 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
3771 nfrac[icone][ipt]=0;
3772 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
3773 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
3774 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
3776 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
3777 GetReader(), GetCaloPID(),
3779 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3781 if(!isolated) continue;
3782 //Normal ptThreshold cut
3784 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",
3785 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
3786 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
3788 if(n[icone][ipt] == 0)
3790 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
3791 fhPtThresIsolated[icone][ipt]->Fill(ptC);
3792 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
3796 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
3797 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
3802 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3803 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3804 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3805 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3806 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3807 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3808 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3809 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
3813 // pt in cone fraction
3814 if(nfrac[icone][ipt] == 0)
3816 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
3817 fhPtFracIsolated[icone][ipt]->Fill(ptC);
3818 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
3822 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
3823 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
3828 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
3829 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
3830 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
3831 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
3832 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
3833 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
3834 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
3835 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
3839 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
3841 //Pt threshold on pt cand/ sum in cone histograms
3842 if(coneptsum<fSumPtThresholds[ipt])
3843 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
3844 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
3845 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
3846 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
3849 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
3850 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
3854 // pt sum pt frac method
3855 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
3857 if(coneptsum < fPtFractions[ipt]*ptC)
3859 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
3860 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
3861 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
3865 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
3866 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
3871 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
3872 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
3873 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
3874 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
3875 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
3876 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
3880 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
3881 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
3889 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
3890 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
3891 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
3892 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
3893 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
3894 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
3895 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
3896 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
3901 //Reset original parameters for AOD analysis
3902 GetIsolationCut()->SetPtThreshold(ptthresorg);
3903 GetIsolationCut()->SetPtFraction(ptfracorg);
3904 GetIsolationCut()->SetConeSize(rorg);
3908 //_____________________________________________________________
3909 void AliAnaParticleIsolation::Print(const Option_t * opt) const
3912 //Print some relevant parameters set for the analysis
3916 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
3917 AliAnaCaloTrackCorrBaseClass::Print(" ");
3919 printf("ReMake Isolation = %d \n", fReMakeIC) ;
3920 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
3921 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
3925 printf("N Cone Sizes = %d\n", fNCones) ;
3926 printf("Cone Sizes = \n") ;
3927 for(Int_t i = 0; i < fNCones; i++)
3928 printf(" %1.2f;", fConeSizes[i]) ;
3931 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
3932 printf(" pT thresholds = \n") ;
3933 for(Int_t i = 0; i < fNPtThresFrac; i++)
3934 printf(" %2.2f;", fPtThresholds[i]) ;
3938 printf(" pT fractions = \n") ;
3939 for(Int_t i = 0; i < fNPtThresFrac; i++)
3940 printf(" %2.2f;", fPtFractions[i]) ;
3944 printf("sum pT thresholds = \n") ;
3945 for(Int_t i = 0; i < fNPtThresFrac; i++)
3946 printf(" %2.2f;", fSumPtThresholds[i]) ;
3951 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
3952 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);