1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //_________________________________________________________________________
17 // Class for analysis of particle isolation
18 // Input is selected particles put in AOD branch (AliAODPWG4ParticleCorrelation)
20 // Class created from old AliPHOSGammaJet
21 // (see AliRoot versions previous Release 4-09)
23 // -- Author: Gustavo Conesa (LNF-INFN)
25 //-Yaxian Mao (add the possibility for different IC method with different pt range, 01/10/2010)
26 //////////////////////////////////////////////////////////////////////////////
29 // --- ROOT system ---
30 #include <TClonesArray.h>
32 #include <TObjString.h>
36 // --- Analysis system ---
37 #include "AliAnaParticleIsolation.h"
38 #include "AliCaloTrackReader.h"
39 #include "AliIsolationCut.h"
40 #include "AliNeutralMesonSelection.h"
41 #include "AliAODPWG4ParticleCorrelation.h"
42 #include "AliMCAnalysisUtils.h"
43 #include "AliVTrack.h"
44 #include "AliVCluster.h"
45 #include "AliESDEvent.h"
46 #include "AliAODEvent.h"
48 ClassImp(AliAnaParticleIsolation)
50 //______________________________________________________________________________
51 AliAnaParticleIsolation::AliAnaParticleIsolation() :
52 AliAnaCaloTrackCorrBaseClass(), fCalorimeter(""),
53 fReMakeIC(0), fMakeSeveralIC(0),
54 fFillPileUpHistograms(0),
55 fFillTMHisto(0), fFillSSHisto(0),
57 fNCones(0), fNPtThresFrac(0),
58 fConeSizes(), fPtThresholds(),
59 fPtFractions(), fSumPtThresholds(),
61 fhEIso(0), fhPtIso(0), fhPtNLocMaxIso(0),
62 fhPhiIso(0), fhEtaIso(0), fhEtaPhiIso(0),
64 fhENoIso(0), fhPtNoIso(0), fhPtNLocMaxNoIso(0),
65 fhPtDecayIso(0), fhPtDecayNoIso(0),
66 fhEtaPhiDecayIso(0), fhEtaPhiDecayNoIso(0),
67 fhConeSumPt(0), fhPtInCone(0),
68 fhPtTrackInCone(0), fhPtTrackInConeOtherBC(0), fhPtTrackInConeOtherBCPileUpSPD(0),
69 fhPtInConePileUp(), fhPtInConeCent(0),
70 fhFRConeSumPt(0), fhPtInFRCone(0), fhPhiUEConeSumPt(0),
71 fhEtaUEConeSumPt(0), fhEtaBand(0), fhPhiBand(0),
72 fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
74 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
75 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
76 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
77 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
78 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
79 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
80 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
81 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
82 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
83 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
84 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
85 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
86 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
87 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
88 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
89 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
90 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
91 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
92 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
93 //fhPtNoIsoConversion(0),
94 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
96 fhSumPtLeadingPt(), fhPtLeadingPt(),
97 fhFRSumPtLeadingPt(), fhFRPtLeadingPt(),
98 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
99 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
100 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
101 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
102 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
103 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
104 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
105 // Cluster control histograms
106 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
107 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
108 fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
109 fhELambda0TRD(), fhELambda1TRD(),
110 fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
111 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
112 // Number of local maxima in cluster
114 fhELambda0LocMax1(), fhELambda1LocMax1(),
115 fhELambda0LocMax2(), fhELambda1LocMax2(),
116 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
118 fhEIsoPileUp(), fhPtIsoPileUp(),
119 fhENoIsoPileUp(), fhPtNoIsoPileUp(),
120 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
121 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
122 fhTimeNPileUpVertContributors(0),
123 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
124 // Histograms settings
125 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
126 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
130 //Initialize parameters
133 for(Int_t i = 0; i < 5 ; i++)
137 fhPtSumIsolatedPrompt [i] = 0 ;
138 fhPtSumIsolatedFragmentation[i] = 0 ;
139 fhPtSumIsolatedPi0Decay [i] = 0 ;
140 fhPtSumIsolatedPi0 [i] = 0 ;
141 fhPtSumIsolatedEtaDecay [i] = 0 ;
142 fhPtSumIsolatedOtherDecay [i] = 0 ;
143 // fhPtSumIsolatedConversion [i] = 0 ;
144 fhPtSumIsolatedHadron [i] = 0 ;
146 for(Int_t j = 0; j < 5 ; j++)
148 fhPtThresIsolated [i][j] = 0 ;
149 fhPtFracIsolated [i][j] = 0 ;
150 fhPtSumIsolated [i][j] = 0 ;
152 fhEtaPhiPtThresIso [i][j] = 0 ;
153 fhEtaPhiPtThresDecayIso[i][j] = 0 ;
154 fhPtPtThresDecayIso [i][j] = 0 ;
156 fhEtaPhiPtFracIso [i][j] = 0 ;
157 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
158 fhPtPtFracDecayIso [i][j] = 0 ;
159 fhPtPtSumDecayIso [i][j] = 0 ;
160 fhPtSumDensityIso [i][j] = 0 ;
161 fhPtSumDensityDecayIso [i][j] = 0 ;
162 fhEtaPhiSumDensityIso [i][j] = 0 ;
163 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
164 fhPtFracPtSumIso [i][j] = 0 ;
165 fhPtFracPtSumDecayIso [i][j] = 0 ;
166 fhEtaPhiFracPtSumIso [i][j] = 0 ;
167 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
169 fhPtThresIsolatedPrompt [i][j] = 0 ;
170 fhPtThresIsolatedFragmentation[i][j] = 0 ;
171 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
172 fhPtThresIsolatedPi0 [i][j] = 0 ;
173 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
174 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
175 // fhPtThresIsolatedConversion [i][j] = 0 ;
176 fhPtThresIsolatedHadron [i][j] = 0 ;
178 fhPtFracIsolatedPrompt [i][j] = 0 ;
179 fhPtFracIsolatedFragmentation [i][j] = 0 ;
180 fhPtFracIsolatedPi0 [i][j] = 0 ;
181 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
182 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
183 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
184 // fhPtFracIsolatedConversion [i][j] = 0 ;
185 fhPtFracIsolatedHadron [i][j] = 0 ;
190 for(Int_t i = 0; i < 5 ; i++)
192 fPtFractions [i] = 0 ;
193 fPtThresholds [i] = 0 ;
194 fSumPtThresholds[i] = 0 ;
198 for(Int_t i = 0; i < 2 ; i++)
200 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
201 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
202 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
203 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
205 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
206 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
209 // Number of local maxima in cluster
211 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
212 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
213 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
219 for(Int_t i = 0 ; i < 7 ; i++)
221 fhPtInConePileUp[i] = 0 ;
222 fhEIsoPileUp [i] = 0 ;
223 fhPtIsoPileUp [i] = 0 ;
224 fhENoIsoPileUp [i] = 0 ;
225 fhPtNoIsoPileUp [i] = 0 ;
230 //_________________________________________________________________
231 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
233 // Fill some histograms to understand pile-up
234 if(!fFillPileUpHistograms) return;
238 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
243 TObjArray* clusters = 0x0;
244 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
245 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
248 Float_t time = -1000;
252 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
253 energy = cluster->E();
254 time = cluster->GetTOF()*1e9;
257 //printf("E %f, time %f\n",energy,time);
258 AliVEvent * event = GetReader()->GetInputEvent();
260 fhTimeENoCut->Fill(energy,time);
261 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
262 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
264 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
266 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
267 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
269 // N pile up vertices
270 Int_t nVerticesSPD = -1;
271 Int_t nVerticesTracks = -1;
275 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
276 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
281 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
282 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
285 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
286 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
288 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
289 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
292 Float_t z1 = -1, z2 = -1;
294 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
298 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
299 ncont=pv->GetNContributors();
300 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
302 diamZ = esdEv->GetDiamondZ();
306 AliAODVertex *pv=aodEv->GetVertex(iVert);
307 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
308 ncont=pv->GetNContributors();
309 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
311 diamZ = aodEv->GetDiamondZ();
314 Double_t distZ = TMath::Abs(z2-z1);
315 diamZ = TMath::Abs(z2-diamZ);
317 fhTimeNPileUpVertContributors ->Fill(time,ncont);
318 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
319 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
324 //________________________________________________________________________________________________
325 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(const Bool_t isolated,
326 const Int_t clusterID,
329 const TObjArray * plCTS,
330 const TObjArray * plNe,
331 AliAODPWG4ParticleCorrelation *pCandidate,
332 const AliCaloTrackReader * reader,
333 const AliCaloPID * pid)
335 // Fill Track matching and Shower Shape control histograms
336 if(!fFillTMHisto && !fFillSSHisto) return;
340 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
345 TObjArray* clusters = 0x0;
346 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
347 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
352 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
353 Float_t energy = cluster->E();
357 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
358 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
362 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
363 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
364 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
365 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
366 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
367 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
369 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
370 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
374 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
376 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
377 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
380 fhNLocMax[isolated]->Fill(energy,nMaxima);
381 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
382 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
383 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
387 //Analyse non-isolated events
390 Bool_t iso = kFALSE ;
391 Float_t coneptsum = 0 ;
392 GetIsolationCut()->SetPtThresholdMax(1.);
393 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
395 kFALSE, pCandidate, "",
396 n,nfrac,coneptsum, iso);
397 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
400 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
402 GetIsolationCut()->SetPtThresholdMax(10000.);
409 Float_t dZ = cluster->GetTrackDz();
410 Float_t dR = cluster->GetTrackDx();
412 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
414 dR = 2000., dZ = 2000.;
415 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
418 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
419 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
421 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
422 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
423 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
426 // Check dEdx and E/p of matched clusters
428 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
431 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
435 Float_t dEdx = track->GetTPCsignal();
436 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
438 Float_t eOverp = cluster->E()/track->P();
439 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
442 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
447 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
449 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
450 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
451 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
452 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
453 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
458 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
459 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
460 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
461 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
462 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
471 } // clusters array available
475 //______________________________________________________
476 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
478 //Save parameters used for analysis
479 TString parList ; //this will be list of parameters used for this analysis.
480 const Int_t buffersize = 255;
481 char onePar[buffersize] ;
483 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
485 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
487 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
489 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
491 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
493 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
498 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
500 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
503 for(Int_t icone = 0; icone < fNCones ; icone++)
505 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
508 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
510 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
513 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
515 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
518 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
520 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
525 //Get parameters set in base class.
526 parList += GetBaseParametersList() ;
528 //Get parameters set in IC class.
529 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
531 return new TObjString(parList) ;
535 //________________________________________________________
536 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
538 // Create histograms to be saved in output file and
539 // store them in outputContainer
540 TList * outputContainer = new TList() ;
541 outputContainer->SetName("IsolatedParticleHistos") ;
543 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
544 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
545 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
546 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
547 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
548 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
549 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
550 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
551 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
552 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
553 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
554 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
555 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
556 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
557 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
559 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
560 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
561 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
562 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
563 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
564 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
566 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
567 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
568 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
569 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
570 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
571 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
573 Int_t nptsumbins = fHistoNPtSumBins;
574 Float_t ptsummax = fHistoPtSumMax;
575 Float_t ptsummin = fHistoPtSumMin;
576 Int_t nptinconebins = fHistoNPtInConeBins;
577 Float_t ptinconemax = fHistoPtInConeMax;
578 Float_t ptinconemin = fHistoPtInConeMin;
580 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
581 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
582 Float_t r = GetIsolationCut()->GetConeSize();
584 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
588 TString hName [] = {"NoIso",""};
589 TString hTitle[] = {"Not isolated" ,"isolated"};
592 fhELambda0SSBkg = new TH2F
593 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
594 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
595 fhELambda0SSBkg->SetXTitle("E (GeV)");
596 outputContainer->Add(fhELambda0SSBkg) ;
599 for(Int_t iso = 0; iso < 2; iso++)
603 fhTrackMatchedDEta[iso] = new TH2F
604 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
605 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),
606 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
607 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
608 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
610 fhTrackMatchedDPhi[iso] = new TH2F
611 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
612 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),
613 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
614 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
615 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
617 fhTrackMatchedDEtaDPhi[iso] = new TH2F
618 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
619 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),
620 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
621 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
622 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
624 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
625 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
626 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
628 fhdEdx[iso] = new TH2F
629 (Form("hdEdx%s",hName[iso].Data()),
630 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),
631 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
632 fhdEdx[iso]->SetXTitle("E (GeV)");
633 fhdEdx[iso]->SetYTitle("<dE/dx>");
634 outputContainer->Add(fhdEdx[iso]);
636 fhEOverP[iso] = new TH2F
637 (Form("hEOverP%s",hName[iso].Data()),
638 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),
639 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
640 fhEOverP[iso]->SetXTitle("E (GeV)");
641 fhEOverP[iso]->SetYTitle("E/p");
642 outputContainer->Add(fhEOverP[iso]);
646 fhTrackMatchedMCParticle[iso] = new TH2F
647 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
648 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),
649 nptbins,ptmin,ptmax,8,0,8);
650 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
651 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
653 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
654 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
655 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
656 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
657 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
658 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
659 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
660 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
662 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
668 fhELambda0[iso] = new TH2F
669 (Form("hELambda0%s",hName[iso].Data()),
670 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
671 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
672 fhELambda0[iso]->SetXTitle("E (GeV)");
673 outputContainer->Add(fhELambda0[iso]) ;
677 fhELambda0MCPhoton[iso] = new TH2F
678 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
679 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
680 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
681 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
682 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
684 fhELambda0MCPi0[iso] = new TH2F
685 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
686 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
687 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
688 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
689 outputContainer->Add(fhELambda0MCPi0[iso]) ;
691 fhELambda0MCPi0Decay[iso] = new TH2F
692 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
693 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
694 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
695 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
696 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
698 fhELambda0MCEtaDecay[iso] = new TH2F
699 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
700 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
701 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
702 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
703 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
705 fhELambda0MCOtherDecay[iso] = new TH2F
706 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
707 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
708 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
709 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
710 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
712 fhELambda0MCHadron[iso] = new TH2F
713 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
714 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
715 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
716 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
717 outputContainer->Add(fhELambda0MCHadron[iso]) ;
720 fhELambda1[iso] = new TH2F
721 (Form("hELambda1%s",hName[iso].Data()),
722 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
723 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
724 fhELambda1[iso]->SetXTitle("E (GeV)");
725 outputContainer->Add(fhELambda1[iso]) ;
727 if(fCalorimeter=="EMCAL")
729 fhELambda0TRD[iso] = new TH2F
730 (Form("hELambda0TRD%s",hName[iso].Data()),
731 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
732 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
733 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
734 outputContainer->Add(fhELambda0TRD[iso]) ;
736 fhELambda1TRD[iso] = new TH2F
737 (Form("hELambda1TRD%s",hName[iso].Data()),
738 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
739 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
740 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
741 outputContainer->Add(fhELambda1TRD[iso]) ;
744 fhNLocMax[iso] = new TH2F
745 (Form("hNLocMax%s",hName[iso].Data()),
746 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
747 nptbins,ptmin,ptmax,10,0,10);
748 fhNLocMax[iso]->SetYTitle("N maxima");
749 fhNLocMax[iso]->SetXTitle("E (GeV)");
750 outputContainer->Add(fhNLocMax[iso]) ;
752 fhELambda0LocMax1[iso] = new TH2F
753 (Form("hELambda0LocMax1%s",hName[iso].Data()),
754 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
755 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
756 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
757 outputContainer->Add(fhELambda0LocMax1[iso]) ;
759 fhELambda1LocMax1[iso] = new TH2F
760 (Form("hELambda1LocMax1%s",hName[iso].Data()),
761 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
762 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
763 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
764 outputContainer->Add(fhELambda1LocMax1[iso]) ;
766 fhELambda0LocMax2[iso] = new TH2F
767 (Form("hELambda0LocMax2%s",hName[iso].Data()),
768 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
769 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
770 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
771 outputContainer->Add(fhELambda0LocMax2[iso]) ;
773 fhELambda1LocMax2[iso] = new TH2F
774 (Form("hELambda1LocMax2%s",hName[iso].Data()),
775 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
776 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
777 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
778 outputContainer->Add(fhELambda1LocMax2[iso]) ;
780 fhELambda0LocMaxN[iso] = new TH2F
781 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
782 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
783 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
784 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
785 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
787 fhELambda1LocMaxN[iso] = new TH2F
788 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
789 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
790 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
791 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
792 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
795 } // control histograms for isolated and non isolated objects
797 fhConeSumPt = new TH2F("hConePtSum",
798 Form("#Sigma p_{T} in isolation cone for R = %2.2f",r),
799 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
800 fhConeSumPt->SetYTitle("#Sigma p_{T}");
801 fhConeSumPt->SetXTitle("p_{T} (GeV/c)");
802 outputContainer->Add(fhConeSumPt) ;
804 fhPtInCone = new TH2F("hPtInCone",
805 Form("p_{T} of clusters and tracks in isolation cone for R = %2.2f",r),
806 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
807 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
808 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
809 outputContainer->Add(fhPtInCone) ;
811 fhPtTrackInCone = new TH2F("hPtTrackInCone",
812 Form("p_{T} of tracks in isolation cone for R = %2.2f",r),
813 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
814 fhPtTrackInCone->SetYTitle("p_{T in cone} (GeV/c)");
815 fhPtTrackInCone->SetXTitle("p_{T} (GeV/c)");
816 outputContainer->Add(fhPtTrackInCone) ;
818 if(fFillPileUpHistograms)
820 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
821 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0",r),
822 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
823 fhPtTrackInConeOtherBC->SetYTitle("p_{T in cone} (GeV/c)");
824 fhPtTrackInConeOtherBC->SetXTitle("p_{T} (GeV/c)");
825 outputContainer->Add(fhPtTrackInConeOtherBC) ;
827 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
828 Form("p_{T} of tracks in isolation cone for R = %2.2f, TOF from BC!=0, pile-up from SPD",r),
829 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
830 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("p_{T in cone} (GeV/c)");
831 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("p_{T} (GeV/c)");
832 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
835 for (Int_t i = 0; i < 7 ; i++)
837 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
838 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
839 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
840 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/c)");
841 fhPtInConePileUp[i]->SetXTitle("p_{T} (GeV/c)");
842 outputContainer->Add(fhPtInConePileUp[i]) ;
846 fhPtInConeCent = new TH2F("hPtInConeCent",
847 Form("p_{T} in isolation cone for R = %2.2f",r),
848 100,0,100,nptinconebins,ptinconemin,ptinconemax);
849 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
850 fhPtInConeCent->SetXTitle("centrality");
851 outputContainer->Add(fhPtInConeCent) ;
853 fhFRConeSumPt = new TH2F("hFRConePtSum",
854 Form("#Sigma p_{T} in the forward region isolation cone for R = %2.2f",r),
855 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
856 fhFRConeSumPt->SetYTitle("#Sigma p_{T}");
857 fhFRConeSumPt->SetXTitle("p_{T} (GeV/c)");
858 outputContainer->Add(fhFRConeSumPt) ;
860 fhPtInFRCone = new TH2F("hPtInFRCone",
861 Form("p_{T} in forward region isolation cone for R = %2.2f",r),
862 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
863 fhPtInFRCone->SetYTitle("p_{T in cone} (GeV/c)");
864 fhPtInFRCone->SetXTitle("p_{T} (GeV/c)");
865 outputContainer->Add(fhPtInFRCone) ;
867 fhPhiUEConeSumPt = new TH2F("hPhiUEConeSumPt",
868 Form("p_{T} in phi band around isolation cone for R = %2.2f",r),
869 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
870 fhPhiUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
871 fhPhiUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
872 outputContainer->Add(fhPhiUEConeSumPt) ;
874 fhEtaUEConeSumPt = new TH2F("hEtaUEConeSumPt",
875 Form("p_{T} in eta band around isolation cone for R = %2.2f",r),
876 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
877 fhEtaUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
878 fhEtaUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
879 outputContainer->Add(fhEtaUEConeSumPt) ;
881 fhEtaBand = new TH2F("fhEtaBand",
882 Form("Eta/Phi of particle in Eta band isolation cone for R = %2.2f",r),
883 netabins,etamin,etamax,nphibins,phimin,phimax);
884 fhEtaBand->SetXTitle("#eta");
885 fhEtaBand->SetYTitle("#phi");
886 outputContainer->Add(fhEtaBand) ;
888 fhPhiBand = new TH2F("fhPhiBand",
889 Form("Eta/Phi of particle in Phi band isolation cone for R = %2.2f",r),
890 netabins,etamin,etamax,nphibins,phimin,phimax);
891 fhPhiBand->SetXTitle("#eta");
892 fhPhiBand->SetYTitle("#phi");
893 outputContainer->Add(fhPhiBand) ;
895 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
896 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
897 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
898 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
899 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
900 outputContainer->Add(fhConeSumPtEtaUESub) ;
902 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
903 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
904 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
905 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
906 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
907 outputContainer->Add(fhConeSumPtPhiUESub) ;
909 fhEIso = new TH1F("hE",
910 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
911 nptbins,ptmin,ptmax);
912 fhEIso->SetYTitle("dN / dE");
913 fhEIso->SetXTitle("E (GeV/c)");
914 outputContainer->Add(fhEIso) ;
916 fhPtIso = new TH1F("hPt",
917 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),
918 nptbins,ptmin,ptmax);
919 fhPtIso->SetYTitle("dN / p_{T}");
920 fhPtIso->SetXTitle("p_{T} (GeV/c)");
921 outputContainer->Add(fhPtIso) ;
923 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
924 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),
925 nptbins,ptmin,ptmax,10,0,10);
926 fhPtNLocMaxIso->SetYTitle("NLM");
927 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
928 outputContainer->Add(fhPtNLocMaxIso) ;
930 fhPhiIso = new TH2F("hPhi",
931 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
932 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
933 fhPhiIso->SetYTitle("#phi");
934 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
935 outputContainer->Add(fhPhiIso) ;
937 fhEtaIso = new TH2F("hEta",
938 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
939 nptbins,ptmin,ptmax,netabins,etamin,etamax);
940 fhEtaIso->SetYTitle("#eta");
941 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
942 outputContainer->Add(fhEtaIso) ;
944 fhEtaPhiIso = new TH2F("hEtaPhiIso",
945 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),
946 netabins,etamin,etamax,nphibins,phimin,phimax);
947 fhEtaPhiIso->SetXTitle("#eta");
948 fhEtaPhiIso->SetYTitle("#phi");
949 outputContainer->Add(fhEtaPhiIso) ;
951 fhPtDecayIso = new TH1F("hPtDecayIso",
952 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),
953 nptbins,ptmin,ptmax);
954 fhPtDecayIso->SetYTitle("N");
955 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
956 outputContainer->Add(fhPtDecayIso) ;
958 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
959 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),
960 netabins,etamin,etamax,nphibins,phimin,phimax);
961 fhEtaPhiDecayIso->SetXTitle("#eta");
962 fhEtaPhiDecayIso->SetYTitle("#phi");
963 outputContainer->Add(fhEtaPhiDecayIso) ;
967 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
968 fhPtIsoPrompt->SetYTitle("N");
969 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
970 outputContainer->Add(fhPtIsoPrompt) ;
972 fhPhiIsoPrompt = new TH2F
973 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
974 fhPhiIsoPrompt->SetYTitle("#phi");
975 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
976 outputContainer->Add(fhPhiIsoPrompt) ;
978 fhEtaIsoPrompt = new TH2F
979 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
980 fhEtaIsoPrompt->SetYTitle("#eta");
981 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
982 outputContainer->Add(fhEtaIsoPrompt) ;
984 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
985 fhPtIsoFragmentation->SetYTitle("N");
986 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
987 outputContainer->Add(fhPtIsoFragmentation) ;
989 fhPhiIsoFragmentation = new TH2F
990 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
991 fhPhiIsoFragmentation->SetYTitle("#phi");
992 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
993 outputContainer->Add(fhPhiIsoFragmentation) ;
995 fhEtaIsoFragmentation = new TH2F
996 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
997 fhEtaIsoFragmentation->SetYTitle("#eta");
998 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
999 outputContainer->Add(fhEtaIsoFragmentation) ;
1001 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
1002 fhPtIsoPi0->SetYTitle("N");
1003 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
1004 outputContainer->Add(fhPtIsoPi0) ;
1006 fhPhiIsoPi0 = new TH2F
1007 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1008 fhPhiIsoPi0->SetYTitle("#phi");
1009 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
1010 outputContainer->Add(fhPhiIsoPi0) ;
1012 fhEtaIsoPi0 = new TH2F
1013 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1014 fhEtaIsoPi0->SetYTitle("#eta");
1015 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
1016 outputContainer->Add(fhEtaIsoPi0) ;
1018 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
1019 fhPtIsoPi0Decay->SetYTitle("N");
1020 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
1021 outputContainer->Add(fhPtIsoPi0Decay) ;
1023 fhPhiIsoPi0Decay = new TH2F
1024 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1025 fhPhiIsoPi0Decay->SetYTitle("#phi");
1026 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
1027 outputContainer->Add(fhPhiIsoPi0Decay) ;
1029 fhEtaIsoPi0Decay = new TH2F
1030 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1031 fhEtaIsoPi0Decay->SetYTitle("#eta");
1032 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
1033 outputContainer->Add(fhEtaIsoPi0Decay) ;
1035 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
1036 fhPtIsoEtaDecay->SetYTitle("N");
1037 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
1038 outputContainer->Add(fhPtIsoEtaDecay) ;
1040 fhPhiIsoEtaDecay = new TH2F
1041 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1042 fhPhiIsoEtaDecay->SetYTitle("#phi");
1043 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1044 outputContainer->Add(fhPhiIsoEtaDecay) ;
1046 fhEtaIsoEtaDecay = new TH2F
1047 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1048 fhEtaIsoEtaDecay->SetYTitle("#eta");
1049 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1050 outputContainer->Add(fhEtaIsoEtaDecay) ;
1052 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
1053 fhPtIsoOtherDecay->SetYTitle("N");
1054 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
1055 outputContainer->Add(fhPtIsoOtherDecay) ;
1057 fhPhiIsoOtherDecay = new TH2F
1058 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1059 fhPhiIsoOtherDecay->SetYTitle("#phi");
1060 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1061 outputContainer->Add(fhPhiIsoOtherDecay) ;
1063 fhEtaIsoOtherDecay = new TH2F
1064 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1065 fhEtaIsoOtherDecay->SetYTitle("#eta");
1066 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1067 outputContainer->Add(fhEtaIsoOtherDecay) ;
1069 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
1070 // fhPtIsoConversion->SetYTitle("N");
1071 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
1072 // outputContainer->Add(fhPtIsoConversion) ;
1074 // fhPhiIsoConversion = new TH2F
1075 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1076 // fhPhiIsoConversion->SetYTitle("#phi");
1077 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1078 // outputContainer->Add(fhPhiIsoConversion) ;
1080 // fhEtaIsoConversion = new TH2F
1081 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1082 // fhEtaIsoConversion->SetYTitle("#eta");
1083 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1084 // outputContainer->Add(fhEtaIsoConversion) ;
1086 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
1087 fhPtIsoHadron->SetYTitle("N");
1088 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
1089 outputContainer->Add(fhPtIsoHadron) ;
1092 fhPhiIsoHadron = new TH2F
1093 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1094 fhPhiIsoHadron->SetYTitle("#phi");
1095 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
1096 outputContainer->Add(fhPhiIsoHadron) ;
1098 fhEtaIsoHadron = new TH2F
1099 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1100 fhEtaIsoHadron->SetYTitle("#eta");
1101 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
1102 outputContainer->Add(fhEtaIsoHadron) ;
1108 // Not Isolated histograms, reference histograms
1110 fhENoIso = new TH1F("hENoIso",
1111 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),
1112 nptbins,ptmin,ptmax);
1113 fhENoIso->SetYTitle("N");
1114 fhENoIso->SetXTitle("p_{T}(GeV/c)");
1115 outputContainer->Add(fhENoIso) ;
1117 fhPtNoIso = new TH1F("hPtNoIso",
1118 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),
1119 nptbins,ptmin,ptmax);
1120 fhPtNoIso->SetYTitle("N");
1121 fhPtNoIso->SetXTitle("p_{T}(GeV/c)");
1122 outputContainer->Add(fhPtNoIso) ;
1124 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
1125 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),
1126 nptbins,ptmin,ptmax,10,0,10);
1127 fhPtNLocMaxNoIso->SetYTitle("NLM");
1128 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
1129 outputContainer->Add(fhPtNLocMaxNoIso) ;
1131 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
1132 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),
1133 netabins,etamin,etamax,nphibins,phimin,phimax);
1134 fhEtaPhiNoIso->SetXTitle("#eta");
1135 fhEtaPhiNoIso->SetYTitle("#phi");
1136 outputContainer->Add(fhEtaPhiNoIso) ;
1138 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
1139 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),
1140 nptbins,ptmin,ptmax);
1141 fhPtDecayNoIso->SetYTitle("N");
1142 fhPtDecayNoIso->SetXTitle("p_{T}(GeV/c)");
1143 outputContainer->Add(fhPtDecayNoIso) ;
1145 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
1146 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),
1147 netabins,etamin,etamax,nphibins,phimin,phimax);
1148 fhEtaPhiDecayNoIso->SetXTitle("#eta");
1149 fhEtaPhiDecayNoIso->SetYTitle("#phi");
1150 outputContainer->Add(fhEtaPhiDecayNoIso) ;
1156 fhPtNoIsoPi0 = new TH1F
1157 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
1158 fhPtNoIsoPi0->SetYTitle("N");
1159 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
1160 outputContainer->Add(fhPtNoIsoPi0) ;
1162 fhPtNoIsoPi0Decay = new TH1F
1163 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
1164 fhPtNoIsoPi0Decay->SetYTitle("N");
1165 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
1166 outputContainer->Add(fhPtNoIsoPi0Decay) ;
1168 fhPtNoIsoEtaDecay = new TH1F
1169 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
1170 fhPtNoIsoEtaDecay->SetYTitle("N");
1171 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
1172 outputContainer->Add(fhPtNoIsoEtaDecay) ;
1174 fhPtNoIsoOtherDecay = new TH1F
1175 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
1176 fhPtNoIsoOtherDecay->SetYTitle("N");
1177 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
1178 outputContainer->Add(fhPtNoIsoOtherDecay) ;
1180 fhPtNoIsoPrompt = new TH1F
1181 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
1182 fhPtNoIsoPrompt->SetYTitle("N");
1183 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
1184 outputContainer->Add(fhPtNoIsoPrompt) ;
1186 fhPtIsoMCPhoton = new TH1F
1187 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
1188 fhPtIsoMCPhoton->SetYTitle("N");
1189 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1190 outputContainer->Add(fhPtIsoMCPhoton) ;
1192 fhPtNoIsoMCPhoton = new TH1F
1193 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
1194 fhPtNoIsoMCPhoton->SetYTitle("N");
1195 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1196 outputContainer->Add(fhPtNoIsoMCPhoton) ;
1198 // fhPtNoIsoConversion = new TH1F
1199 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
1200 // fhPtNoIsoConversion->SetYTitle("N");
1201 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
1202 // outputContainer->Add(fhPtNoIsoConversion) ;
1204 fhPtNoIsoFragmentation = new TH1F
1205 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
1206 fhPtNoIsoFragmentation->SetYTitle("N");
1207 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
1208 outputContainer->Add(fhPtNoIsoFragmentation) ;
1210 fhPtNoIsoHadron = new TH1F
1211 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
1212 fhPtNoIsoHadron->SetYTitle("N");
1213 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
1214 outputContainer->Add(fhPtNoIsoHadron) ;
1221 const Int_t buffersize = 255;
1222 char name[buffersize];
1223 char title[buffersize];
1224 for(Int_t icone = 0; icone<fNCones; icone++)
1226 // sum pt in cone vs. pt leading
1227 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
1228 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1229 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1230 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1231 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1232 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
1234 // pt in cone vs. pt leading
1235 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
1236 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1237 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1238 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1239 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1240 outputContainer->Add(fhPtLeadingPt[icone]) ;
1242 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
1243 snprintf(name, buffersize,"hFRSumPtLeadingPt_Cone_%d",icone);
1244 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1245 fhFRSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1246 fhFRSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1247 fhFRSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1248 outputContainer->Add(fhFRSumPtLeadingPt[icone]) ;
1250 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
1251 snprintf(name, buffersize,"hFRPtLeadingPt_Cone_%d",icone);
1252 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1253 fhFRPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1254 fhFRPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1255 fhFRPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1256 outputContainer->Add(fhFRPtLeadingPt[icone]) ;
1261 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
1262 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1263 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1264 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1265 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
1266 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
1268 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
1269 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
1270 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1271 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1272 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
1273 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
1275 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
1276 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1277 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1278 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1279 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
1280 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
1282 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
1283 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1284 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1285 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1286 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
1287 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
1289 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
1290 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1291 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1292 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1293 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1294 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
1296 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
1297 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1298 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1299 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1300 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1301 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
1303 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
1304 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1305 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1306 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1307 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
1308 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
1310 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
1311 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1312 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1313 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1314 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
1315 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
1319 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
1322 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
1323 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1324 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1325 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1326 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
1328 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
1329 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1330 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1331 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1332 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
1335 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
1336 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1337 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1338 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1339 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1340 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
1342 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
1343 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]);
1344 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1345 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1346 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1347 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
1349 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
1350 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]);
1351 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1352 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1353 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1354 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
1356 // pt decays isolated
1357 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1358 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]);
1359 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1360 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1361 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
1363 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1364 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]);
1365 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1366 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1367 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
1369 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1370 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]);
1371 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1372 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1373 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1374 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
1376 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1377 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]);
1378 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1379 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1380 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1381 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
1383 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1384 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]);
1385 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1386 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1387 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1388 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
1392 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
1393 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1394 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1395 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
1396 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
1397 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
1399 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
1400 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1401 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1402 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
1403 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
1404 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
1406 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
1407 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1408 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1409 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
1410 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
1411 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
1413 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
1414 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]);
1415 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1416 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
1417 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
1418 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
1420 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
1421 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]);
1422 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1423 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
1424 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
1425 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
1428 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1429 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]);
1430 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1431 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
1432 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
1433 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
1435 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1436 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]);
1437 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1438 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
1439 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
1440 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
1443 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1444 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]);
1445 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1446 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1447 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1448 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
1450 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1451 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]);
1452 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1453 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
1454 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
1455 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
1457 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1458 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]);
1459 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1460 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1461 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1462 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
1467 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
1468 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1469 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1470 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1471 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
1473 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
1474 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1475 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1476 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1477 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
1479 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1480 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1481 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1482 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1483 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
1485 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1486 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1487 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1488 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1489 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
1491 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
1492 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1493 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1494 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1495 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
1497 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
1498 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1499 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1500 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1501 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
1503 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1504 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1505 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1506 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1507 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
1509 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1510 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1511 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1512 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1513 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
1515 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1516 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1517 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1518 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1519 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
1521 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1522 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1523 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1524 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1525 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
1528 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1529 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1530 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1531 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1532 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
1534 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1535 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1536 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1537 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1538 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
1540 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
1541 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1542 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1543 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1544 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
1546 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
1547 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1548 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1549 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1550 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
1552 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
1553 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1554 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1555 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1556 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
1558 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
1559 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1560 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1561 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1562 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
1569 if(fFillPileUpHistograms)
1571 for (Int_t i = 0; i < 7 ; i++)
1573 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
1574 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f, pile-up event by %s",r,ptthre,ptfrac,pileUpName[i].Data()),
1575 nptbins,ptmin,ptmax);
1576 fhEIsoPileUp[i]->SetYTitle("dN / dE");
1577 fhEIsoPileUp[i]->SetXTitle("E (GeV/c)");
1578 outputContainer->Add(fhEIsoPileUp[i]) ;
1580 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
1581 Form("Number of isolated particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr}= %2.2f, pile-up event by %s ",r,ptthre,ptfrac,pileUpName[i].Data()),
1582 nptbins,ptmin,ptmax);
1583 fhPtIsoPileUp[i]->SetYTitle("dN / p_{T}");
1584 fhPtIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
1585 outputContainer->Add(fhPtIsoPileUp[i]) ;
1587 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
1588 Form("Number of not isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f, pile-up event by %s",r,ptthre,ptfrac,pileUpName[i].Data()),
1589 nptbins,ptmin,ptmax);
1590 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
1591 fhENoIsoPileUp[i]->SetXTitle("E (GeV/c)");
1592 outputContainer->Add(fhENoIsoPileUp[i]) ;
1594 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
1595 Form("Number of not isolated particles vs p_{T} for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr}= %2.2f, pile-up event by %s ",r,ptthre,ptfrac,pileUpName[i].Data()),
1596 nptbins,ptmin,ptmax);
1597 fhPtNoIsoPileUp[i]->SetYTitle("dN / p_{T}");
1598 fhPtNoIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
1599 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
1602 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1603 fhTimeENoCut->SetXTitle("E (GeV)");
1604 fhTimeENoCut->SetYTitle("time (ns)");
1605 outputContainer->Add(fhTimeENoCut);
1607 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1608 fhTimeESPD->SetXTitle("E (GeV)");
1609 fhTimeESPD->SetYTitle("time (ns)");
1610 outputContainer->Add(fhTimeESPD);
1612 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1613 fhTimeESPDMulti->SetXTitle("E (GeV)");
1614 fhTimeESPDMulti->SetYTitle("time (ns)");
1615 outputContainer->Add(fhTimeESPDMulti);
1617 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1618 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
1619 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
1620 outputContainer->Add(fhTimeNPileUpVertSPD);
1622 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
1623 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
1624 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
1625 outputContainer->Add(fhTimeNPileUpVertTrack);
1627 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1628 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
1629 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
1630 outputContainer->Add(fhTimeNPileUpVertContributors);
1632 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);
1633 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
1634 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
1635 outputContainer->Add(fhTimePileUpMainVertexZDistance);
1637 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
1638 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
1639 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
1640 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
1643 return outputContainer ;
1647 //__________________________________
1648 void AliAnaParticleIsolation::Init()
1650 // Do some checks and init stuff
1652 // In case of several cone and thresholds analysis, open the cuts for the filling of the
1653 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
1654 // The different cones, thresholds are tested for this list of tracks, clusters.
1657 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
1658 GetIsolationCut()->SetPtThreshold(100);
1659 GetIsolationCut()->SetPtFraction(100);
1660 GetIsolationCut()->SetConeSize(1);
1664 //____________________________________________
1665 void AliAnaParticleIsolation::InitParameters()
1668 //Initialize the parameters of the analysis.
1669 SetInputAODName("PWG4Particle");
1670 SetAODObjArrayName("IsolationCone");
1671 AddToHistogramsName("AnaIsolation_");
1673 fCalorimeter = "PHOS" ;
1674 fReMakeIC = kFALSE ;
1675 fMakeSeveralIC = kFALSE ;
1677 //----------- Several IC-----------------
1680 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
1681 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
1682 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
1683 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
1685 //------------- Histograms settings -------
1686 fHistoNPtSumBins = 100 ;
1687 fHistoPtSumMax = 50 ;
1688 fHistoPtSumMin = 0. ;
1690 fHistoNPtInConeBins = 100 ;
1691 fHistoPtInConeMax = 50 ;
1692 fHistoPtInConeMin = 0. ;
1696 //__________________________________________________
1697 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
1699 //Do analysis and fill aods
1700 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
1702 if(!GetInputAODBranch())
1704 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
1708 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
1710 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());
1714 Int_t n = 0, nfrac = 0;
1715 Bool_t isolated = kFALSE ;
1716 Float_t coneptsum = 0 ;
1717 TObjArray * pl = 0x0; ;
1719 //Select the calorimeter for candidate isolation with neutral particles
1720 if (fCalorimeter == "PHOS" )
1721 pl = GetPHOSClusters();
1722 else if (fCalorimeter == "EMCAL")
1723 pl = GetEMCALClusters();
1725 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
1726 Double_t ptLeading = 0. ;
1727 Int_t idLeading = -1 ;
1728 TLorentzVector mom ;
1729 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1730 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
1732 for(Int_t iaod = 0; iaod < naod; iaod++)
1734 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1736 //If too small or too large pt, skip
1737 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
1739 //check if it is low pt trigger particle
1740 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
1741 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
1744 continue ; //trigger should not come from underlying event
1747 //vertex cut in case of mixing
1748 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
1749 if(check == 0) continue;
1750 if(check == -1) return;
1752 //find the leading particles with highest momentum
1753 if ( aodinput->Pt() > ptLeading )
1755 ptLeading = aodinput->Pt() ;
1759 aodinput->SetLeadingParticle(kFALSE);
1761 }//finish searching for leading trigger particle
1763 // Check isolation of leading particle
1764 if(idLeading < 0) return;
1766 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
1767 aodinput->SetLeadingParticle(kTRUE);
1769 // Check isolation only of clusters in fiducial region
1770 if(IsFiducialCutOn())
1772 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
1776 //After cuts, study isolation
1777 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1778 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
1779 GetReader(), GetCaloPID(),
1780 kTRUE, aodinput, GetAODObjArrayName(),
1781 n,nfrac,coneptsum, isolated);
1783 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
1787 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
1788 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
1793 //_________________________________________________________
1794 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
1796 //Do analysis and fill histograms
1798 Int_t n = 0, nfrac = 0;
1799 Bool_t isolated = kFALSE ;
1800 Float_t coneptsum = 0 ;
1801 Float_t etaUEptsum = 0 ;
1802 Float_t phiUEptsum = 0 ;
1804 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
1806 //Loop on stored AOD
1807 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1808 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
1810 //Get vertex for photon momentum calculation
1811 Double_t vertex[] = {0,0,0} ; //vertex ;
1812 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
1814 GetReader()->GetVertex(vertex);
1817 for(Int_t iaod = 0; iaod < naod ; iaod++)
1819 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1821 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
1823 // Check isolation only of clusters in fiducial region
1824 if(IsFiducialCutOn())
1826 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
1827 if(! in ) continue ;
1830 Bool_t isolation = aod->IsIsolated();
1831 Bool_t decay = aod->IsTagged();
1832 Float_t energy = aod->E();
1833 Float_t pt = aod->Pt();
1834 Float_t phi = aod->Phi();
1835 Float_t eta = aod->Eta();
1836 Float_t conesize = GetIsolationCut()->GetConeSize();
1838 //Recover reference arrays with clusters and tracks
1839 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
1840 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
1842 //If too small or too large pt, skip
1843 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
1845 // --- In case of redoing isolation from delta AOD ----
1849 //Analysis of multiple IC at same time
1850 MakeSeveralICAnalysis(aod);
1855 //In case a more strict IC is needed in the produced AOD
1856 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1857 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
1858 GetReader(), GetCaloPID(),
1860 n,nfrac,coneptsum, isolated);
1861 fhConeSumPt->Fill(pt,coneptsum);
1862 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1865 // ---------------------------------------------------
1867 //Fill pt distribution of particles in cone
1870 Double_t sumptFR = 0. ;
1871 TObjArray * trackList = GetCTSTracks() ;
1872 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
1874 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
1878 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
1882 //fill histogram for UE in phi band
1883 if(track->Eta() > (eta-conesize) && track->Eta() < (eta+conesize))
1885 phiUEptsum+=track->Pt();
1886 fhPhiBand->Fill(track->Eta(),track->Phi());
1888 //fill histogram for UE in eta band in EMCal acceptance
1889 if(track->Phi() > (phi-conesize) && track->Phi() < (phi+conesize) && track->Eta() > -0.6 && track->Eta() < 0.6)
1891 etaUEptsum+=track->Pt();
1892 fhEtaBand->Fill(track->Eta(),track->Phi());
1895 //fill the histograms at forward range
1896 Double_t dPhi = phi - track->Phi() + TMath::PiOver2();
1897 Double_t dEta = eta - track->Eta();
1898 Double_t arg = dPhi*dPhi + dEta*dEta;
1899 if(TMath::Sqrt(arg) < conesize)
1901 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1902 sumptFR+=track->Pt();
1905 dPhi = phi - track->Phi() - TMath::PiOver2();
1906 arg = dPhi*dPhi + dEta*dEta;
1907 if(TMath::Sqrt(arg) < conesize)
1909 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1910 sumptFR+=track->Pt();
1914 fhFRConeSumPt->Fill(pt,sumptFR);
1917 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1919 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1920 Float_t pTtrack = track->Pt();
1921 fhPtInCone ->Fill(pt,pTtrack);
1922 fhPtTrackInCone->Fill(pt,pTtrack);
1923 if(fFillPileUpHistograms)
1925 ULong_t status = track->GetStatus();
1926 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1927 //Double32_t tof = track->GetTOFsignal()*1e-3;
1928 Int_t trackBC = track->GetTOFBunchCrossing(bz);
1930 if( okTOF && trackBC!=0 )fhPtTrackInConeOtherBC->Fill(pt,pTtrack);
1932 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(pt,pTtrack);
1933 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(pt,pTtrack); }
1934 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(pt,pTtrack);
1935 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(pt,pTtrack);
1936 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(pt,pTtrack);
1937 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(pt,pTtrack);
1938 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(pt,pTtrack);
1939 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(pt,pTtrack);
1942 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1950 TLorentzVector mom ;
1951 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
1953 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
1954 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
1956 //fill histogram for UE in phi band
1957 if(mom.Eta() > (eta-conesize) && mom.Eta() < (eta+conesize))
1959 phiUEptsum+=mom.Pt();
1960 fhPhiBand->Fill(mom.Eta(),mom.Phi());
1962 //fill histogram for UE in eta band in EMCal acceptance
1963 if(mom.Phi() > (phi-conesize) && mom.Phi() < (phi+conesize))
1965 etaUEptsum+=mom.Pt();
1966 fhEtaBand->Fill(mom.Eta(),mom.Phi());
1969 fhPtInCone->Fill(pt, mom.Pt());
1970 if(fFillPileUpHistograms)
1972 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(pt,mom.Pt());
1973 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(pt,mom.Pt());
1974 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(pt,mom.Pt());
1975 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(pt,mom.Pt());
1976 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(pt,mom.Pt());
1977 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(pt,mom.Pt());
1978 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(pt,mom.Pt());
1981 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
1982 coneptsum+=mom.Pt();
1986 //normalize phi/eta band per area unit
1987 fhPhiUEConeSumPt->Fill(pt, phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1988 fhEtaUEConeSumPt->Fill(pt, etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1990 Double_t sumPhiUESub = coneptsum-(phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1991 Double_t sumEtaUESub = coneptsum-(etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1993 fhConeSumPtPhiUESub->Fill(pt,sumPhiUESub);
1994 fhConeSumPtEtaUESub->Fill(pt,sumEtaUESub);
1997 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsum);
1999 if(!fReMakeIC) fhConeSumPt->Fill(pt,coneptsum);
2001 Int_t mcTag = aod->GetTag() ;
2002 Int_t clID = aod->GetCaloLabel(0) ;
2003 Int_t nlm = aod->GetFiducialArea();
2004 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
2006 FillTrackMatchingShowerShapeControlHistograms(isolation, clID,nlm,mcTag,reftracks,refclusters,aod,GetReader(), GetCaloPID());
2010 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
2012 // Fill histograms to undertand pile-up before other cuts applied
2013 // Remember to relax time cuts in the reader
2014 FillPileUpHistograms(clID);
2016 fhEIso ->Fill(energy);
2018 fhPhiIso ->Fill(pt,phi);
2019 fhEtaIso ->Fill(pt,eta);
2020 fhEtaPhiIso ->Fill(eta,phi);
2021 fhPtNLocMaxIso->Fill(pt,nlm);
2025 fhPtDecayIso->Fill(pt);
2026 fhEtaPhiDecayIso->Fill(eta,phi);
2029 if(fFillPileUpHistograms)
2031 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
2032 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
2033 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
2034 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
2035 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
2036 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
2037 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
2043 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
2045 fhPtIsoMCPhoton ->Fill(pt);
2048 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
2050 fhPtIsoPrompt ->Fill(pt);
2051 fhPhiIsoPrompt ->Fill(pt,phi);
2052 fhEtaIsoPrompt ->Fill(pt,eta);
2054 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
2056 fhPtIsoFragmentation ->Fill(pt);
2057 fhPhiIsoFragmentation ->Fill(pt,phi);
2058 fhEtaIsoFragmentation ->Fill(pt,eta);
2060 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
2062 fhPtIsoPi0 ->Fill(pt);
2063 fhPhiIsoPi0 ->Fill(pt,phi);
2064 fhEtaIsoPi0 ->Fill(pt,eta);
2066 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
2068 fhPtIsoPi0Decay ->Fill(pt);
2069 fhPhiIsoPi0Decay ->Fill(pt,phi);
2070 fhEtaIsoPi0Decay ->Fill(pt,eta);
2072 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
2074 fhPtIsoEtaDecay ->Fill(pt);
2075 fhPhiIsoEtaDecay ->Fill(pt,phi);
2076 fhEtaIsoEtaDecay ->Fill(pt,eta);
2078 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
2080 fhPtIsoOtherDecay ->Fill(pt);
2081 fhPhiIsoOtherDecay ->Fill(pt,phi);
2082 fhEtaIsoOtherDecay ->Fill(pt,eta);
2084 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
2086 // fhPtIsoConversion ->Fill(pt);
2087 // fhPhiIsoConversion ->Fill(pt,phi);
2088 // fhEtaIsoConversion ->Fill(pt,eta);
2090 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
2092 fhPtIsoHadron ->Fill(pt);
2093 fhPhiIsoHadron ->Fill(pt,phi);
2094 fhEtaIsoHadron ->Fill(pt,eta);
2096 }//Histograms with MC
2098 }//Isolated histograms
2099 else // NON isolated
2101 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
2103 fhENoIso ->Fill(energy);
2104 fhPtNoIso ->Fill(pt);
2105 fhEtaPhiNoIso ->Fill(eta,phi);
2106 fhPtNLocMaxNoIso->Fill(pt,nlm);
2108 if(fFillPileUpHistograms)
2110 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
2111 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
2112 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
2113 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
2114 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
2115 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
2116 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
2121 fhPtDecayNoIso ->Fill(pt);
2122 fhEtaPhiDecayNoIso->Fill(eta,phi);
2127 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
2128 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
2129 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
2130 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
2131 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
2132 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
2133 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
2134 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
2135 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
2143 //_____________________________________________________________________________________
2144 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
2147 //Isolation Cut Analysis for both methods and different pt cuts and cones
2148 Float_t ptC = ph->Pt();
2149 Float_t etaC = ph->Eta();
2150 Float_t phiC = ph->Phi();
2151 Int_t tag = ph->GetTag();
2152 Bool_t decay = ph->IsTagged();
2154 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
2156 //Keep original setting used when filling AODs, reset at end of analysis
2157 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
2158 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
2159 Float_t rorg = GetIsolationCut()->GetConeSize();
2161 Float_t coneptsum = 0 ;
2162 Int_t n [10][10];//[fNCones][fNPtThresFrac];
2163 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
2164 Bool_t isolated = kFALSE;
2166 Int_t nFracCone = 0;
2168 // fill hist with all particles before isolation criteria
2169 fhPtNoIso ->Fill(ptC);
2170 fhEtaPhiNoIso->Fill(etaC,phiC);
2174 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
2175 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
2176 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
2177 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
2178 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
2179 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
2180 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
2181 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
2182 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
2187 fhPtDecayNoIso ->Fill(ptC);
2188 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
2190 //Get vertex for photon momentum calculation
2191 Double_t vertex[] = {0,0,0} ; //vertex ;
2192 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
2194 GetReader()->GetVertex(vertex);
2197 //Loop on cone sizes
2198 for(Int_t icone = 0; icone<fNCones; icone++)
2200 //Recover reference arrays with clusters and tracks
2201 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
2202 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
2204 //If too small or too large pt, skip
2205 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
2207 //In case a more strict IC is needed in the produced AOD
2209 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
2211 GetIsolationCut()->SetSumPtThreshold(100);
2212 GetIsolationCut()->SetPtThreshold(100);
2213 GetIsolationCut()->SetPtFraction(100);
2214 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
2215 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2216 GetReader(), GetCaloPID(),
2218 nCone,nFracCone,coneptsum, isolated);
2221 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
2223 // retreive pt tracks to fill histo vs. pt leading
2224 //Fill pt distribution of particles in cone
2225 //fhPtLeadingPt(),fhFRSumPtLeadingPt(),fhFRPtLeadingPt(),
2229 Double_t sumptFR = 0. ;
2230 TObjArray * trackList = GetCTSTracks() ;
2231 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
2233 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
2234 //fill the histograms at forward range
2237 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
2241 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
2242 Double_t dEta = etaC - track->Eta();
2243 Double_t arg = dPhi*dPhi + dEta*dEta;
2244 if(TMath::Sqrt(arg) < fConeSizes[icone])
2246 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2247 sumptFR+=track->Pt();
2250 dPhi = phiC - track->Phi() - TMath::PiOver2();
2251 arg = dPhi*dPhi + dEta*dEta;
2252 if(TMath::Sqrt(arg) < fConeSizes[icone])
2254 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2255 sumptFR+=track->Pt();
2258 fhFRSumPtLeadingPt[icone]->Fill(ptC,sumptFR);
2261 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
2263 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
2264 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2265 coneptsum+=track->Pt();
2271 TLorentzVector mom ;
2272 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
2274 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
2275 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
2277 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
2278 coneptsum+=mom.Pt();
2284 //Loop on ptthresholds
2285 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
2288 nfrac[icone][ipt]=0;
2289 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
2290 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
2291 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
2293 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2294 GetReader(), GetCaloPID(),
2296 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2298 if(!isolated) continue;
2299 //Normal ptThreshold cut
2301 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",
2302 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2303 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
2305 if(n[icone][ipt] == 0)
2307 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
2308 fhPtThresIsolated[icone][ipt]->Fill(ptC);
2309 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
2313 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
2314 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
2319 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2320 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2321 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2322 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2323 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2324 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2325 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2326 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
2330 // pt in cone fraction
2331 if(nfrac[icone][ipt] == 0)
2333 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
2334 fhPtFracIsolated[icone][ipt]->Fill(ptC);
2335 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
2339 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
2340 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
2345 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2346 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2347 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2348 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2349 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2350 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2351 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2352 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
2356 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
2358 //Pt threshold on pt cand/ sum in cone histograms
2359 if(coneptsum<fSumPtThresholds[ipt])
2360 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
2361 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
2362 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
2363 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
2366 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
2367 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
2371 // pt sum pt frac method
2372 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
2374 if(coneptsum < fPtFractions[ipt]*ptC)
2376 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
2377 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
2378 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
2382 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
2383 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
2388 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
2389 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
2390 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
2391 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
2392 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
2393 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
2397 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
2398 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
2406 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
2407 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
2408 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
2409 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
2410 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
2411 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
2412 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
2413 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
2418 //Reset original parameters for AOD analysis
2419 GetIsolationCut()->SetPtThreshold(ptthresorg);
2420 GetIsolationCut()->SetPtFraction(ptfracorg);
2421 GetIsolationCut()->SetConeSize(rorg);
2425 //_____________________________________________________________
2426 void AliAnaParticleIsolation::Print(const Option_t * opt) const
2429 //Print some relevant parameters set for the analysis
2433 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
2434 AliAnaCaloTrackCorrBaseClass::Print(" ");
2436 printf("ReMake Isolation = %d \n", fReMakeIC) ;
2437 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
2438 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
2442 printf("N Cone Sizes = %d\n", fNCones) ;
2443 printf("Cone Sizes = \n") ;
2444 for(Int_t i = 0; i < fNCones; i++)
2445 printf(" %1.2f;", fConeSizes[i]) ;
2448 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
2449 printf(" pT thresholds = \n") ;
2450 for(Int_t i = 0; i < fNPtThresFrac; i++)
2451 printf(" %2.2f;", fPtThresholds[i]) ;
2455 printf(" pT fractions = \n") ;
2456 for(Int_t i = 0; i < fNPtThresFrac; i++)
2457 printf(" %2.2f;", fPtFractions[i]) ;
2461 printf("sum pT thresholds = \n") ;
2462 for(Int_t i = 0; i < fNPtThresFrac; i++)
2463 printf(" %2.2f;", fSumPtThresholds[i]) ;
2468 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
2469 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);