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 fhPtNoIso(0), fhPtNLocMaxNoIso(0),
65 fhPtDecayIso(0), fhPtDecayNoIso(0),
66 fhEtaPhiDecayIso(0), fhEtaPhiDecayNoIso(0),
67 fhConeSumPt(0), fhPtInCone(0),
68 fhPtInConePileUp(0), fhPtInConeCent(0),
69 fhFRConeSumPt(0), fhPtInFRCone(0), fhPhiUEConeSumPt(0),
70 fhEtaUEConeSumPt(0), fhEtaBand(0), fhPhiBand(0),
71 fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
73 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
74 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
75 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
76 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
77 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
78 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
79 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
80 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
81 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
82 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
83 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
84 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
85 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
86 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
87 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
88 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
89 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
90 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
91 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
92 //fhPtNoIsoConversion(0),
93 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
95 fhSumPtLeadingPt(), fhPtLeadingPt(),
96 fhFRSumPtLeadingPt(), fhFRPtLeadingPt(),
97 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
98 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
99 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
100 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
101 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
102 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
103 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
104 // Cluster control histograms
105 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
106 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
107 fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
108 fhELambda0TRD(), fhELambda1TRD(),
109 fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
110 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
111 // Number of local maxima in cluster
113 fhELambda0LocMax1(), fhELambda1LocMax1(),
114 fhELambda0LocMax2(), fhELambda1LocMax2(),
115 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
117 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
118 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
119 fhTimeNPileUpVertContributors(0),
120 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
121 // Histograms settings
122 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
123 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
127 //Initialize parameters
130 for(Int_t i = 0; i < 5 ; i++)
134 fhPtSumIsolatedPrompt [i] = 0 ;
135 fhPtSumIsolatedFragmentation[i] = 0 ;
136 fhPtSumIsolatedPi0Decay [i] = 0 ;
137 fhPtSumIsolatedPi0 [i] = 0 ;
138 fhPtSumIsolatedEtaDecay [i] = 0 ;
139 fhPtSumIsolatedOtherDecay [i] = 0 ;
140 // fhPtSumIsolatedConversion [i] = 0 ;
141 fhPtSumIsolatedHadron [i] = 0 ;
143 for(Int_t j = 0; j < 5 ; j++)
145 fhPtThresIsolated [i][j] = 0 ;
146 fhPtFracIsolated [i][j] = 0 ;
147 fhPtSumIsolated [i][j] = 0 ;
149 fhEtaPhiPtThresIso [i][j] = 0 ;
150 fhEtaPhiPtThresDecayIso[i][j] = 0 ;
151 fhPtPtThresDecayIso [i][j] = 0 ;
153 fhEtaPhiPtFracIso [i][j] = 0 ;
154 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
155 fhPtPtFracDecayIso [i][j] = 0 ;
156 fhPtPtSumDecayIso [i][j] = 0 ;
157 fhPtSumDensityIso [i][j] = 0 ;
158 fhPtSumDensityDecayIso [i][j] = 0 ;
159 fhEtaPhiSumDensityIso [i][j] = 0 ;
160 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
161 fhPtFracPtSumIso [i][j] = 0 ;
162 fhPtFracPtSumDecayIso [i][j] = 0 ;
163 fhEtaPhiFracPtSumIso [i][j] = 0 ;
164 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
166 fhPtThresIsolatedPrompt [i][j] = 0 ;
167 fhPtThresIsolatedFragmentation[i][j] = 0 ;
168 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
169 fhPtThresIsolatedPi0 [i][j] = 0 ;
170 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
171 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
172 // fhPtThresIsolatedConversion [i][j] = 0 ;
173 fhPtThresIsolatedHadron [i][j] = 0 ;
175 fhPtFracIsolatedPrompt [i][j] = 0 ;
176 fhPtFracIsolatedFragmentation [i][j] = 0 ;
177 fhPtFracIsolatedPi0 [i][j] = 0 ;
178 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
179 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
180 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
181 // fhPtFracIsolatedConversion [i][j] = 0 ;
182 fhPtFracIsolatedHadron [i][j] = 0 ;
187 for(Int_t i = 0; i < 5 ; i++)
189 fPtFractions [i] = 0 ;
190 fPtThresholds [i] = 0 ;
191 fSumPtThresholds[i] = 0 ;
195 for(Int_t i = 0; i < 2 ; i++)
197 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
198 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
199 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
200 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
202 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
203 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
206 // Number of local maxima in cluster
208 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
209 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
210 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
216 //_________________________________________________________________
217 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
219 // Fill some histograms to understand pile-up
220 if(!fFillPileUpHistograms) return;
224 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
229 TObjArray* clusters = 0x0;
230 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
231 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
234 Float_t time = -1000;
238 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
239 energy = cluster->E();
240 time = cluster->GetTOF()*1e9;
243 //printf("E %f, time %f\n",energy,time);
244 AliVEvent * event = GetReader()->GetInputEvent();
246 fhTimeENoCut->Fill(energy,time);
247 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
248 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
250 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
252 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
253 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
255 // N pile up vertices
256 Int_t nVerticesSPD = -1;
257 Int_t nVerticesTracks = -1;
261 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
262 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
267 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
268 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
271 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
272 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
274 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
275 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
278 Float_t z1 = -1, z2 = -1;
280 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
284 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
285 ncont=pv->GetNContributors();
286 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
288 diamZ = esdEv->GetDiamondZ();
292 AliAODVertex *pv=aodEv->GetVertex(iVert);
293 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
294 ncont=pv->GetNContributors();
295 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
297 diamZ = aodEv->GetDiamondZ();
300 Double_t distZ = TMath::Abs(z2-z1);
301 diamZ = TMath::Abs(z2-diamZ);
303 fhTimeNPileUpVertContributors ->Fill(time,ncont);
304 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
305 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
310 //________________________________________________________________________________________________
311 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(const Bool_t isolated,
312 const Int_t clusterID,
315 const TObjArray * plCTS,
316 const TObjArray * plNe,
317 AliAODPWG4ParticleCorrelation *pCandidate,
318 const AliCaloTrackReader * reader,
319 const AliCaloPID * pid)
321 // Fill Track matching and Shower Shape control histograms
322 if(!fFillTMHisto && !fFillSSHisto) return;
326 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! ", clusterID);
331 TObjArray* clusters = 0x0;
332 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
333 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
338 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
339 Float_t energy = cluster->E();
343 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
344 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
348 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
349 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
350 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
351 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
352 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
353 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
355 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
356 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
360 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
362 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
363 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
366 fhNLocMax[isolated]->Fill(energy,nMaxima);
367 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
368 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
369 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
373 //Analyse non-isolated events
376 Bool_t iso = kFALSE ;
377 Float_t coneptsum = 0 ;
378 GetIsolationCut()->SetPtThresholdMax(1.);
379 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
381 kFALSE, pCandidate, "",
382 n,nfrac,coneptsum, iso);
383 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
386 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
388 GetIsolationCut()->SetPtThresholdMax(10000.);
395 Float_t dZ = cluster->GetTrackDz();
396 Float_t dR = cluster->GetTrackDx();
398 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
400 dR = 2000., dZ = 2000.;
401 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
404 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
405 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
407 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
408 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
409 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
412 // Check dEdx and E/p of matched clusters
414 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
417 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
421 Float_t dEdx = track->GetTPCsignal();
422 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
424 Float_t eOverp = cluster->E()/track->P();
425 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
428 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
433 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
435 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
436 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
437 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
438 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
439 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
444 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
445 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
446 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
447 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
448 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
457 } // clusters array available
461 //______________________________________________________
462 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
464 //Save parameters used for analysis
465 TString parList ; //this will be list of parameters used for this analysis.
466 const Int_t buffersize = 255;
467 char onePar[buffersize] ;
469 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
471 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
473 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
475 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
477 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
479 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
484 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
486 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
489 for(Int_t icone = 0; icone < fNCones ; icone++)
491 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
494 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
496 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
499 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
501 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
504 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
506 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
511 //Get parameters set in base class.
512 parList += GetBaseParametersList() ;
514 //Get parameters set in IC class.
515 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
517 return new TObjString(parList) ;
521 //________________________________________________________
522 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
524 // Create histograms to be saved in output file and
525 // store them in outputContainer
526 TList * outputContainer = new TList() ;
527 outputContainer->SetName("IsolatedParticleHistos") ;
529 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
530 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
531 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
532 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
533 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
534 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
535 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
536 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
537 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
538 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
539 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
540 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
541 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
542 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
543 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
545 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
546 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
547 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
548 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
549 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
550 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
552 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
553 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
554 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
555 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
556 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
557 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
559 Int_t nptsumbins = fHistoNPtSumBins;
560 Float_t ptsummax = fHistoPtSumMax;
561 Float_t ptsummin = fHistoPtSumMin;
562 Int_t nptinconebins = fHistoNPtInConeBins;
563 Float_t ptinconemax = fHistoPtInConeMax;
564 Float_t ptinconemin = fHistoPtInConeMin;
566 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
567 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
568 Float_t r = GetIsolationCut()->GetConeSize();
572 TString hName [] = {"NoIso",""};
573 TString hTitle[] = {"Not isolated" ,"isolated"};
576 fhELambda0SSBkg = new TH2F
577 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
578 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
579 fhELambda0SSBkg->SetXTitle("E (GeV)");
580 outputContainer->Add(fhELambda0SSBkg) ;
583 for(Int_t iso = 0; iso < 2; iso++)
587 fhTrackMatchedDEta[iso] = new TH2F
588 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
589 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),
590 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
591 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
592 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
594 fhTrackMatchedDPhi[iso] = new TH2F
595 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
596 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),
597 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
598 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
599 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
601 fhTrackMatchedDEtaDPhi[iso] = new TH2F
602 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
603 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),
604 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
605 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
606 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
608 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
609 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
610 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
612 fhdEdx[iso] = new TH2F
613 (Form("hdEdx%s",hName[iso].Data()),
614 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),
615 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
616 fhdEdx[iso]->SetXTitle("E (GeV)");
617 fhdEdx[iso]->SetYTitle("<dE/dx>");
618 outputContainer->Add(fhdEdx[iso]);
620 fhEOverP[iso] = new TH2F
621 (Form("hEOverP%s",hName[iso].Data()),
622 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),
623 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
624 fhEOverP[iso]->SetXTitle("E (GeV)");
625 fhEOverP[iso]->SetYTitle("E/p");
626 outputContainer->Add(fhEOverP[iso]);
630 fhTrackMatchedMCParticle[iso] = new TH2F
631 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
632 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),
633 nptbins,ptmin,ptmax,8,0,8);
634 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
635 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
637 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
638 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
639 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
640 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
641 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
642 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
643 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
644 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
646 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
652 fhELambda0[iso] = new TH2F
653 (Form("hELambda0%s",hName[iso].Data()),
654 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
655 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
656 fhELambda0[iso]->SetXTitle("E (GeV)");
657 outputContainer->Add(fhELambda0[iso]) ;
661 fhELambda0MCPhoton[iso] = new TH2F
662 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
663 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
664 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
665 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
666 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
668 fhELambda0MCPi0[iso] = new TH2F
669 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
670 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
671 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
672 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
673 outputContainer->Add(fhELambda0MCPi0[iso]) ;
675 fhELambda0MCPi0Decay[iso] = new TH2F
676 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
677 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
678 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
679 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
680 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
682 fhELambda0MCEtaDecay[iso] = new TH2F
683 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
684 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
685 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
686 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
687 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
689 fhELambda0MCOtherDecay[iso] = new TH2F
690 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
691 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
692 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
693 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
694 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
696 fhELambda0MCHadron[iso] = new TH2F
697 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
698 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
699 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
700 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
701 outputContainer->Add(fhELambda0MCHadron[iso]) ;
704 fhELambda1[iso] = new TH2F
705 (Form("hELambda1%s",hName[iso].Data()),
706 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
707 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
708 fhELambda1[iso]->SetXTitle("E (GeV)");
709 outputContainer->Add(fhELambda1[iso]) ;
711 if(fCalorimeter=="EMCAL")
713 fhELambda0TRD[iso] = new TH2F
714 (Form("hELambda0TRD%s",hName[iso].Data()),
715 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
716 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
717 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
718 outputContainer->Add(fhELambda0TRD[iso]) ;
720 fhELambda1TRD[iso] = new TH2F
721 (Form("hELambda1TRD%s",hName[iso].Data()),
722 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
723 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
724 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
725 outputContainer->Add(fhELambda1TRD[iso]) ;
728 fhNLocMax[iso] = new TH2F
729 (Form("hNLocMax%s",hName[iso].Data()),
730 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
731 nptbins,ptmin,ptmax,10,0,10);
732 fhNLocMax[iso]->SetYTitle("N maxima");
733 fhNLocMax[iso]->SetXTitle("E (GeV)");
734 outputContainer->Add(fhNLocMax[iso]) ;
736 fhELambda0LocMax1[iso] = new TH2F
737 (Form("hELambda0LocMax1%s",hName[iso].Data()),
738 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
739 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
740 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
741 outputContainer->Add(fhELambda0LocMax1[iso]) ;
743 fhELambda1LocMax1[iso] = new TH2F
744 (Form("hELambda1LocMax1%s",hName[iso].Data()),
745 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
746 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
747 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
748 outputContainer->Add(fhELambda1LocMax1[iso]) ;
750 fhELambda0LocMax2[iso] = new TH2F
751 (Form("hELambda0LocMax2%s",hName[iso].Data()),
752 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
753 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
754 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
755 outputContainer->Add(fhELambda0LocMax2[iso]) ;
757 fhELambda1LocMax2[iso] = new TH2F
758 (Form("hELambda1LocMax2%s",hName[iso].Data()),
759 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
760 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
761 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
762 outputContainer->Add(fhELambda1LocMax2[iso]) ;
764 fhELambda0LocMaxN[iso] = new TH2F
765 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
766 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
767 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
768 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
769 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
771 fhELambda1LocMaxN[iso] = new TH2F
772 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
773 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
774 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
775 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
776 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
779 } // control histograms for isolated and non isolated objects
781 fhConeSumPt = new TH2F("hConePtSum",
782 Form("#Sigma p_{T} in isolation cone for R = %2.2f",r),
783 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
784 fhConeSumPt->SetYTitle("#Sigma p_{T}");
785 fhConeSumPt->SetXTitle("p_{T} (GeV/c)");
786 outputContainer->Add(fhConeSumPt) ;
788 fhPtInCone = new TH2F("hPtInCone",
789 Form("p_{T} in isolation cone for R = %2.2f",r),
790 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
791 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
792 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
793 outputContainer->Add(fhPtInCone) ;
795 if(fFillPileUpHistograms)
797 fhPtInConePileUp = new TH2F("hPtInConePileUp",
798 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (SPD)",r),
799 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
800 fhPtInConePileUp->SetYTitle("p_{T in cone} (GeV/c)");
801 fhPtInConePileUp->SetXTitle("p_{T} (GeV/c)");
802 outputContainer->Add(fhPtInConePileUp) ;
805 fhPtInConeCent = new TH2F("hPtInConeCent",
806 Form("p_{T} in isolation cone for R = %2.2f",r),
807 100,0,100,nptinconebins,ptinconemin,ptinconemax);
808 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
809 fhPtInConeCent->SetXTitle("centrality");
810 outputContainer->Add(fhPtInConeCent) ;
812 fhFRConeSumPt = new TH2F("hFRConePtSum",
813 Form("#Sigma p_{T} in the forward region isolation cone for R = %2.2f",r),
814 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
815 fhFRConeSumPt->SetYTitle("#Sigma p_{T}");
816 fhFRConeSumPt->SetXTitle("p_{T} (GeV/c)");
817 outputContainer->Add(fhFRConeSumPt) ;
819 fhPtInFRCone = new TH2F("hPtInFRCone",
820 Form("p_{T} in forward region isolation cone for R = %2.2f",r),
821 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
822 fhPtInFRCone->SetYTitle("p_{T in cone} (GeV/c)");
823 fhPtInFRCone->SetXTitle("p_{T} (GeV/c)");
824 outputContainer->Add(fhPtInFRCone) ;
826 fhPhiUEConeSumPt = new TH2F("hPhiUEConeSumPt",
827 Form("p_{T} in phi band around isolation cone for R = %2.2f",r),
828 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
829 fhPhiUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
830 fhPhiUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
831 outputContainer->Add(fhPhiUEConeSumPt) ;
833 fhEtaUEConeSumPt = new TH2F("hEtaUEConeSumPt",
834 Form("p_{T} in eta band around isolation cone for R = %2.2f",r),
835 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
836 fhEtaUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
837 fhEtaUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
838 outputContainer->Add(fhEtaUEConeSumPt) ;
840 fhEtaBand = new TH2F("fhEtaBand",
841 Form("Eta/Phi of particle in Eta band isolation cone for R = %2.2f",r),
842 netabins,etamin,etamax,nphibins,phimin,phimax);
843 fhEtaBand->SetXTitle("#eta");
844 fhEtaBand->SetYTitle("#phi");
845 outputContainer->Add(fhEtaBand) ;
847 fhPhiBand = new TH2F("fhPhiBand",
848 Form("Eta/Phi of particle in Phi band isolation cone for R = %2.2f",r),
849 netabins,etamin,etamax,nphibins,phimin,phimax);
850 fhPhiBand->SetXTitle("#eta");
851 fhPhiBand->SetYTitle("#phi");
852 outputContainer->Add(fhPhiBand) ;
854 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
855 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
856 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
857 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
858 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
859 outputContainer->Add(fhConeSumPtEtaUESub) ;
861 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
862 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
863 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
864 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
865 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
866 outputContainer->Add(fhConeSumPtPhiUESub) ;
868 fhEIso = new TH1F("hE",
869 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
870 nptbins,ptmin,ptmax);
871 fhEIso->SetYTitle("dN / dE");
872 fhEIso->SetXTitle("E (GeV/c)");
873 outputContainer->Add(fhEIso) ;
875 fhPtIso = new TH1F("hPt",
876 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),
877 nptbins,ptmin,ptmax);
878 fhPtIso->SetYTitle("dN / p_{T}");
879 fhPtIso->SetXTitle("p_{T} (GeV/c)");
880 outputContainer->Add(fhPtIso) ;
882 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
883 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),
884 nptbins,ptmin,ptmax,10,0,10);
885 fhPtNLocMaxIso->SetYTitle("NLM");
886 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
887 outputContainer->Add(fhPtNLocMaxIso) ;
889 fhPhiIso = new TH2F("hPhi",
890 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
891 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
892 fhPhiIso->SetYTitle("#phi");
893 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
894 outputContainer->Add(fhPhiIso) ;
896 fhEtaIso = new TH2F("hEta",
897 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
898 nptbins,ptmin,ptmax,netabins,etamin,etamax);
899 fhEtaIso->SetYTitle("#eta");
900 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
901 outputContainer->Add(fhEtaIso) ;
903 fhEtaPhiIso = new TH2F("hEtaPhiIso",
904 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),
905 netabins,etamin,etamax,nphibins,phimin,phimax);
906 fhEtaPhiIso->SetXTitle("#eta");
907 fhEtaPhiIso->SetYTitle("#phi");
908 outputContainer->Add(fhEtaPhiIso) ;
910 fhPtDecayIso = new TH1F("hPtDecayIso",
911 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),
912 nptbins,ptmin,ptmax);
913 fhPtDecayIso->SetYTitle("N");
914 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
915 outputContainer->Add(fhPtDecayIso) ;
917 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
918 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),
919 netabins,etamin,etamax,nphibins,phimin,phimax);
920 fhEtaPhiDecayIso->SetXTitle("#eta");
921 fhEtaPhiDecayIso->SetYTitle("#phi");
922 outputContainer->Add(fhEtaPhiDecayIso) ;
926 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
927 fhPtIsoPrompt->SetYTitle("N");
928 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
929 outputContainer->Add(fhPtIsoPrompt) ;
931 fhPhiIsoPrompt = new TH2F
932 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
933 fhPhiIsoPrompt->SetYTitle("#phi");
934 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
935 outputContainer->Add(fhPhiIsoPrompt) ;
937 fhEtaIsoPrompt = new TH2F
938 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
939 fhEtaIsoPrompt->SetYTitle("#eta");
940 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
941 outputContainer->Add(fhEtaIsoPrompt) ;
943 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
944 fhPtIsoFragmentation->SetYTitle("N");
945 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
946 outputContainer->Add(fhPtIsoFragmentation) ;
948 fhPhiIsoFragmentation = new TH2F
949 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
950 fhPhiIsoFragmentation->SetYTitle("#phi");
951 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
952 outputContainer->Add(fhPhiIsoFragmentation) ;
954 fhEtaIsoFragmentation = new TH2F
955 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
956 fhEtaIsoFragmentation->SetYTitle("#eta");
957 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
958 outputContainer->Add(fhEtaIsoFragmentation) ;
960 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
961 fhPtIsoPi0->SetYTitle("N");
962 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
963 outputContainer->Add(fhPtIsoPi0) ;
965 fhPhiIsoPi0 = new TH2F
966 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
967 fhPhiIsoPi0->SetYTitle("#phi");
968 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
969 outputContainer->Add(fhPhiIsoPi0) ;
971 fhEtaIsoPi0 = new TH2F
972 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
973 fhEtaIsoPi0->SetYTitle("#eta");
974 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
975 outputContainer->Add(fhEtaIsoPi0) ;
977 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
978 fhPtIsoPi0Decay->SetYTitle("N");
979 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
980 outputContainer->Add(fhPtIsoPi0Decay) ;
982 fhPhiIsoPi0Decay = new TH2F
983 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
984 fhPhiIsoPi0Decay->SetYTitle("#phi");
985 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
986 outputContainer->Add(fhPhiIsoPi0Decay) ;
988 fhEtaIsoPi0Decay = new TH2F
989 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
990 fhEtaIsoPi0Decay->SetYTitle("#eta");
991 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
992 outputContainer->Add(fhEtaIsoPi0Decay) ;
994 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
995 fhPtIsoEtaDecay->SetYTitle("N");
996 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
997 outputContainer->Add(fhPtIsoEtaDecay) ;
999 fhPhiIsoEtaDecay = new TH2F
1000 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1001 fhPhiIsoEtaDecay->SetYTitle("#phi");
1002 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1003 outputContainer->Add(fhPhiIsoEtaDecay) ;
1005 fhEtaIsoEtaDecay = new TH2F
1006 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1007 fhEtaIsoEtaDecay->SetYTitle("#eta");
1008 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1009 outputContainer->Add(fhEtaIsoEtaDecay) ;
1011 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
1012 fhPtIsoOtherDecay->SetYTitle("N");
1013 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
1014 outputContainer->Add(fhPtIsoOtherDecay) ;
1016 fhPhiIsoOtherDecay = new TH2F
1017 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1018 fhPhiIsoOtherDecay->SetYTitle("#phi");
1019 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1020 outputContainer->Add(fhPhiIsoOtherDecay) ;
1022 fhEtaIsoOtherDecay = new TH2F
1023 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1024 fhEtaIsoOtherDecay->SetYTitle("#eta");
1025 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1026 outputContainer->Add(fhEtaIsoOtherDecay) ;
1028 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
1029 // fhPtIsoConversion->SetYTitle("N");
1030 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
1031 // outputContainer->Add(fhPtIsoConversion) ;
1033 // fhPhiIsoConversion = new TH2F
1034 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1035 // fhPhiIsoConversion->SetYTitle("#phi");
1036 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1037 // outputContainer->Add(fhPhiIsoConversion) ;
1039 // fhEtaIsoConversion = new TH2F
1040 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1041 // fhEtaIsoConversion->SetYTitle("#eta");
1042 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1043 // outputContainer->Add(fhEtaIsoConversion) ;
1045 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
1046 fhPtIsoHadron->SetYTitle("N");
1047 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
1048 outputContainer->Add(fhPtIsoHadron) ;
1051 fhPhiIsoHadron = new TH2F
1052 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1053 fhPhiIsoHadron->SetYTitle("#phi");
1054 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
1055 outputContainer->Add(fhPhiIsoHadron) ;
1057 fhEtaIsoHadron = new TH2F
1058 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1059 fhEtaIsoHadron->SetYTitle("#eta");
1060 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
1061 outputContainer->Add(fhEtaIsoHadron) ;
1067 // Not Isolated histograms, reference histograms
1069 fhPtNoIso = new TH1F("hPtNoIso",
1070 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),
1071 nptbins,ptmin,ptmax);
1072 fhPtNoIso->SetYTitle("N");
1073 fhPtNoIso->SetXTitle("p_{T}(GeV/c)");
1074 outputContainer->Add(fhPtNoIso) ;
1076 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
1077 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),
1078 nptbins,ptmin,ptmax,10,0,10);
1079 fhPtNLocMaxNoIso->SetYTitle("NLM");
1080 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
1081 outputContainer->Add(fhPtNLocMaxNoIso) ;
1083 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
1084 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),
1085 netabins,etamin,etamax,nphibins,phimin,phimax);
1086 fhEtaPhiNoIso->SetXTitle("#eta");
1087 fhEtaPhiNoIso->SetYTitle("#phi");
1088 outputContainer->Add(fhEtaPhiNoIso) ;
1090 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
1091 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),
1092 nptbins,ptmin,ptmax);
1093 fhPtDecayNoIso->SetYTitle("N");
1094 fhPtDecayNoIso->SetXTitle("p_{T}(GeV/c)");
1095 outputContainer->Add(fhPtDecayNoIso) ;
1097 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
1098 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),
1099 netabins,etamin,etamax,nphibins,phimin,phimax);
1100 fhEtaPhiDecayNoIso->SetXTitle("#eta");
1101 fhEtaPhiDecayNoIso->SetYTitle("#phi");
1102 outputContainer->Add(fhEtaPhiDecayNoIso) ;
1108 fhPtNoIsoPi0 = new TH1F
1109 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
1110 fhPtNoIsoPi0->SetYTitle("N");
1111 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
1112 outputContainer->Add(fhPtNoIsoPi0) ;
1114 fhPtNoIsoPi0Decay = new TH1F
1115 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
1116 fhPtNoIsoPi0Decay->SetYTitle("N");
1117 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
1118 outputContainer->Add(fhPtNoIsoPi0Decay) ;
1120 fhPtNoIsoEtaDecay = new TH1F
1121 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
1122 fhPtNoIsoEtaDecay->SetYTitle("N");
1123 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
1124 outputContainer->Add(fhPtNoIsoEtaDecay) ;
1126 fhPtNoIsoOtherDecay = new TH1F
1127 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
1128 fhPtNoIsoOtherDecay->SetYTitle("N");
1129 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
1130 outputContainer->Add(fhPtNoIsoOtherDecay) ;
1132 fhPtNoIsoPrompt = new TH1F
1133 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
1134 fhPtNoIsoPrompt->SetYTitle("N");
1135 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
1136 outputContainer->Add(fhPtNoIsoPrompt) ;
1138 fhPtIsoMCPhoton = new TH1F
1139 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
1140 fhPtIsoMCPhoton->SetYTitle("N");
1141 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1142 outputContainer->Add(fhPtIsoMCPhoton) ;
1144 fhPtNoIsoMCPhoton = new TH1F
1145 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
1146 fhPtNoIsoMCPhoton->SetYTitle("N");
1147 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1148 outputContainer->Add(fhPtNoIsoMCPhoton) ;
1150 // fhPtNoIsoConversion = new TH1F
1151 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
1152 // fhPtNoIsoConversion->SetYTitle("N");
1153 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
1154 // outputContainer->Add(fhPtNoIsoConversion) ;
1156 fhPtNoIsoFragmentation = new TH1F
1157 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
1158 fhPtNoIsoFragmentation->SetYTitle("N");
1159 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
1160 outputContainer->Add(fhPtNoIsoFragmentation) ;
1162 fhPtNoIsoHadron = new TH1F
1163 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
1164 fhPtNoIsoHadron->SetYTitle("N");
1165 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
1166 outputContainer->Add(fhPtNoIsoHadron) ;
1173 const Int_t buffersize = 255;
1174 char name[buffersize];
1175 char title[buffersize];
1176 for(Int_t icone = 0; icone<fNCones; icone++)
1178 // sum pt in cone vs. pt leading
1179 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
1180 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1181 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1182 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1183 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1184 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
1186 // pt in cone vs. pt leading
1187 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
1188 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1189 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1190 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1191 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1192 outputContainer->Add(fhPtLeadingPt[icone]) ;
1194 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
1195 snprintf(name, buffersize,"hFRSumPtLeadingPt_Cone_%d",icone);
1196 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1197 fhFRSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1198 fhFRSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1199 fhFRSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1200 outputContainer->Add(fhFRSumPtLeadingPt[icone]) ;
1202 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
1203 snprintf(name, buffersize,"hFRPtLeadingPt_Cone_%d",icone);
1204 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1205 fhFRPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1206 fhFRPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1207 fhFRPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1208 outputContainer->Add(fhFRPtLeadingPt[icone]) ;
1213 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
1214 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1215 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1216 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1217 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
1218 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
1220 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
1221 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
1222 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1223 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1224 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
1225 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
1227 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
1228 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1229 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1230 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1231 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
1232 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
1234 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
1235 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1236 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1237 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1238 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
1239 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
1241 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
1242 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1243 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1244 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1245 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1246 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
1248 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
1249 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1250 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1251 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1252 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1253 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
1255 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
1256 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1257 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1258 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1259 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
1260 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
1262 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
1263 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1264 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1265 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1266 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
1267 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
1271 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
1274 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
1275 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1276 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1277 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1278 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
1280 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
1281 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1282 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1283 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1284 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
1287 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
1288 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1289 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1290 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1291 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1292 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
1294 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
1295 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]);
1296 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1297 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1298 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1299 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
1301 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
1302 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]);
1303 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1304 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1305 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1306 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
1308 // pt decays isolated
1309 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1310 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]);
1311 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1312 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1313 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
1315 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1316 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]);
1317 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1318 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1319 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
1321 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1322 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]);
1323 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1324 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1325 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1326 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
1328 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1329 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]);
1330 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1331 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1332 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1333 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
1335 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1336 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]);
1337 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1338 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1339 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1340 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
1344 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
1345 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1346 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1347 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
1348 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
1349 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
1351 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
1352 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1353 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1354 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
1355 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
1356 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
1358 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
1359 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1360 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1361 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
1362 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
1363 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
1365 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
1366 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]);
1367 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1368 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
1369 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
1370 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
1372 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
1373 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]);
1374 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1375 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
1376 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
1377 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
1380 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1381 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]);
1382 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1383 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
1384 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
1385 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
1387 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1388 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]);
1389 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1390 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
1391 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
1392 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
1395 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1396 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]);
1397 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1398 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1399 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1400 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
1402 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1403 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]);
1404 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1405 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
1406 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
1407 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
1409 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1410 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]);
1411 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1412 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1413 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1414 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
1419 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
1420 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1421 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1422 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1423 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
1425 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
1426 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1427 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1428 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1429 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
1431 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1432 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1433 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1434 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1435 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
1437 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1438 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1439 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1440 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1441 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
1443 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
1444 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1445 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1446 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1447 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
1449 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
1450 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1451 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1452 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1453 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
1455 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1456 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1457 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1458 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1459 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
1461 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1462 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1463 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1464 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1465 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
1467 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1468 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1469 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1470 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1471 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
1473 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1474 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1475 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1476 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1477 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
1480 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1481 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1482 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1483 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1484 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
1486 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1487 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1488 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1489 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1490 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
1492 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
1493 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1494 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1495 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1496 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
1498 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
1499 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1500 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1501 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1502 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
1504 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
1505 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1506 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1507 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1508 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
1510 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
1511 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1512 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1513 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1514 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
1521 if(fFillPileUpHistograms)
1523 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1524 fhTimeENoCut->SetXTitle("E (GeV)");
1525 fhTimeENoCut->SetYTitle("time (ns)");
1526 outputContainer->Add(fhTimeENoCut);
1528 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1529 fhTimeESPD->SetXTitle("E (GeV)");
1530 fhTimeESPD->SetYTitle("time (ns)");
1531 outputContainer->Add(fhTimeESPD);
1533 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1534 fhTimeESPDMulti->SetXTitle("E (GeV)");
1535 fhTimeESPDMulti->SetYTitle("time (ns)");
1536 outputContainer->Add(fhTimeESPDMulti);
1538 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1539 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
1540 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
1541 outputContainer->Add(fhTimeNPileUpVertSPD);
1543 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
1544 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
1545 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
1546 outputContainer->Add(fhTimeNPileUpVertTrack);
1548 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1549 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
1550 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
1551 outputContainer->Add(fhTimeNPileUpVertContributors);
1553 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);
1554 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
1555 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
1556 outputContainer->Add(fhTimePileUpMainVertexZDistance);
1558 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
1559 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
1560 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
1561 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
1565 return outputContainer ;
1569 //__________________________________
1570 void AliAnaParticleIsolation::Init()
1572 // Do some checks and init stuff
1574 // In case of several cone and thresholds analysis, open the cuts for the filling of the
1575 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
1576 // The different cones, thresholds are tested for this list of tracks, clusters.
1579 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
1580 GetIsolationCut()->SetPtThreshold(100);
1581 GetIsolationCut()->SetPtFraction(100);
1582 GetIsolationCut()->SetConeSize(1);
1586 //____________________________________________
1587 void AliAnaParticleIsolation::InitParameters()
1590 //Initialize the parameters of the analysis.
1591 SetInputAODName("PWG4Particle");
1592 SetAODObjArrayName("IsolationCone");
1593 AddToHistogramsName("AnaIsolation_");
1595 fCalorimeter = "PHOS" ;
1596 fReMakeIC = kFALSE ;
1597 fMakeSeveralIC = kFALSE ;
1599 //----------- Several IC-----------------
1602 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
1603 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
1604 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
1605 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
1607 //------------- Histograms settings -------
1608 fHistoNPtSumBins = 100 ;
1609 fHistoPtSumMax = 50 ;
1610 fHistoPtSumMin = 0. ;
1612 fHistoNPtInConeBins = 100 ;
1613 fHistoPtInConeMax = 50 ;
1614 fHistoPtInConeMin = 0. ;
1618 //__________________________________________________
1619 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
1621 //Do analysis and fill aods
1622 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
1624 if(!GetInputAODBranch())
1626 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
1630 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
1632 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());
1636 Int_t n = 0, nfrac = 0;
1637 Bool_t isolated = kFALSE ;
1638 Float_t coneptsum = 0 ;
1639 TObjArray * pl = 0x0; ;
1641 //Select the calorimeter for candidate isolation with neutral particles
1642 if (fCalorimeter == "PHOS" )
1643 pl = GetPHOSClusters();
1644 else if (fCalorimeter == "EMCAL")
1645 pl = GetEMCALClusters();
1647 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
1648 Double_t ptLeading = 0. ;
1649 Int_t idLeading = -1 ;
1650 TLorentzVector mom ;
1651 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1652 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
1654 for(Int_t iaod = 0; iaod < naod; iaod++)
1656 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1658 //If too small or too large pt, skip
1659 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
1661 //check if it is low pt trigger particle
1662 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
1663 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
1666 continue ; //trigger should not come from underlying event
1669 //vertex cut in case of mixing
1670 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
1671 if(check == 0) continue;
1672 if(check == -1) return;
1674 //find the leading particles with highest momentum
1675 if ( aodinput->Pt() > ptLeading )
1677 ptLeading = aodinput->Pt() ;
1681 aodinput->SetLeadingParticle(kFALSE);
1683 }//finish searching for leading trigger particle
1685 // Check isolation of leading particle
1686 if(idLeading < 0) return;
1688 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
1689 aodinput->SetLeadingParticle(kTRUE);
1691 // Check isolation only of clusters in fiducial region
1692 if(IsFiducialCutOn())
1694 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
1698 //After cuts, study isolation
1699 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1700 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
1701 GetReader(), GetCaloPID(),
1702 kTRUE, aodinput, GetAODObjArrayName(),
1703 n,nfrac,coneptsum, isolated);
1705 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
1709 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
1710 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
1715 //_________________________________________________________
1716 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
1718 //Do analysis and fill histograms
1720 Int_t n = 0, nfrac = 0;
1721 Bool_t isolated = kFALSE ;
1722 Float_t coneptsum = 0 ;
1723 Float_t etaUEptsum = 0 ;
1724 Float_t phiUEptsum = 0 ;
1726 //Loop on stored AOD
1727 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1728 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
1730 //Get vertex for photon momentum calculation
1731 Double_t vertex[] = {0,0,0} ; //vertex ;
1732 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
1734 GetReader()->GetVertex(vertex);
1737 for(Int_t iaod = 0; iaod < naod ; iaod++)
1739 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1741 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
1743 // Check isolation only of clusters in fiducial region
1744 if(IsFiducialCutOn())
1746 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
1747 if(! in ) continue ;
1750 Bool_t isolation = aod->IsIsolated();
1751 Bool_t decay = aod->IsTagged();
1752 Float_t energy = aod->E();
1753 Float_t pt = aod->Pt();
1754 Float_t phi = aod->Phi();
1755 Float_t eta = aod->Eta();
1756 Float_t conesize = GetIsolationCut()->GetConeSize();
1758 //Recover reference arrays with clusters and tracks
1759 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
1760 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
1762 //If too small or too large pt, skip
1763 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
1765 // --- In case of redoing isolation from delta AOD ----
1769 //Analysis of multiple IC at same time
1770 MakeSeveralICAnalysis(aod);
1775 //In case a more strict IC is needed in the produced AOD
1776 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1777 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
1778 GetReader(), GetCaloPID(),
1780 n,nfrac,coneptsum, isolated);
1781 fhConeSumPt->Fill(pt,coneptsum);
1782 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1785 // ---------------------------------------------------
1787 //Fill pt distribution of particles in cone
1790 Double_t sumptFR = 0. ;
1791 TObjArray * trackList = GetCTSTracks() ;
1792 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
1794 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
1798 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
1802 //fill histogram for UE in phi band
1803 if(track->Eta() > (eta-conesize) && track->Eta() < (eta+conesize))
1805 phiUEptsum+=track->Pt();
1806 fhPhiBand->Fill(track->Eta(),track->Phi());
1808 //fill histogram for UE in eta band in EMCal acceptance
1809 if(track->Phi() > (phi-conesize) && track->Phi() < (phi+conesize) && track->Eta() > -0.6 && track->Eta() < 0.6)
1811 etaUEptsum+=track->Pt();
1812 fhEtaBand->Fill(track->Eta(),track->Phi());
1815 //fill the histograms at forward range
1816 Double_t dPhi = phi - track->Phi() + TMath::PiOver2();
1817 Double_t dEta = eta - track->Eta();
1818 Double_t arg = dPhi*dPhi + dEta*dEta;
1819 if(TMath::Sqrt(arg) < conesize)
1821 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1822 sumptFR+=track->Pt();
1825 dPhi = phi - track->Phi() - TMath::PiOver2();
1826 arg = dPhi*dPhi + dEta*dEta;
1827 if(TMath::Sqrt(arg) < conesize)
1829 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1830 sumptFR+=track->Pt();
1834 fhFRConeSumPt->Fill(pt,sumptFR);
1837 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1839 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1840 Float_t pTtrack = track->Pt();
1841 fhPtInCone->Fill(pt,pTtrack);
1842 if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) fhPtInConePileUp->Fill(pt,pTtrack);
1843 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1851 TLorentzVector mom ;
1852 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
1854 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
1855 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
1857 //fill histogram for UE in phi band
1858 if(mom.Eta() > (eta-conesize) && mom.Eta() < (eta+conesize))
1860 phiUEptsum+=mom.Pt();
1861 fhPhiBand->Fill(mom.Eta(),mom.Phi());
1863 //fill histogram for UE in eta band in EMCal acceptance
1864 if(mom.Phi() > (phi-conesize) && mom.Phi() < (phi+conesize))
1866 etaUEptsum+=mom.Pt();
1867 fhEtaBand->Fill(mom.Eta(),mom.Phi());
1870 fhPtInCone->Fill(pt, mom.Pt());
1871 if(fFillPileUpHistograms && GetReader()->IsPileUpFromSPD()) fhPtInConePileUp->Fill(pt,mom.Pt());
1872 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
1873 coneptsum+=mom.Pt();
1877 //normalize phi/eta band per area unit
1878 fhPhiUEConeSumPt->Fill(pt, phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1879 fhEtaUEConeSumPt->Fill(pt, etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1881 Double_t sumPhiUESub = coneptsum-(phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1882 Double_t sumEtaUESub = coneptsum-(etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1884 fhConeSumPtPhiUESub->Fill(pt,sumPhiUESub);
1885 fhConeSumPtEtaUESub->Fill(pt,sumEtaUESub);
1888 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsum);
1890 if(!fReMakeIC) fhConeSumPt->Fill(pt,coneptsum);
1892 Int_t mcTag = aod->GetTag() ;
1893 Int_t clID = aod->GetCaloLabel(0) ;
1894 Int_t nlm = aod->GetFiducialArea();
1895 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
1897 FillTrackMatchingShowerShapeControlHistograms(isolation, clID,nlm,mcTag,reftracks,refclusters,aod,GetReader(), GetCaloPID());
1901 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
1903 // Fill histograms to undertand pile-up before other cuts applied
1904 // Remember to relax time cuts in the reader
1905 FillPileUpHistograms(clID);
1907 fhEIso ->Fill(energy);
1909 fhPhiIso ->Fill(pt,phi);
1910 fhEtaIso ->Fill(pt,eta);
1911 fhEtaPhiIso ->Fill(eta,phi);
1912 fhPtNLocMaxIso->Fill(pt,nlm);
1916 fhPtDecayIso->Fill(pt);
1917 fhEtaPhiDecayIso->Fill(eta,phi);
1923 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
1925 fhPtIsoMCPhoton ->Fill(pt);
1928 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
1930 fhPtIsoPrompt ->Fill(pt);
1931 fhPhiIsoPrompt ->Fill(pt,phi);
1932 fhEtaIsoPrompt ->Fill(pt,eta);
1934 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
1936 fhPtIsoFragmentation ->Fill(pt);
1937 fhPhiIsoFragmentation ->Fill(pt,phi);
1938 fhEtaIsoFragmentation ->Fill(pt,eta);
1940 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
1942 fhPtIsoPi0 ->Fill(pt);
1943 fhPhiIsoPi0 ->Fill(pt,phi);
1944 fhEtaIsoPi0 ->Fill(pt,eta);
1946 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
1948 fhPtIsoPi0Decay ->Fill(pt);
1949 fhPhiIsoPi0Decay ->Fill(pt,phi);
1950 fhEtaIsoPi0Decay ->Fill(pt,eta);
1952 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
1954 fhPtIsoEtaDecay ->Fill(pt);
1955 fhPhiIsoEtaDecay ->Fill(pt,phi);
1956 fhEtaIsoEtaDecay ->Fill(pt,eta);
1958 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
1960 fhPtIsoOtherDecay ->Fill(pt);
1961 fhPhiIsoOtherDecay ->Fill(pt,phi);
1962 fhEtaIsoOtherDecay ->Fill(pt,eta);
1964 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
1966 // fhPtIsoConversion ->Fill(pt);
1967 // fhPhiIsoConversion ->Fill(pt,phi);
1968 // fhEtaIsoConversion ->Fill(pt,eta);
1970 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
1972 fhPtIsoHadron ->Fill(pt);
1973 fhPhiIsoHadron ->Fill(pt,phi);
1974 fhEtaIsoHadron ->Fill(pt,eta);
1976 }//Histograms with MC
1978 }//Isolated histograms
1979 else // NON isolated
1981 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
1983 fhPtNoIso ->Fill(pt);
1984 fhEtaPhiNoIso->Fill(eta,phi);
1985 fhPtNLocMaxNoIso->Fill(pt,nlm);
1989 fhPtDecayNoIso ->Fill(pt);
1990 fhEtaPhiDecayNoIso->Fill(eta,phi);
1995 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
1996 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
1997 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
1998 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
1999 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
2000 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
2001 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
2002 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
2003 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
2011 //_____________________________________________________________________________________
2012 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
2015 //Isolation Cut Analysis for both methods and different pt cuts and cones
2016 Float_t ptC = ph->Pt();
2017 Float_t etaC = ph->Eta();
2018 Float_t phiC = ph->Phi();
2019 Int_t tag = ph->GetTag();
2020 Bool_t decay = ph->IsTagged();
2022 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
2024 //Keep original setting used when filling AODs, reset at end of analysis
2025 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
2026 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
2027 Float_t rorg = GetIsolationCut()->GetConeSize();
2029 Float_t coneptsum = 0 ;
2030 Int_t n [10][10];//[fNCones][fNPtThresFrac];
2031 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
2032 Bool_t isolated = kFALSE;
2034 Int_t nFracCone = 0;
2036 // fill hist with all particles before isolation criteria
2037 fhPtNoIso ->Fill(ptC);
2038 fhEtaPhiNoIso->Fill(etaC,phiC);
2042 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
2043 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
2044 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
2045 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
2046 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
2047 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
2048 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
2049 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
2050 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
2055 fhPtDecayNoIso ->Fill(ptC);
2056 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
2058 //Get vertex for photon momentum calculation
2059 Double_t vertex[] = {0,0,0} ; //vertex ;
2060 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
2062 GetReader()->GetVertex(vertex);
2065 //Loop on cone sizes
2066 for(Int_t icone = 0; icone<fNCones; icone++)
2068 //Recover reference arrays with clusters and tracks
2069 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
2070 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
2072 //If too small or too large pt, skip
2073 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
2075 //In case a more strict IC is needed in the produced AOD
2077 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
2079 GetIsolationCut()->SetSumPtThreshold(100);
2080 GetIsolationCut()->SetPtThreshold(100);
2081 GetIsolationCut()->SetPtFraction(100);
2082 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
2083 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2084 GetReader(), GetCaloPID(),
2086 nCone,nFracCone,coneptsum, isolated);
2089 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
2091 // retreive pt tracks to fill histo vs. pt leading
2092 //Fill pt distribution of particles in cone
2093 //fhPtLeadingPt(),fhFRSumPtLeadingPt(),fhFRPtLeadingPt(),
2097 Double_t sumptFR = 0. ;
2098 TObjArray * trackList = GetCTSTracks() ;
2099 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
2101 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
2102 //fill the histograms at forward range
2105 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
2109 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
2110 Double_t dEta = etaC - track->Eta();
2111 Double_t arg = dPhi*dPhi + dEta*dEta;
2112 if(TMath::Sqrt(arg) < fConeSizes[icone])
2114 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2115 sumptFR+=track->Pt();
2118 dPhi = phiC - track->Phi() - TMath::PiOver2();
2119 arg = dPhi*dPhi + dEta*dEta;
2120 if(TMath::Sqrt(arg) < fConeSizes[icone])
2122 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2123 sumptFR+=track->Pt();
2126 fhFRSumPtLeadingPt[icone]->Fill(ptC,sumptFR);
2129 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
2131 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
2132 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2133 coneptsum+=track->Pt();
2139 TLorentzVector mom ;
2140 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
2142 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
2143 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
2145 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
2146 coneptsum+=mom.Pt();
2152 //Loop on ptthresholds
2153 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
2156 nfrac[icone][ipt]=0;
2157 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
2158 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
2159 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
2161 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2162 GetReader(), GetCaloPID(),
2164 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2166 if(!isolated) continue;
2167 //Normal ptThreshold cut
2169 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",
2170 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2171 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
2173 if(n[icone][ipt] == 0)
2175 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
2176 fhPtThresIsolated[icone][ipt]->Fill(ptC);
2177 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
2181 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
2182 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
2187 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2188 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2189 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2190 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2191 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2192 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2193 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2194 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
2198 // pt in cone fraction
2199 if(nfrac[icone][ipt] == 0)
2201 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
2202 fhPtFracIsolated[icone][ipt]->Fill(ptC);
2203 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
2207 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
2208 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
2213 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2214 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2215 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2216 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2217 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2218 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2219 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2220 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
2224 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
2226 //Pt threshold on pt cand/ sum in cone histograms
2227 if(coneptsum<fSumPtThresholds[ipt])
2228 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
2229 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
2230 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
2231 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
2234 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
2235 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
2239 // pt sum pt frac method
2240 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
2242 if(coneptsum < fPtFractions[ipt]*ptC)
2244 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
2245 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
2246 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
2250 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
2251 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
2256 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
2257 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
2258 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
2259 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
2260 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
2261 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
2265 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
2266 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
2274 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
2275 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
2276 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
2277 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
2278 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
2279 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
2280 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
2281 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
2286 //Reset original parameters for AOD analysis
2287 GetIsolationCut()->SetPtThreshold(ptthresorg);
2288 GetIsolationCut()->SetPtFraction(ptfracorg);
2289 GetIsolationCut()->SetConeSize(rorg);
2293 //_____________________________________________________________
2294 void AliAnaParticleIsolation::Print(const Option_t * opt) const
2297 //Print some relevant parameters set for the analysis
2301 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
2302 AliAnaCaloTrackCorrBaseClass::Print(" ");
2304 printf("ReMake Isolation = %d \n", fReMakeIC) ;
2305 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
2306 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
2310 printf("N Cone Sizes = %d\n", fNCones) ;
2311 printf("Cone Sizes = \n") ;
2312 for(Int_t i = 0; i < fNCones; i++)
2313 printf(" %1.2f;", fConeSizes[i]) ;
2316 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
2317 printf(" pT thresholds = \n") ;
2318 for(Int_t i = 0; i < fNPtThresFrac; i++)
2319 printf(" %2.2f;", fPtThresholds[i]) ;
2323 printf(" pT fractions = \n") ;
2324 for(Int_t i = 0; i < fNPtThresFrac; i++)
2325 printf(" %2.2f;", fPtFractions[i]) ;
2329 printf("sum pT thresholds = \n") ;
2330 for(Int_t i = 0; i < fNPtThresFrac; i++)
2331 printf(" %2.2f;", fSumPtThresholds[i]) ;
2336 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
2337 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);