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"
48 ClassImp(AliAnaParticleIsolation)
50 //______________________________________________________________________________
51 AliAnaParticleIsolation::AliAnaParticleIsolation() :
52 AliAnaCaloTrackCorrBaseClass(), fCalorimeter(""),
53 fReMakeIC(0), fMakeSeveralIC(0),
54 fFillPileUpHistograms(0),
55 fFillTMHisto(0), fFillSSHisto(0),
57 fNCones(0), fNPtThresFrac(0),
58 fConeSizes(), fPtThresholds(),
59 fPtFractions(), fSumPtThresholds(),
61 fhEIso(0), fhPtIso(0), fhPtNLocMaxIso(0),
62 fhPhiIso(0), fhEtaIso(0), fhEtaPhiIso(0),
64 fhENoIso(0), fhPtNoIso(0), fhPtNLocMaxNoIso(0),
65 fhPtDecayIso(0), fhPtDecayNoIso(0),
66 fhEtaPhiDecayIso(0), fhEtaPhiDecayNoIso(0),
67 fhConeSumPt(0), fhPtInCone(0),
69 fhPtTrackInConeOtherBC(0), fhPtTrackInConeOtherBCPileUpSPD(0),
70 fhPtTrackInConeBC0(0), fhPtTrackInConeBC0PileUpSPD(0),
71 fhPtInConePileUp(), fhPtInConeCent(0),
72 fhFRConeSumPt(0), fhPtInFRCone(0), fhPhiUEConeSumPt(0),
73 fhEtaUEConeSumPt(0), fhEtaBand(0), fhPhiBand(0),
74 fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
76 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
77 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
78 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
79 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
80 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
81 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
82 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
83 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
84 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
85 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
86 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
87 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
88 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
89 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
90 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
91 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
92 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
93 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
94 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
95 //fhPtNoIsoConversion(0),
96 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
98 fhSumPtLeadingPt(), fhPtLeadingPt(),
99 fhFRSumPtLeadingPt(), fhFRPtLeadingPt(),
100 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
101 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
102 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
103 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
104 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
105 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
106 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
107 // Cluster control histograms
108 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
109 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
110 fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
111 fhELambda0TRD(), fhELambda1TRD(),
112 fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
113 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
114 // Number of local maxima in cluster
116 fhELambda0LocMax1(), fhELambda1LocMax1(),
117 fhELambda0LocMax2(), fhELambda1LocMax2(),
118 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
120 fhEIsoPileUp(), fhPtIsoPileUp(),
121 fhENoIsoPileUp(), fhPtNoIsoPileUp(),
122 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
123 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
124 fhTimeNPileUpVertContributors(0),
125 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
126 // Histograms settings
127 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
128 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
132 //Initialize parameters
135 for(Int_t i = 0; i < 5 ; i++)
139 fhPtSumIsolatedPrompt [i] = 0 ;
140 fhPtSumIsolatedFragmentation[i] = 0 ;
141 fhPtSumIsolatedPi0Decay [i] = 0 ;
142 fhPtSumIsolatedPi0 [i] = 0 ;
143 fhPtSumIsolatedEtaDecay [i] = 0 ;
144 fhPtSumIsolatedOtherDecay [i] = 0 ;
145 // fhPtSumIsolatedConversion [i] = 0 ;
146 fhPtSumIsolatedHadron [i] = 0 ;
148 for(Int_t j = 0; j < 5 ; j++)
150 fhPtThresIsolated [i][j] = 0 ;
151 fhPtFracIsolated [i][j] = 0 ;
152 fhPtSumIsolated [i][j] = 0 ;
154 fhEtaPhiPtThresIso [i][j] = 0 ;
155 fhEtaPhiPtThresDecayIso[i][j] = 0 ;
156 fhPtPtThresDecayIso [i][j] = 0 ;
158 fhEtaPhiPtFracIso [i][j] = 0 ;
159 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
160 fhPtPtFracDecayIso [i][j] = 0 ;
161 fhPtPtSumDecayIso [i][j] = 0 ;
162 fhPtSumDensityIso [i][j] = 0 ;
163 fhPtSumDensityDecayIso [i][j] = 0 ;
164 fhEtaPhiSumDensityIso [i][j] = 0 ;
165 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
166 fhPtFracPtSumIso [i][j] = 0 ;
167 fhPtFracPtSumDecayIso [i][j] = 0 ;
168 fhEtaPhiFracPtSumIso [i][j] = 0 ;
169 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
171 fhPtThresIsolatedPrompt [i][j] = 0 ;
172 fhPtThresIsolatedFragmentation[i][j] = 0 ;
173 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
174 fhPtThresIsolatedPi0 [i][j] = 0 ;
175 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
176 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
177 // fhPtThresIsolatedConversion [i][j] = 0 ;
178 fhPtThresIsolatedHadron [i][j] = 0 ;
180 fhPtFracIsolatedPrompt [i][j] = 0 ;
181 fhPtFracIsolatedFragmentation [i][j] = 0 ;
182 fhPtFracIsolatedPi0 [i][j] = 0 ;
183 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
184 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
185 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
186 // fhPtFracIsolatedConversion [i][j] = 0 ;
187 fhPtFracIsolatedHadron [i][j] = 0 ;
192 for(Int_t i = 0; i < 5 ; i++)
194 fPtFractions [i] = 0 ;
195 fPtThresholds [i] = 0 ;
196 fSumPtThresholds[i] = 0 ;
200 for(Int_t i = 0; i < 2 ; i++)
202 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
203 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
204 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
205 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
207 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
208 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
211 // Number of local maxima in cluster
213 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
214 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
215 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
221 for(Int_t i = 0 ; i < 7 ; i++)
223 fhPtInConePileUp[i] = 0 ;
224 fhEIsoPileUp [i] = 0 ;
225 fhPtIsoPileUp [i] = 0 ;
226 fhENoIsoPileUp [i] = 0 ;
227 fhPtNoIsoPileUp [i] = 0 ;
232 //_________________________________________________________________
233 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
235 // Fill some histograms to understand pile-up
236 if(!fFillPileUpHistograms) return;
240 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
245 TObjArray* clusters = 0x0;
246 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
247 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
250 Float_t time = -1000;
254 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
255 energy = cluster->E();
256 time = cluster->GetTOF()*1e9;
259 //printf("E %f, time %f\n",energy,time);
260 AliVEvent * event = GetReader()->GetInputEvent();
262 fhTimeENoCut->Fill(energy,time);
263 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
264 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
266 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
268 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
269 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
271 // N pile up vertices
272 Int_t nVerticesSPD = -1;
273 Int_t nVerticesTracks = -1;
277 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
278 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
283 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
284 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
287 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
288 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
290 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
291 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
294 Float_t z1 = -1, z2 = -1;
296 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
300 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
301 ncont=pv->GetNContributors();
302 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
304 diamZ = esdEv->GetDiamondZ();
308 AliAODVertex *pv=aodEv->GetVertex(iVert);
309 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
310 ncont=pv->GetNContributors();
311 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
313 diamZ = aodEv->GetDiamondZ();
316 Double_t distZ = TMath::Abs(z2-z1);
317 diamZ = TMath::Abs(z2-diamZ);
319 fhTimeNPileUpVertContributors ->Fill(time,ncont);
320 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
321 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
326 //________________________________________________________________________________________________
327 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(const Bool_t isolated,
328 const Int_t clusterID,
331 const TObjArray * plCTS,
332 const TObjArray * plNe,
333 AliAODPWG4ParticleCorrelation *pCandidate,
334 const AliCaloTrackReader * reader,
335 const AliCaloPID * pid)
337 // Fill Track matching and Shower Shape control histograms
338 if(!fFillTMHisto && !fFillSSHisto) return;
342 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
347 TObjArray* clusters = 0x0;
348 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
349 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
354 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
355 Float_t energy = cluster->E();
359 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
360 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
364 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
365 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
366 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
367 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
368 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
369 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
371 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
372 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
376 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
378 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
379 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
382 fhNLocMax[isolated]->Fill(energy,nMaxima);
383 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
384 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
385 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
389 //Analyse non-isolated events
392 Bool_t iso = kFALSE ;
393 Float_t coneptsum = 0 ;
394 GetIsolationCut()->SetPtThresholdMax(1.);
395 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
397 kFALSE, pCandidate, "",
398 n,nfrac,coneptsum, iso);
399 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
402 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
404 GetIsolationCut()->SetPtThresholdMax(10000.);
411 Float_t dZ = cluster->GetTrackDz();
412 Float_t dR = cluster->GetTrackDx();
414 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
416 dR = 2000., dZ = 2000.;
417 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
420 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
421 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
423 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
424 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
425 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
428 // Check dEdx and E/p of matched clusters
430 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
433 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
437 Float_t dEdx = track->GetTPCsignal();
438 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
440 Float_t eOverp = cluster->E()/track->P();
441 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
444 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
449 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
451 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
452 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
453 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
454 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
455 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
460 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
461 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
462 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
463 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
464 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
473 } // clusters array available
477 //______________________________________________________
478 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
480 //Save parameters used for analysis
481 TString parList ; //this will be list of parameters used for this analysis.
482 const Int_t buffersize = 255;
483 char onePar[buffersize] ;
485 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
487 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
489 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
491 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
493 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
495 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
500 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
502 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
505 for(Int_t icone = 0; icone < fNCones ; icone++)
507 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
510 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
512 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
515 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
517 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
520 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
522 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
527 //Get parameters set in base class.
528 parList += GetBaseParametersList() ;
530 //Get parameters set in IC class.
531 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
533 return new TObjString(parList) ;
537 //________________________________________________________
538 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
540 // Create histograms to be saved in output file and
541 // store them in outputContainer
542 TList * outputContainer = new TList() ;
543 outputContainer->SetName("IsolatedParticleHistos") ;
545 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
546 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
547 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
548 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
549 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
550 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
551 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
552 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
553 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
554 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
555 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
556 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
557 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
558 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
559 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
561 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
562 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
563 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
564 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
565 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
566 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
568 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
569 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
570 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
571 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
572 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
573 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
575 Int_t nptsumbins = fHistoNPtSumBins;
576 Float_t ptsummax = fHistoPtSumMax;
577 Float_t ptsummin = fHistoPtSumMin;
578 Int_t nptinconebins = fHistoNPtInConeBins;
579 Float_t ptinconemax = fHistoPtInConeMax;
580 Float_t ptinconemin = fHistoPtInConeMin;
582 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
583 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
584 Float_t r = GetIsolationCut()->GetConeSize();
586 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
590 TString hName [] = {"NoIso",""};
591 TString hTitle[] = {"Not isolated" ,"isolated"};
594 fhELambda0SSBkg = new TH2F
595 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
596 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
597 fhELambda0SSBkg->SetXTitle("E (GeV)");
598 outputContainer->Add(fhELambda0SSBkg) ;
601 for(Int_t iso = 0; iso < 2; iso++)
605 fhTrackMatchedDEta[iso] = new TH2F
606 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
607 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),
608 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
609 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
610 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
612 fhTrackMatchedDPhi[iso] = new TH2F
613 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
614 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),
615 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
616 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
617 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
619 fhTrackMatchedDEtaDPhi[iso] = new TH2F
620 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
621 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),
622 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
623 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
624 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
626 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
627 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
628 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
630 fhdEdx[iso] = new TH2F
631 (Form("hdEdx%s",hName[iso].Data()),
632 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),
633 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
634 fhdEdx[iso]->SetXTitle("E (GeV)");
635 fhdEdx[iso]->SetYTitle("<dE/dx>");
636 outputContainer->Add(fhdEdx[iso]);
638 fhEOverP[iso] = new TH2F
639 (Form("hEOverP%s",hName[iso].Data()),
640 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),
641 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
642 fhEOverP[iso]->SetXTitle("E (GeV)");
643 fhEOverP[iso]->SetYTitle("E/p");
644 outputContainer->Add(fhEOverP[iso]);
648 fhTrackMatchedMCParticle[iso] = new TH2F
649 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
650 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),
651 nptbins,ptmin,ptmax,8,0,8);
652 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
653 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
655 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
656 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
657 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
658 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
659 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
660 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
661 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
662 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
664 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
670 fhELambda0[iso] = new TH2F
671 (Form("hELambda0%s",hName[iso].Data()),
672 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
673 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
674 fhELambda0[iso]->SetXTitle("E (GeV)");
675 outputContainer->Add(fhELambda0[iso]) ;
679 fhELambda0MCPhoton[iso] = new TH2F
680 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
681 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
682 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
683 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
684 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
686 fhELambda0MCPi0[iso] = new TH2F
687 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
688 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
689 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
690 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
691 outputContainer->Add(fhELambda0MCPi0[iso]) ;
693 fhELambda0MCPi0Decay[iso] = new TH2F
694 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
695 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
696 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
697 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
698 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
700 fhELambda0MCEtaDecay[iso] = new TH2F
701 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
702 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
703 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
704 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
705 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
707 fhELambda0MCOtherDecay[iso] = new TH2F
708 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
709 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
710 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
711 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
712 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
714 fhELambda0MCHadron[iso] = new TH2F
715 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
716 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
717 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
718 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
719 outputContainer->Add(fhELambda0MCHadron[iso]) ;
722 fhELambda1[iso] = new TH2F
723 (Form("hELambda1%s",hName[iso].Data()),
724 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
725 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
726 fhELambda1[iso]->SetXTitle("E (GeV)");
727 outputContainer->Add(fhELambda1[iso]) ;
729 if(fCalorimeter=="EMCAL")
731 fhELambda0TRD[iso] = new TH2F
732 (Form("hELambda0TRD%s",hName[iso].Data()),
733 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
734 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
735 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
736 outputContainer->Add(fhELambda0TRD[iso]) ;
738 fhELambda1TRD[iso] = new TH2F
739 (Form("hELambda1TRD%s",hName[iso].Data()),
740 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
741 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
742 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
743 outputContainer->Add(fhELambda1TRD[iso]) ;
746 fhNLocMax[iso] = new TH2F
747 (Form("hNLocMax%s",hName[iso].Data()),
748 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
749 nptbins,ptmin,ptmax,10,0,10);
750 fhNLocMax[iso]->SetYTitle("N maxima");
751 fhNLocMax[iso]->SetXTitle("E (GeV)");
752 outputContainer->Add(fhNLocMax[iso]) ;
754 fhELambda0LocMax1[iso] = new TH2F
755 (Form("hELambda0LocMax1%s",hName[iso].Data()),
756 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
757 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
758 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
759 outputContainer->Add(fhELambda0LocMax1[iso]) ;
761 fhELambda1LocMax1[iso] = new TH2F
762 (Form("hELambda1LocMax1%s",hName[iso].Data()),
763 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
764 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
765 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
766 outputContainer->Add(fhELambda1LocMax1[iso]) ;
768 fhELambda0LocMax2[iso] = new TH2F
769 (Form("hELambda0LocMax2%s",hName[iso].Data()),
770 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
771 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
772 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
773 outputContainer->Add(fhELambda0LocMax2[iso]) ;
775 fhELambda1LocMax2[iso] = new TH2F
776 (Form("hELambda1LocMax2%s",hName[iso].Data()),
777 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
778 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
779 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
780 outputContainer->Add(fhELambda1LocMax2[iso]) ;
782 fhELambda0LocMaxN[iso] = new TH2F
783 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
784 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
785 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
786 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
787 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
789 fhELambda1LocMaxN[iso] = new TH2F
790 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
791 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
792 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
793 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
794 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
797 } // control histograms for isolated and non isolated objects
799 fhConeSumPt = new TH2F("hConePtSum",
800 Form("#Sigma p_{T} in isolation cone for R = %2.2f",r),
801 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
802 fhConeSumPt->SetYTitle("#Sigma p_{T}");
803 fhConeSumPt->SetXTitle("p_{T} (GeV/c)");
804 outputContainer->Add(fhConeSumPt) ;
806 fhPtInCone = new TH2F("hPtInCone",
807 Form("p_{T} of clusters and tracks in isolation cone for R = %2.2f",r),
808 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
809 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
810 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
811 outputContainer->Add(fhPtInCone) ;
813 fhPtTrackInCone = new TH2F("hPtTrackInCone",
814 Form("p_{T} of tracks in isolation cone for R = %2.2f",r),
815 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
816 fhPtTrackInCone->SetYTitle("p_{T in cone} (GeV/c)");
817 fhPtTrackInCone->SetXTitle("p_{T} (GeV/c)");
818 outputContainer->Add(fhPtTrackInCone) ;
820 if(fFillPileUpHistograms)
822 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
823 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0",r),
824 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
825 fhPtTrackInConeOtherBC->SetYTitle("p_{T in cone} (GeV/c)");
826 fhPtTrackInConeOtherBC->SetXTitle("p_{T} (GeV/c)");
827 outputContainer->Add(fhPtTrackInConeOtherBC) ;
829 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
830 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0, pile-up from SPD",r),
831 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
832 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
833 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("p_{T} (GeV/c)");
834 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
836 fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0",
837 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0",r),
838 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
839 fhPtTrackInConeBC0->SetYTitle("p_{T in cone} (GeV/c)");
840 fhPtTrackInConeBC0->SetXTitle("p_{T} (GeV/c)");
841 outputContainer->Add(fhPtTrackInConeBC0) ;
843 fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD",
844 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC==0, pile-up from SPD",r),
845 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
846 fhPtTrackInConeBC0PileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
847 fhPtTrackInConeBC0PileUpSPD->SetXTitle("p_{T} (GeV/c)");
848 outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ;
851 for (Int_t i = 0; i < 7 ; i++)
853 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
854 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
855 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
856 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/c)");
857 fhPtInConePileUp[i]->SetXTitle("p_{T} (GeV/c)");
858 outputContainer->Add(fhPtInConePileUp[i]) ;
862 fhPtInConeCent = new TH2F("hPtInConeCent",
863 Form("p_{T} in isolation cone for R = %2.2f",r),
864 100,0,100,nptinconebins,ptinconemin,ptinconemax);
865 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
866 fhPtInConeCent->SetXTitle("centrality");
867 outputContainer->Add(fhPtInConeCent) ;
869 fhFRConeSumPt = new TH2F("hFRConePtSum",
870 Form("#Sigma p_{T} in the forward region isolation cone for R = %2.2f",r),
871 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
872 fhFRConeSumPt->SetYTitle("#Sigma p_{T}");
873 fhFRConeSumPt->SetXTitle("p_{T} (GeV/c)");
874 outputContainer->Add(fhFRConeSumPt) ;
876 fhPtInFRCone = new TH2F("hPtInFRCone",
877 Form("p_{T} in forward region isolation cone for R = %2.2f",r),
878 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
879 fhPtInFRCone->SetYTitle("p_{T in cone} (GeV/c)");
880 fhPtInFRCone->SetXTitle("p_{T} (GeV/c)");
881 outputContainer->Add(fhPtInFRCone) ;
883 fhPhiUEConeSumPt = new TH2F("hPhiUEConeSumPt",
884 Form("p_{T} in phi band around isolation cone for R = %2.2f",r),
885 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
886 fhPhiUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
887 fhPhiUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
888 outputContainer->Add(fhPhiUEConeSumPt) ;
890 fhEtaUEConeSumPt = new TH2F("hEtaUEConeSumPt",
891 Form("p_{T} in eta band around isolation cone for R = %2.2f",r),
892 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
893 fhEtaUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
894 fhEtaUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
895 outputContainer->Add(fhEtaUEConeSumPt) ;
897 fhEtaBand = new TH2F("fhEtaBand",
898 Form("Eta/Phi of particle in Eta band isolation cone for R = %2.2f",r),
899 netabins,etamin,etamax,nphibins,phimin,phimax);
900 fhEtaBand->SetXTitle("#eta");
901 fhEtaBand->SetYTitle("#phi");
902 outputContainer->Add(fhEtaBand) ;
904 fhPhiBand = new TH2F("fhPhiBand",
905 Form("Eta/Phi of particle in Phi band isolation cone for R = %2.2f",r),
906 netabins,etamin,etamax,nphibins,phimin,phimax);
907 fhPhiBand->SetXTitle("#eta");
908 fhPhiBand->SetYTitle("#phi");
909 outputContainer->Add(fhPhiBand) ;
911 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
912 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
913 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
914 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
915 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
916 outputContainer->Add(fhConeSumPtEtaUESub) ;
918 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
919 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
920 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
921 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
922 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
923 outputContainer->Add(fhConeSumPtPhiUESub) ;
925 fhEIso = new TH1F("hE",
926 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
927 nptbins,ptmin,ptmax);
928 fhEIso->SetYTitle("dN / dE");
929 fhEIso->SetXTitle("E (GeV/c)");
930 outputContainer->Add(fhEIso) ;
932 fhPtIso = new TH1F("hPt",
933 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),
934 nptbins,ptmin,ptmax);
935 fhPtIso->SetYTitle("dN / p_{T}");
936 fhPtIso->SetXTitle("p_{T} (GeV/c)");
937 outputContainer->Add(fhPtIso) ;
939 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
940 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),
941 nptbins,ptmin,ptmax,10,0,10);
942 fhPtNLocMaxIso->SetYTitle("NLM");
943 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
944 outputContainer->Add(fhPtNLocMaxIso) ;
946 fhPhiIso = new TH2F("hPhi",
947 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
948 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
949 fhPhiIso->SetYTitle("#phi");
950 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
951 outputContainer->Add(fhPhiIso) ;
953 fhEtaIso = new TH2F("hEta",
954 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
955 nptbins,ptmin,ptmax,netabins,etamin,etamax);
956 fhEtaIso->SetYTitle("#eta");
957 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
958 outputContainer->Add(fhEtaIso) ;
960 fhEtaPhiIso = new TH2F("hEtaPhiIso",
961 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),
962 netabins,etamin,etamax,nphibins,phimin,phimax);
963 fhEtaPhiIso->SetXTitle("#eta");
964 fhEtaPhiIso->SetYTitle("#phi");
965 outputContainer->Add(fhEtaPhiIso) ;
967 fhPtDecayIso = new TH1F("hPtDecayIso",
968 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),
969 nptbins,ptmin,ptmax);
970 fhPtDecayIso->SetYTitle("N");
971 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
972 outputContainer->Add(fhPtDecayIso) ;
974 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
975 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),
976 netabins,etamin,etamax,nphibins,phimin,phimax);
977 fhEtaPhiDecayIso->SetXTitle("#eta");
978 fhEtaPhiDecayIso->SetYTitle("#phi");
979 outputContainer->Add(fhEtaPhiDecayIso) ;
983 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
984 fhPtIsoPrompt->SetYTitle("N");
985 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
986 outputContainer->Add(fhPtIsoPrompt) ;
988 fhPhiIsoPrompt = new TH2F
989 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
990 fhPhiIsoPrompt->SetYTitle("#phi");
991 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
992 outputContainer->Add(fhPhiIsoPrompt) ;
994 fhEtaIsoPrompt = new TH2F
995 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
996 fhEtaIsoPrompt->SetYTitle("#eta");
997 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
998 outputContainer->Add(fhEtaIsoPrompt) ;
1000 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
1001 fhPtIsoFragmentation->SetYTitle("N");
1002 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
1003 outputContainer->Add(fhPtIsoFragmentation) ;
1005 fhPhiIsoFragmentation = new TH2F
1006 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1007 fhPhiIsoFragmentation->SetYTitle("#phi");
1008 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
1009 outputContainer->Add(fhPhiIsoFragmentation) ;
1011 fhEtaIsoFragmentation = new TH2F
1012 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1013 fhEtaIsoFragmentation->SetYTitle("#eta");
1014 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
1015 outputContainer->Add(fhEtaIsoFragmentation) ;
1017 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
1018 fhPtIsoPi0->SetYTitle("N");
1019 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
1020 outputContainer->Add(fhPtIsoPi0) ;
1022 fhPhiIsoPi0 = new TH2F
1023 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1024 fhPhiIsoPi0->SetYTitle("#phi");
1025 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
1026 outputContainer->Add(fhPhiIsoPi0) ;
1028 fhEtaIsoPi0 = new TH2F
1029 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1030 fhEtaIsoPi0->SetYTitle("#eta");
1031 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
1032 outputContainer->Add(fhEtaIsoPi0) ;
1034 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
1035 fhPtIsoPi0Decay->SetYTitle("N");
1036 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
1037 outputContainer->Add(fhPtIsoPi0Decay) ;
1039 fhPhiIsoPi0Decay = new TH2F
1040 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1041 fhPhiIsoPi0Decay->SetYTitle("#phi");
1042 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
1043 outputContainer->Add(fhPhiIsoPi0Decay) ;
1045 fhEtaIsoPi0Decay = new TH2F
1046 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1047 fhEtaIsoPi0Decay->SetYTitle("#eta");
1048 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
1049 outputContainer->Add(fhEtaIsoPi0Decay) ;
1051 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
1052 fhPtIsoEtaDecay->SetYTitle("N");
1053 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
1054 outputContainer->Add(fhPtIsoEtaDecay) ;
1056 fhPhiIsoEtaDecay = new TH2F
1057 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1058 fhPhiIsoEtaDecay->SetYTitle("#phi");
1059 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1060 outputContainer->Add(fhPhiIsoEtaDecay) ;
1062 fhEtaIsoEtaDecay = new TH2F
1063 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1064 fhEtaIsoEtaDecay->SetYTitle("#eta");
1065 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1066 outputContainer->Add(fhEtaIsoEtaDecay) ;
1068 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
1069 fhPtIsoOtherDecay->SetYTitle("N");
1070 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
1071 outputContainer->Add(fhPtIsoOtherDecay) ;
1073 fhPhiIsoOtherDecay = new TH2F
1074 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1075 fhPhiIsoOtherDecay->SetYTitle("#phi");
1076 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1077 outputContainer->Add(fhPhiIsoOtherDecay) ;
1079 fhEtaIsoOtherDecay = new TH2F
1080 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1081 fhEtaIsoOtherDecay->SetYTitle("#eta");
1082 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1083 outputContainer->Add(fhEtaIsoOtherDecay) ;
1085 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
1086 // fhPtIsoConversion->SetYTitle("N");
1087 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
1088 // outputContainer->Add(fhPtIsoConversion) ;
1090 // fhPhiIsoConversion = new TH2F
1091 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1092 // fhPhiIsoConversion->SetYTitle("#phi");
1093 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1094 // outputContainer->Add(fhPhiIsoConversion) ;
1096 // fhEtaIsoConversion = new TH2F
1097 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1098 // fhEtaIsoConversion->SetYTitle("#eta");
1099 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1100 // outputContainer->Add(fhEtaIsoConversion) ;
1102 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
1103 fhPtIsoHadron->SetYTitle("N");
1104 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
1105 outputContainer->Add(fhPtIsoHadron) ;
1108 fhPhiIsoHadron = new TH2F
1109 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1110 fhPhiIsoHadron->SetYTitle("#phi");
1111 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
1112 outputContainer->Add(fhPhiIsoHadron) ;
1114 fhEtaIsoHadron = new TH2F
1115 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1116 fhEtaIsoHadron->SetYTitle("#eta");
1117 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
1118 outputContainer->Add(fhEtaIsoHadron) ;
1124 // Not Isolated histograms, reference histograms
1126 fhENoIso = new TH1F("hENoIso",
1127 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),
1128 nptbins,ptmin,ptmax);
1129 fhENoIso->SetYTitle("N");
1130 fhENoIso->SetXTitle("p_{T}(GeV/c)");
1131 outputContainer->Add(fhENoIso) ;
1133 fhPtNoIso = new TH1F("hPtNoIso",
1134 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),
1135 nptbins,ptmin,ptmax);
1136 fhPtNoIso->SetYTitle("N");
1137 fhPtNoIso->SetXTitle("p_{T}(GeV/c)");
1138 outputContainer->Add(fhPtNoIso) ;
1140 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
1141 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),
1142 nptbins,ptmin,ptmax,10,0,10);
1143 fhPtNLocMaxNoIso->SetYTitle("NLM");
1144 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
1145 outputContainer->Add(fhPtNLocMaxNoIso) ;
1147 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
1148 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),
1149 netabins,etamin,etamax,nphibins,phimin,phimax);
1150 fhEtaPhiNoIso->SetXTitle("#eta");
1151 fhEtaPhiNoIso->SetYTitle("#phi");
1152 outputContainer->Add(fhEtaPhiNoIso) ;
1154 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
1155 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),
1156 nptbins,ptmin,ptmax);
1157 fhPtDecayNoIso->SetYTitle("N");
1158 fhPtDecayNoIso->SetXTitle("p_{T}(GeV/c)");
1159 outputContainer->Add(fhPtDecayNoIso) ;
1161 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
1162 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),
1163 netabins,etamin,etamax,nphibins,phimin,phimax);
1164 fhEtaPhiDecayNoIso->SetXTitle("#eta");
1165 fhEtaPhiDecayNoIso->SetYTitle("#phi");
1166 outputContainer->Add(fhEtaPhiDecayNoIso) ;
1172 fhPtNoIsoPi0 = new TH1F
1173 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
1174 fhPtNoIsoPi0->SetYTitle("N");
1175 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
1176 outputContainer->Add(fhPtNoIsoPi0) ;
1178 fhPtNoIsoPi0Decay = new TH1F
1179 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
1180 fhPtNoIsoPi0Decay->SetYTitle("N");
1181 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
1182 outputContainer->Add(fhPtNoIsoPi0Decay) ;
1184 fhPtNoIsoEtaDecay = new TH1F
1185 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
1186 fhPtNoIsoEtaDecay->SetYTitle("N");
1187 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
1188 outputContainer->Add(fhPtNoIsoEtaDecay) ;
1190 fhPtNoIsoOtherDecay = new TH1F
1191 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
1192 fhPtNoIsoOtherDecay->SetYTitle("N");
1193 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
1194 outputContainer->Add(fhPtNoIsoOtherDecay) ;
1196 fhPtNoIsoPrompt = new TH1F
1197 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
1198 fhPtNoIsoPrompt->SetYTitle("N");
1199 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
1200 outputContainer->Add(fhPtNoIsoPrompt) ;
1202 fhPtIsoMCPhoton = new TH1F
1203 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
1204 fhPtIsoMCPhoton->SetYTitle("N");
1205 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1206 outputContainer->Add(fhPtIsoMCPhoton) ;
1208 fhPtNoIsoMCPhoton = new TH1F
1209 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
1210 fhPtNoIsoMCPhoton->SetYTitle("N");
1211 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1212 outputContainer->Add(fhPtNoIsoMCPhoton) ;
1214 // fhPtNoIsoConversion = new TH1F
1215 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
1216 // fhPtNoIsoConversion->SetYTitle("N");
1217 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
1218 // outputContainer->Add(fhPtNoIsoConversion) ;
1220 fhPtNoIsoFragmentation = new TH1F
1221 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
1222 fhPtNoIsoFragmentation->SetYTitle("N");
1223 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
1224 outputContainer->Add(fhPtNoIsoFragmentation) ;
1226 fhPtNoIsoHadron = new TH1F
1227 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
1228 fhPtNoIsoHadron->SetYTitle("N");
1229 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
1230 outputContainer->Add(fhPtNoIsoHadron) ;
1237 const Int_t buffersize = 255;
1238 char name[buffersize];
1239 char title[buffersize];
1240 for(Int_t icone = 0; icone<fNCones; icone++)
1242 // sum pt in cone vs. pt leading
1243 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
1244 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1245 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1246 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1247 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1248 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
1250 // pt in cone vs. pt leading
1251 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
1252 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1253 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1254 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1255 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1256 outputContainer->Add(fhPtLeadingPt[icone]) ;
1258 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
1259 snprintf(name, buffersize,"hFRSumPtLeadingPt_Cone_%d",icone);
1260 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1261 fhFRSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1262 fhFRSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1263 fhFRSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1264 outputContainer->Add(fhFRSumPtLeadingPt[icone]) ;
1266 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
1267 snprintf(name, buffersize,"hFRPtLeadingPt_Cone_%d",icone);
1268 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1269 fhFRPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1270 fhFRPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1271 fhFRPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1272 outputContainer->Add(fhFRPtLeadingPt[icone]) ;
1277 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
1278 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1279 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1280 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1281 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
1282 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
1284 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
1285 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
1286 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1287 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1288 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
1289 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
1291 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
1292 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1293 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1294 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1295 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
1296 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
1298 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
1299 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1300 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1301 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1302 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
1303 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
1305 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
1306 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1307 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1308 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1309 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1310 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
1312 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
1313 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1314 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1315 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1316 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1317 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
1319 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
1320 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1321 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1322 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1323 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
1324 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
1326 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
1327 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1328 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1329 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1330 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
1331 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
1335 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
1338 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
1339 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1340 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1341 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1342 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
1344 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
1345 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1346 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1347 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1348 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
1351 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
1352 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1353 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1354 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1355 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1356 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
1358 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
1359 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]);
1360 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1361 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1362 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1363 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
1365 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
1366 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]);
1367 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1368 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1369 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1370 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
1372 // pt decays isolated
1373 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1374 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]);
1375 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1376 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1377 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
1379 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1380 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]);
1381 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1382 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1383 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
1385 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1386 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]);
1387 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1388 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1389 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1390 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
1392 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1393 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]);
1394 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1395 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1396 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1397 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
1399 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1400 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]);
1401 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1402 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1403 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1404 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
1408 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
1409 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1410 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1411 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
1412 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
1413 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
1415 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
1416 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1417 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1418 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
1419 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
1420 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
1422 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
1423 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1424 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1425 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
1426 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
1427 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
1429 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
1430 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]);
1431 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1432 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
1433 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
1434 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
1436 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
1437 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]);
1438 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1439 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
1440 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
1441 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
1444 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1445 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]);
1446 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1447 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
1448 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
1449 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
1451 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1452 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]);
1453 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1454 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
1455 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
1456 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
1459 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1460 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]);
1461 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1462 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1463 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1464 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
1466 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1467 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]);
1468 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1469 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
1470 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
1471 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
1473 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1474 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]);
1475 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1476 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1477 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1478 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
1483 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
1484 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1485 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1486 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1487 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
1489 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
1490 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1491 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1492 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1493 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
1495 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1496 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1497 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1498 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1499 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
1501 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1502 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1503 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1504 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1505 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
1507 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
1508 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1509 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1510 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1511 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
1513 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
1514 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1515 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1516 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1517 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
1519 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1520 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1521 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1522 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1523 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
1525 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1526 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1527 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1528 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1529 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
1531 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1532 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1533 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1534 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1535 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
1537 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1538 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1539 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1540 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1541 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
1544 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1545 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1546 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1547 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1548 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
1550 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1551 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1552 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1553 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1554 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
1556 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
1557 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1558 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1559 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1560 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
1562 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
1563 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1564 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1565 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1566 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
1568 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
1569 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1570 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1571 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1572 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
1574 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
1575 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1576 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1577 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1578 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
1585 if(fFillPileUpHistograms)
1587 for (Int_t i = 0; i < 7 ; i++)
1589 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
1590 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()),
1591 nptbins,ptmin,ptmax);
1592 fhEIsoPileUp[i]->SetYTitle("dN / dE");
1593 fhEIsoPileUp[i]->SetXTitle("E (GeV/c)");
1594 outputContainer->Add(fhEIsoPileUp[i]) ;
1596 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
1597 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()),
1598 nptbins,ptmin,ptmax);
1599 fhPtIsoPileUp[i]->SetYTitle("dN / p_{T}");
1600 fhPtIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
1601 outputContainer->Add(fhPtIsoPileUp[i]) ;
1603 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
1604 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()),
1605 nptbins,ptmin,ptmax);
1606 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
1607 fhENoIsoPileUp[i]->SetXTitle("E (GeV/c)");
1608 outputContainer->Add(fhENoIsoPileUp[i]) ;
1610 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
1611 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()),
1612 nptbins,ptmin,ptmax);
1613 fhPtNoIsoPileUp[i]->SetYTitle("dN / p_{T}");
1614 fhPtNoIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
1615 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
1618 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1619 fhTimeENoCut->SetXTitle("E (GeV)");
1620 fhTimeENoCut->SetYTitle("time (ns)");
1621 outputContainer->Add(fhTimeENoCut);
1623 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1624 fhTimeESPD->SetXTitle("E (GeV)");
1625 fhTimeESPD->SetYTitle("time (ns)");
1626 outputContainer->Add(fhTimeESPD);
1628 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1629 fhTimeESPDMulti->SetXTitle("E (GeV)");
1630 fhTimeESPDMulti->SetYTitle("time (ns)");
1631 outputContainer->Add(fhTimeESPDMulti);
1633 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1634 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
1635 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
1636 outputContainer->Add(fhTimeNPileUpVertSPD);
1638 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
1639 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
1640 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
1641 outputContainer->Add(fhTimeNPileUpVertTrack);
1643 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1644 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
1645 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
1646 outputContainer->Add(fhTimeNPileUpVertContributors);
1648 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);
1649 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
1650 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
1651 outputContainer->Add(fhTimePileUpMainVertexZDistance);
1653 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
1654 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
1655 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
1656 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
1659 return outputContainer ;
1663 //__________________________________
1664 void AliAnaParticleIsolation::Init()
1666 // Do some checks and init stuff
1668 // In case of several cone and thresholds analysis, open the cuts for the filling of the
1669 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
1670 // The different cones, thresholds are tested for this list of tracks, clusters.
1673 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
1674 GetIsolationCut()->SetPtThreshold(100);
1675 GetIsolationCut()->SetPtFraction(100);
1676 GetIsolationCut()->SetConeSize(1);
1680 //____________________________________________
1681 void AliAnaParticleIsolation::InitParameters()
1684 //Initialize the parameters of the analysis.
1685 SetInputAODName("PWG4Particle");
1686 SetAODObjArrayName("IsolationCone");
1687 AddToHistogramsName("AnaIsolation_");
1689 fCalorimeter = "PHOS" ;
1690 fReMakeIC = kFALSE ;
1691 fMakeSeveralIC = kFALSE ;
1693 //----------- Several IC-----------------
1696 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
1697 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
1698 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
1699 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
1701 //------------- Histograms settings -------
1702 fHistoNPtSumBins = 100 ;
1703 fHistoPtSumMax = 50 ;
1704 fHistoPtSumMin = 0. ;
1706 fHistoNPtInConeBins = 100 ;
1707 fHistoPtInConeMax = 50 ;
1708 fHistoPtInConeMin = 0. ;
1712 //__________________________________________________
1713 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
1715 //Do analysis and fill aods
1716 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
1718 if(!GetInputAODBranch())
1720 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
1724 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
1726 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());
1730 Int_t n = 0, nfrac = 0;
1731 Bool_t isolated = kFALSE ;
1732 Float_t coneptsum = 0 ;
1733 TObjArray * pl = 0x0; ;
1735 //Select the calorimeter for candidate isolation with neutral particles
1736 if (fCalorimeter == "PHOS" )
1737 pl = GetPHOSClusters();
1738 else if (fCalorimeter == "EMCAL")
1739 pl = GetEMCALClusters();
1741 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
1742 Double_t ptLeading = 0. ;
1743 Int_t idLeading = -1 ;
1744 TLorentzVector mom ;
1745 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1746 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
1748 for(Int_t iaod = 0; iaod < naod; iaod++)
1750 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1752 //If too small or too large pt, skip
1753 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
1755 //check if it is low pt trigger particle
1756 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
1757 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
1760 continue ; //trigger should not come from underlying event
1763 //vertex cut in case of mixing
1764 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
1765 if(check == 0) continue;
1766 if(check == -1) return;
1768 //find the leading particles with highest momentum
1769 if ( aodinput->Pt() > ptLeading )
1771 ptLeading = aodinput->Pt() ;
1775 aodinput->SetLeadingParticle(kFALSE);
1777 }//finish searching for leading trigger particle
1779 // Check isolation of leading particle
1780 if(idLeading < 0) return;
1782 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
1783 aodinput->SetLeadingParticle(kTRUE);
1785 // Check isolation only of clusters in fiducial region
1786 if(IsFiducialCutOn())
1788 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
1792 //After cuts, study isolation
1793 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1794 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
1795 GetReader(), GetCaloPID(),
1796 kTRUE, aodinput, GetAODObjArrayName(),
1797 n,nfrac,coneptsum, isolated);
1799 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
1803 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
1804 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
1809 //_________________________________________________________
1810 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
1812 //Do analysis and fill histograms
1814 Int_t n = 0, nfrac = 0;
1815 Bool_t isolated = kFALSE ;
1816 Float_t coneptsum = 0 ;
1817 Float_t etaUEptsum = 0 ;
1818 Float_t phiUEptsum = 0 ;
1820 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
1822 //Loop on stored AOD
1823 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1824 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
1826 //Get vertex for photon momentum calculation
1827 Double_t vertex[] = {0,0,0} ; //vertex ;
1828 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
1830 GetReader()->GetVertex(vertex);
1833 for(Int_t iaod = 0; iaod < naod ; iaod++)
1835 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1837 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
1839 // Check isolation only of clusters in fiducial region
1840 if(IsFiducialCutOn())
1842 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
1843 if(! in ) continue ;
1846 Bool_t isolation = aod->IsIsolated();
1847 Bool_t decay = aod->IsTagged();
1848 Float_t energy = aod->E();
1849 Float_t pt = aod->Pt();
1850 Float_t phi = aod->Phi();
1851 Float_t eta = aod->Eta();
1852 Float_t conesize = GetIsolationCut()->GetConeSize();
1854 //Recover reference arrays with clusters and tracks
1855 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
1856 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
1858 //If too small or too large pt, skip
1859 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
1861 // --- In case of redoing isolation from delta AOD ----
1865 //Analysis of multiple IC at same time
1866 MakeSeveralICAnalysis(aod);
1871 //In case a more strict IC is needed in the produced AOD
1872 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1873 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
1874 GetReader(), GetCaloPID(),
1876 n,nfrac,coneptsum, isolated);
1877 fhConeSumPt->Fill(pt,coneptsum);
1878 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1881 // ---------------------------------------------------
1883 //Fill pt distribution of particles in cone
1886 Double_t sumptFR = 0. ;
1887 TObjArray * trackList = GetCTSTracks() ;
1888 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
1890 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
1894 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
1898 //fill histogram for UE in phi band
1899 if(track->Eta() > (eta-conesize) && track->Eta() < (eta+conesize))
1901 phiUEptsum+=track->Pt();
1902 fhPhiBand->Fill(track->Eta(),track->Phi());
1904 //fill histogram for UE in eta band in EMCal acceptance
1905 if(track->Phi() > (phi-conesize) && track->Phi() < (phi+conesize) && track->Eta() > -0.6 && track->Eta() < 0.6)
1907 etaUEptsum+=track->Pt();
1908 fhEtaBand->Fill(track->Eta(),track->Phi());
1911 //fill the histograms at forward range
1912 Double_t dPhi = phi - track->Phi() + TMath::PiOver2();
1913 Double_t dEta = eta - track->Eta();
1914 Double_t arg = dPhi*dPhi + dEta*dEta;
1915 if(TMath::Sqrt(arg) < conesize)
1917 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1918 sumptFR+=track->Pt();
1921 dPhi = phi - track->Phi() - TMath::PiOver2();
1922 arg = dPhi*dPhi + dEta*dEta;
1923 if(TMath::Sqrt(arg) < conesize)
1925 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1926 sumptFR+=track->Pt();
1930 fhFRConeSumPt->Fill(pt,sumptFR);
1933 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1935 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1936 Float_t pTtrack = track->Pt();
1937 fhPtInCone ->Fill(pt,pTtrack);
1938 fhPtTrackInCone->Fill(pt,pTtrack);
1939 if(fFillPileUpHistograms)
1941 ULong_t status = track->GetStatus();
1942 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1943 //Double32_t tof = track->GetTOFsignal()*1e-3;
1944 Int_t trackBC = track->GetTOFBunchCrossing(bz);
1946 if ( okTOF && trackBC!=0 )fhPtTrackInConeOtherBC->Fill(pt,pTtrack);
1947 else if( okTOF && trackBC==0 )fhPtTrackInConeBC0 ->Fill(pt,pTtrack);
1949 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(pt,pTtrack);
1950 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(pt,pTtrack);
1951 if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(pt,pTtrack); }
1952 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(pt,pTtrack);
1953 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(pt,pTtrack);
1954 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(pt,pTtrack);
1955 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(pt,pTtrack);
1956 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(pt,pTtrack);
1957 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(pt,pTtrack);
1960 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1968 TLorentzVector mom ;
1969 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
1971 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
1972 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
1974 //fill histogram for UE in phi band
1975 if(mom.Eta() > (eta-conesize) && mom.Eta() < (eta+conesize))
1977 phiUEptsum+=mom.Pt();
1978 fhPhiBand->Fill(mom.Eta(),mom.Phi());
1980 //fill histogram for UE in eta band in EMCal acceptance
1981 if(mom.Phi() > (phi-conesize) && mom.Phi() < (phi+conesize))
1983 etaUEptsum+=mom.Pt();
1984 fhEtaBand->Fill(mom.Eta(),mom.Phi());
1987 fhPtInCone->Fill(pt, mom.Pt());
1988 if(fFillPileUpHistograms)
1990 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(pt,mom.Pt());
1991 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(pt,mom.Pt());
1992 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(pt,mom.Pt());
1993 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(pt,mom.Pt());
1994 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(pt,mom.Pt());
1995 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(pt,mom.Pt());
1996 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(pt,mom.Pt());
1999 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
2000 coneptsum+=mom.Pt();
2004 //normalize phi/eta band per area unit
2005 fhPhiUEConeSumPt->Fill(pt, phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
2006 fhEtaUEConeSumPt->Fill(pt, etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
2008 Double_t sumPhiUESub = coneptsum-(phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
2009 Double_t sumEtaUESub = coneptsum-(etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
2011 fhConeSumPtPhiUESub->Fill(pt,sumPhiUESub);
2012 fhConeSumPtEtaUESub->Fill(pt,sumEtaUESub);
2015 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsum);
2017 if(!fReMakeIC) fhConeSumPt->Fill(pt,coneptsum);
2019 Int_t mcTag = aod->GetTag() ;
2020 Int_t clID = aod->GetCaloLabel(0) ;
2021 Int_t nlm = aod->GetFiducialArea();
2022 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
2024 FillTrackMatchingShowerShapeControlHistograms(isolation, clID,nlm,mcTag,reftracks,refclusters,aod,GetReader(), GetCaloPID());
2028 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
2030 // Fill histograms to undertand pile-up before other cuts applied
2031 // Remember to relax time cuts in the reader
2032 FillPileUpHistograms(clID);
2034 fhEIso ->Fill(energy);
2036 fhPhiIso ->Fill(pt,phi);
2037 fhEtaIso ->Fill(pt,eta);
2038 fhEtaPhiIso ->Fill(eta,phi);
2039 fhPtNLocMaxIso->Fill(pt,nlm);
2043 fhPtDecayIso->Fill(pt);
2044 fhEtaPhiDecayIso->Fill(eta,phi);
2047 if(fFillPileUpHistograms)
2049 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
2050 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
2051 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
2052 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
2053 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
2054 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
2055 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
2061 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
2063 fhPtIsoMCPhoton ->Fill(pt);
2066 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
2068 fhPtIsoPrompt ->Fill(pt);
2069 fhPhiIsoPrompt ->Fill(pt,phi);
2070 fhEtaIsoPrompt ->Fill(pt,eta);
2072 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
2074 fhPtIsoFragmentation ->Fill(pt);
2075 fhPhiIsoFragmentation ->Fill(pt,phi);
2076 fhEtaIsoFragmentation ->Fill(pt,eta);
2078 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
2080 fhPtIsoPi0 ->Fill(pt);
2081 fhPhiIsoPi0 ->Fill(pt,phi);
2082 fhEtaIsoPi0 ->Fill(pt,eta);
2084 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
2086 fhPtIsoPi0Decay ->Fill(pt);
2087 fhPhiIsoPi0Decay ->Fill(pt,phi);
2088 fhEtaIsoPi0Decay ->Fill(pt,eta);
2090 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
2092 fhPtIsoEtaDecay ->Fill(pt);
2093 fhPhiIsoEtaDecay ->Fill(pt,phi);
2094 fhEtaIsoEtaDecay ->Fill(pt,eta);
2096 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
2098 fhPtIsoOtherDecay ->Fill(pt);
2099 fhPhiIsoOtherDecay ->Fill(pt,phi);
2100 fhEtaIsoOtherDecay ->Fill(pt,eta);
2102 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
2104 // fhPtIsoConversion ->Fill(pt);
2105 // fhPhiIsoConversion ->Fill(pt,phi);
2106 // fhEtaIsoConversion ->Fill(pt,eta);
2108 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
2110 fhPtIsoHadron ->Fill(pt);
2111 fhPhiIsoHadron ->Fill(pt,phi);
2112 fhEtaIsoHadron ->Fill(pt,eta);
2114 }//Histograms with MC
2116 }//Isolated histograms
2117 else // NON isolated
2119 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
2121 fhENoIso ->Fill(energy);
2122 fhPtNoIso ->Fill(pt);
2123 fhEtaPhiNoIso ->Fill(eta,phi);
2124 fhPtNLocMaxNoIso->Fill(pt,nlm);
2126 if(fFillPileUpHistograms)
2128 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
2129 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
2130 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
2131 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
2132 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
2133 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
2134 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
2139 fhPtDecayNoIso ->Fill(pt);
2140 fhEtaPhiDecayNoIso->Fill(eta,phi);
2145 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
2146 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
2147 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
2148 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
2149 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
2150 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
2151 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
2152 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
2153 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
2161 //_____________________________________________________________________________________
2162 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
2165 //Isolation Cut Analysis for both methods and different pt cuts and cones
2166 Float_t ptC = ph->Pt();
2167 Float_t etaC = ph->Eta();
2168 Float_t phiC = ph->Phi();
2169 Int_t tag = ph->GetTag();
2170 Bool_t decay = ph->IsTagged();
2172 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
2174 //Keep original setting used when filling AODs, reset at end of analysis
2175 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
2176 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
2177 Float_t rorg = GetIsolationCut()->GetConeSize();
2179 Float_t coneptsum = 0 ;
2180 Int_t n [10][10];//[fNCones][fNPtThresFrac];
2181 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
2182 Bool_t isolated = kFALSE;
2184 Int_t nFracCone = 0;
2186 // fill hist with all particles before isolation criteria
2187 fhPtNoIso ->Fill(ptC);
2188 fhEtaPhiNoIso->Fill(etaC,phiC);
2192 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
2193 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
2194 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
2195 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
2196 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
2197 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
2198 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
2199 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
2200 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
2205 fhPtDecayNoIso ->Fill(ptC);
2206 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
2208 //Get vertex for photon momentum calculation
2209 Double_t vertex[] = {0,0,0} ; //vertex ;
2210 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
2212 GetReader()->GetVertex(vertex);
2215 //Loop on cone sizes
2216 for(Int_t icone = 0; icone<fNCones; icone++)
2218 //Recover reference arrays with clusters and tracks
2219 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
2220 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
2222 //If too small or too large pt, skip
2223 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
2225 //In case a more strict IC is needed in the produced AOD
2227 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
2229 GetIsolationCut()->SetSumPtThreshold(100);
2230 GetIsolationCut()->SetPtThreshold(100);
2231 GetIsolationCut()->SetPtFraction(100);
2232 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
2233 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2234 GetReader(), GetCaloPID(),
2236 nCone,nFracCone,coneptsum, isolated);
2239 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
2241 // retreive pt tracks to fill histo vs. pt leading
2242 //Fill pt distribution of particles in cone
2243 //fhPtLeadingPt(),fhFRSumPtLeadingPt(),fhFRPtLeadingPt(),
2247 Double_t sumptFR = 0. ;
2248 TObjArray * trackList = GetCTSTracks() ;
2249 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
2251 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
2252 //fill the histograms at forward range
2255 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
2259 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
2260 Double_t dEta = etaC - track->Eta();
2261 Double_t arg = dPhi*dPhi + dEta*dEta;
2262 if(TMath::Sqrt(arg) < fConeSizes[icone])
2264 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2265 sumptFR+=track->Pt();
2268 dPhi = phiC - track->Phi() - TMath::PiOver2();
2269 arg = dPhi*dPhi + dEta*dEta;
2270 if(TMath::Sqrt(arg) < fConeSizes[icone])
2272 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2273 sumptFR+=track->Pt();
2276 fhFRSumPtLeadingPt[icone]->Fill(ptC,sumptFR);
2279 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
2281 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
2282 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2283 coneptsum+=track->Pt();
2289 TLorentzVector mom ;
2290 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
2292 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
2293 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
2295 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
2296 coneptsum+=mom.Pt();
2302 //Loop on ptthresholds
2303 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
2306 nfrac[icone][ipt]=0;
2307 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
2308 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
2309 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
2311 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2312 GetReader(), GetCaloPID(),
2314 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2316 if(!isolated) continue;
2317 //Normal ptThreshold cut
2319 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",
2320 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2321 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
2323 if(n[icone][ipt] == 0)
2325 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
2326 fhPtThresIsolated[icone][ipt]->Fill(ptC);
2327 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
2331 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
2332 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
2337 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2338 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2339 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2340 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2341 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2342 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2343 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2344 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
2348 // pt in cone fraction
2349 if(nfrac[icone][ipt] == 0)
2351 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
2352 fhPtFracIsolated[icone][ipt]->Fill(ptC);
2353 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
2357 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
2358 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
2363 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2364 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2365 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2366 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2367 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2368 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2369 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2370 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
2374 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
2376 //Pt threshold on pt cand/ sum in cone histograms
2377 if(coneptsum<fSumPtThresholds[ipt])
2378 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
2379 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
2380 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
2381 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
2384 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
2385 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
2389 // pt sum pt frac method
2390 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
2392 if(coneptsum < fPtFractions[ipt]*ptC)
2394 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
2395 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
2396 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
2400 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
2401 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
2406 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
2407 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
2408 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
2409 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
2410 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
2411 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
2415 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
2416 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
2424 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
2425 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
2426 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
2427 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
2428 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
2429 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
2430 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
2431 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
2436 //Reset original parameters for AOD analysis
2437 GetIsolationCut()->SetPtThreshold(ptthresorg);
2438 GetIsolationCut()->SetPtFraction(ptfracorg);
2439 GetIsolationCut()->SetConeSize(rorg);
2443 //_____________________________________________________________
2444 void AliAnaParticleIsolation::Print(const Option_t * opt) const
2447 //Print some relevant parameters set for the analysis
2451 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
2452 AliAnaCaloTrackCorrBaseClass::Print(" ");
2454 printf("ReMake Isolation = %d \n", fReMakeIC) ;
2455 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
2456 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
2460 printf("N Cone Sizes = %d\n", fNCones) ;
2461 printf("Cone Sizes = \n") ;
2462 for(Int_t i = 0; i < fNCones; i++)
2463 printf(" %1.2f;", fConeSizes[i]) ;
2466 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
2467 printf(" pT thresholds = \n") ;
2468 for(Int_t i = 0; i < fNPtThresFrac; i++)
2469 printf(" %2.2f;", fPtThresholds[i]) ;
2473 printf(" pT fractions = \n") ;
2474 for(Int_t i = 0; i < fNPtThresFrac; i++)
2475 printf(" %2.2f;", fPtFractions[i]) ;
2479 printf("sum pT thresholds = \n") ;
2480 for(Int_t i = 0; i < fNPtThresFrac; i++)
2481 printf(" %2.2f;", fSumPtThresholds[i]) ;
2486 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
2487 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);