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 fhPtInConePileUp(), fhPtInConeCent(0),
69 fhFRConeSumPt(0), fhPtInFRCone(0), fhPhiUEConeSumPt(0),
70 fhEtaUEConeSumPt(0), fhEtaBand(0), fhPhiBand(0),
71 fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
73 fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
74 fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
75 fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
76 fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
77 fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
78 fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
79 fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
80 fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
81 fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
82 fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
83 fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
84 fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
85 //fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
86 //fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
87 fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
88 fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
89 fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
90 fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
91 fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
92 //fhPtNoIsoConversion(0),
93 fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
95 fhSumPtLeadingPt(), fhPtLeadingPt(),
96 fhFRSumPtLeadingPt(), fhFRPtLeadingPt(),
97 fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
98 fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
99 fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
100 fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
101 fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
102 fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
103 fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
104 // Cluster control histograms
105 fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
106 fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
107 fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
108 fhELambda0TRD(), fhELambda1TRD(),
109 fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
110 fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
111 // Number of local maxima in cluster
113 fhELambda0LocMax1(), fhELambda1LocMax1(),
114 fhELambda0LocMax2(), fhELambda1LocMax2(),
115 fhELambda0LocMaxN(), fhELambda1LocMaxN(),
117 fhEIsoPileUp(), fhPtIsoPileUp(),
118 fhENoIsoPileUp(), fhPtNoIsoPileUp(),
119 fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
120 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
121 fhTimeNPileUpVertContributors(0),
122 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
123 // Histograms settings
124 fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
125 fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
129 //Initialize parameters
132 for(Int_t i = 0; i < 5 ; i++)
136 fhPtSumIsolatedPrompt [i] = 0 ;
137 fhPtSumIsolatedFragmentation[i] = 0 ;
138 fhPtSumIsolatedPi0Decay [i] = 0 ;
139 fhPtSumIsolatedPi0 [i] = 0 ;
140 fhPtSumIsolatedEtaDecay [i] = 0 ;
141 fhPtSumIsolatedOtherDecay [i] = 0 ;
142 // fhPtSumIsolatedConversion [i] = 0 ;
143 fhPtSumIsolatedHadron [i] = 0 ;
145 for(Int_t j = 0; j < 5 ; j++)
147 fhPtThresIsolated [i][j] = 0 ;
148 fhPtFracIsolated [i][j] = 0 ;
149 fhPtSumIsolated [i][j] = 0 ;
151 fhEtaPhiPtThresIso [i][j] = 0 ;
152 fhEtaPhiPtThresDecayIso[i][j] = 0 ;
153 fhPtPtThresDecayIso [i][j] = 0 ;
155 fhEtaPhiPtFracIso [i][j] = 0 ;
156 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
157 fhPtPtFracDecayIso [i][j] = 0 ;
158 fhPtPtSumDecayIso [i][j] = 0 ;
159 fhPtSumDensityIso [i][j] = 0 ;
160 fhPtSumDensityDecayIso [i][j] = 0 ;
161 fhEtaPhiSumDensityIso [i][j] = 0 ;
162 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
163 fhPtFracPtSumIso [i][j] = 0 ;
164 fhPtFracPtSumDecayIso [i][j] = 0 ;
165 fhEtaPhiFracPtSumIso [i][j] = 0 ;
166 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
168 fhPtThresIsolatedPrompt [i][j] = 0 ;
169 fhPtThresIsolatedFragmentation[i][j] = 0 ;
170 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
171 fhPtThresIsolatedPi0 [i][j] = 0 ;
172 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
173 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
174 // fhPtThresIsolatedConversion [i][j] = 0 ;
175 fhPtThresIsolatedHadron [i][j] = 0 ;
177 fhPtFracIsolatedPrompt [i][j] = 0 ;
178 fhPtFracIsolatedFragmentation [i][j] = 0 ;
179 fhPtFracIsolatedPi0 [i][j] = 0 ;
180 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
181 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
182 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
183 // fhPtFracIsolatedConversion [i][j] = 0 ;
184 fhPtFracIsolatedHadron [i][j] = 0 ;
189 for(Int_t i = 0; i < 5 ; i++)
191 fPtFractions [i] = 0 ;
192 fPtThresholds [i] = 0 ;
193 fSumPtThresholds[i] = 0 ;
197 for(Int_t i = 0; i < 2 ; i++)
199 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
200 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
201 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
202 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
204 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
205 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
208 // Number of local maxima in cluster
210 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
211 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
212 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
218 for(Int_t i = 0 ; i < 7 ; i++)
220 fhPtInConePileUp[i] = 0 ;
221 fhEIsoPileUp [i] = 0 ;
222 fhPtIsoPileUp [i] = 0 ;
223 fhENoIsoPileUp [i] = 0 ;
224 fhPtNoIsoPileUp [i] = 0 ;
229 //_________________________________________________________________
230 void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
232 // Fill some histograms to understand pile-up
233 if(!fFillPileUpHistograms) return;
237 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
242 TObjArray* clusters = 0x0;
243 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
244 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
247 Float_t time = -1000;
251 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
252 energy = cluster->E();
253 time = cluster->GetTOF()*1e9;
256 //printf("E %f, time %f\n",energy,time);
257 AliVEvent * event = GetReader()->GetInputEvent();
259 fhTimeENoCut->Fill(energy,time);
260 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
261 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
263 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
265 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
266 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
268 // N pile up vertices
269 Int_t nVerticesSPD = -1;
270 Int_t nVerticesTracks = -1;
274 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
275 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
280 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
281 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
284 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
285 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
287 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
288 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
291 Float_t z1 = -1, z2 = -1;
293 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
297 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
298 ncont=pv->GetNContributors();
299 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
301 diamZ = esdEv->GetDiamondZ();
305 AliAODVertex *pv=aodEv->GetVertex(iVert);
306 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
307 ncont=pv->GetNContributors();
308 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
310 diamZ = aodEv->GetDiamondZ();
313 Double_t distZ = TMath::Abs(z2-z1);
314 diamZ = TMath::Abs(z2-diamZ);
316 fhTimeNPileUpVertContributors ->Fill(time,ncont);
317 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
318 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
323 //________________________________________________________________________________________________
324 void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(const Bool_t isolated,
325 const Int_t clusterID,
328 const TObjArray * plCTS,
329 const TObjArray * plNe,
330 AliAODPWG4ParticleCorrelation *pCandidate,
331 const AliCaloTrackReader * reader,
332 const AliCaloPID * pid)
334 // Fill Track matching and Shower Shape control histograms
335 if(!fFillTMHisto && !fFillSSHisto) return;
339 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
344 TObjArray* clusters = 0x0;
345 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
346 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
351 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
352 Float_t energy = cluster->E();
356 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
357 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
361 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
362 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
363 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
364 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
365 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
366 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
368 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy, cluster->GetM02());
369 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy, cluster->GetM02());
373 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
375 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
376 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
379 fhNLocMax[isolated]->Fill(energy,nMaxima);
380 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
381 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
382 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
386 //Analyse non-isolated events
389 Bool_t iso = kFALSE ;
390 Float_t coneptsum = 0 ;
391 GetIsolationCut()->SetPtThresholdMax(1.);
392 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
394 kFALSE, pCandidate, "",
395 n,nfrac,coneptsum, iso);
396 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
399 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
401 GetIsolationCut()->SetPtThresholdMax(10000.);
408 Float_t dZ = cluster->GetTrackDz();
409 Float_t dR = cluster->GetTrackDx();
411 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
413 dR = 2000., dZ = 2000.;
414 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
417 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
418 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
420 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
421 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
422 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
425 // Check dEdx and E/p of matched clusters
427 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
430 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
434 Float_t dEdx = track->GetTPCsignal();
435 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
437 Float_t eOverp = cluster->E()/track->P();
438 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
441 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
446 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
448 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
449 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
450 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
451 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
452 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
457 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
458 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
459 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
460 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
461 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
470 } // clusters array available
474 //______________________________________________________
475 TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
477 //Save parameters used for analysis
478 TString parList ; //this will be list of parameters used for this analysis.
479 const Int_t buffersize = 255;
480 char onePar[buffersize] ;
482 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
484 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
486 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
488 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
490 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
492 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
497 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
499 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
502 for(Int_t icone = 0; icone < fNCones ; icone++)
504 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
507 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
509 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
512 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
514 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
517 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
519 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
524 //Get parameters set in base class.
525 parList += GetBaseParametersList() ;
527 //Get parameters set in IC class.
528 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
530 return new TObjString(parList) ;
534 //________________________________________________________
535 TList * AliAnaParticleIsolation::GetCreateOutputObjects()
537 // Create histograms to be saved in output file and
538 // store them in outputContainer
539 TList * outputContainer = new TList() ;
540 outputContainer->SetName("IsolatedParticleHistos") ;
542 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
543 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
544 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
545 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
546 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
547 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
548 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
549 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
550 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
551 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
552 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
553 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
554 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
555 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
556 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
558 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
559 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
560 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
561 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
562 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
563 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
565 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
566 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
567 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
568 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
569 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
570 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
572 Int_t nptsumbins = fHistoNPtSumBins;
573 Float_t ptsummax = fHistoPtSumMax;
574 Float_t ptsummin = fHistoPtSumMin;
575 Int_t nptinconebins = fHistoNPtInConeBins;
576 Float_t ptinconemax = fHistoPtInConeMax;
577 Float_t ptinconemin = fHistoPtInConeMin;
579 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
580 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
581 Float_t r = GetIsolationCut()->GetConeSize();
583 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
587 TString hName [] = {"NoIso",""};
588 TString hTitle[] = {"Not isolated" ,"isolated"};
591 fhELambda0SSBkg = new TH2F
592 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
593 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
594 fhELambda0SSBkg->SetXTitle("E (GeV)");
595 outputContainer->Add(fhELambda0SSBkg) ;
598 for(Int_t iso = 0; iso < 2; iso++)
602 fhTrackMatchedDEta[iso] = new TH2F
603 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
604 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),
605 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
606 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
607 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
609 fhTrackMatchedDPhi[iso] = new TH2F
610 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
611 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),
612 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
613 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
614 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
616 fhTrackMatchedDEtaDPhi[iso] = new TH2F
617 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
618 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),
619 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
620 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
621 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
623 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
624 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
625 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
627 fhdEdx[iso] = new TH2F
628 (Form("hdEdx%s",hName[iso].Data()),
629 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),
630 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
631 fhdEdx[iso]->SetXTitle("E (GeV)");
632 fhdEdx[iso]->SetYTitle("<dE/dx>");
633 outputContainer->Add(fhdEdx[iso]);
635 fhEOverP[iso] = new TH2F
636 (Form("hEOverP%s",hName[iso].Data()),
637 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),
638 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
639 fhEOverP[iso]->SetXTitle("E (GeV)");
640 fhEOverP[iso]->SetYTitle("E/p");
641 outputContainer->Add(fhEOverP[iso]);
645 fhTrackMatchedMCParticle[iso] = new TH2F
646 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
647 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),
648 nptbins,ptmin,ptmax,8,0,8);
649 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
650 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
652 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
653 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
654 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
655 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
656 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
657 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
658 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
659 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
661 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
667 fhELambda0[iso] = new TH2F
668 (Form("hELambda0%s",hName[iso].Data()),
669 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
670 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
671 fhELambda0[iso]->SetXTitle("E (GeV)");
672 outputContainer->Add(fhELambda0[iso]) ;
676 fhELambda0MCPhoton[iso] = new TH2F
677 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
678 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
679 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
680 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
681 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
683 fhELambda0MCPi0[iso] = new TH2F
684 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
685 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
686 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
687 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
688 outputContainer->Add(fhELambda0MCPi0[iso]) ;
690 fhELambda0MCPi0Decay[iso] = new TH2F
691 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
692 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
693 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
694 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
695 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
697 fhELambda0MCEtaDecay[iso] = new TH2F
698 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
699 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
700 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
701 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
702 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
704 fhELambda0MCOtherDecay[iso] = new TH2F
705 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
706 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
707 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
708 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
709 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
711 fhELambda0MCHadron[iso] = new TH2F
712 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
713 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
714 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
715 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
716 outputContainer->Add(fhELambda0MCHadron[iso]) ;
719 fhELambda1[iso] = new TH2F
720 (Form("hELambda1%s",hName[iso].Data()),
721 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
722 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
723 fhELambda1[iso]->SetXTitle("E (GeV)");
724 outputContainer->Add(fhELambda1[iso]) ;
726 if(fCalorimeter=="EMCAL")
728 fhELambda0TRD[iso] = new TH2F
729 (Form("hELambda0TRD%s",hName[iso].Data()),
730 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
731 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
732 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
733 outputContainer->Add(fhELambda0TRD[iso]) ;
735 fhELambda1TRD[iso] = new TH2F
736 (Form("hELambda1TRD%s",hName[iso].Data()),
737 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
738 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
739 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
740 outputContainer->Add(fhELambda1TRD[iso]) ;
743 fhNLocMax[iso] = new TH2F
744 (Form("hNLocMax%s",hName[iso].Data()),
745 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
746 nptbins,ptmin,ptmax,10,0,10);
747 fhNLocMax[iso]->SetYTitle("N maxima");
748 fhNLocMax[iso]->SetXTitle("E (GeV)");
749 outputContainer->Add(fhNLocMax[iso]) ;
751 fhELambda0LocMax1[iso] = new TH2F
752 (Form("hELambda0LocMax1%s",hName[iso].Data()),
753 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
754 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
755 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
756 outputContainer->Add(fhELambda0LocMax1[iso]) ;
758 fhELambda1LocMax1[iso] = new TH2F
759 (Form("hELambda1LocMax1%s",hName[iso].Data()),
760 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
761 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
762 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
763 outputContainer->Add(fhELambda1LocMax1[iso]) ;
765 fhELambda0LocMax2[iso] = new TH2F
766 (Form("hELambda0LocMax2%s",hName[iso].Data()),
767 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
768 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
769 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
770 outputContainer->Add(fhELambda0LocMax2[iso]) ;
772 fhELambda1LocMax2[iso] = new TH2F
773 (Form("hELambda1LocMax2%s",hName[iso].Data()),
774 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
775 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
776 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
777 outputContainer->Add(fhELambda1LocMax2[iso]) ;
779 fhELambda0LocMaxN[iso] = new TH2F
780 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
781 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
782 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
783 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
784 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
786 fhELambda1LocMaxN[iso] = new TH2F
787 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
788 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
789 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
790 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
791 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
794 } // control histograms for isolated and non isolated objects
796 fhConeSumPt = new TH2F("hConePtSum",
797 Form("#Sigma p_{T} in isolation cone for R = %2.2f",r),
798 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
799 fhConeSumPt->SetYTitle("#Sigma p_{T}");
800 fhConeSumPt->SetXTitle("p_{T} (GeV/c)");
801 outputContainer->Add(fhConeSumPt) ;
803 fhPtInCone = new TH2F("hPtInCone",
804 Form("p_{T} in isolation cone for R = %2.2f",r),
805 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
806 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
807 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
808 outputContainer->Add(fhPtInCone) ;
810 if(fFillPileUpHistograms)
812 for (Int_t i = 0; i < 7 ; i++)
814 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
815 Form("p_{T} in isolation cone for R = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
816 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
817 fhPtInConePileUp[i]->SetYTitle("p_{T in cone} (GeV/c)");
818 fhPtInConePileUp[i]->SetXTitle("p_{T} (GeV/c)");
819 outputContainer->Add(fhPtInConePileUp[i]) ;
823 fhPtInConeCent = new TH2F("hPtInConeCent",
824 Form("p_{T} in isolation cone for R = %2.2f",r),
825 100,0,100,nptinconebins,ptinconemin,ptinconemax);
826 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
827 fhPtInConeCent->SetXTitle("centrality");
828 outputContainer->Add(fhPtInConeCent) ;
830 fhFRConeSumPt = new TH2F("hFRConePtSum",
831 Form("#Sigma p_{T} in the forward region isolation cone for R = %2.2f",r),
832 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
833 fhFRConeSumPt->SetYTitle("#Sigma p_{T}");
834 fhFRConeSumPt->SetXTitle("p_{T} (GeV/c)");
835 outputContainer->Add(fhFRConeSumPt) ;
837 fhPtInFRCone = new TH2F("hPtInFRCone",
838 Form("p_{T} in forward region isolation cone for R = %2.2f",r),
839 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
840 fhPtInFRCone->SetYTitle("p_{T in cone} (GeV/c)");
841 fhPtInFRCone->SetXTitle("p_{T} (GeV/c)");
842 outputContainer->Add(fhPtInFRCone) ;
844 fhPhiUEConeSumPt = new TH2F("hPhiUEConeSumPt",
845 Form("p_{T} in phi band around isolation cone for R = %2.2f",r),
846 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
847 fhPhiUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
848 fhPhiUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
849 outputContainer->Add(fhPhiUEConeSumPt) ;
851 fhEtaUEConeSumPt = new TH2F("hEtaUEConeSumPt",
852 Form("p_{T} in eta band around isolation cone for R = %2.2f",r),
853 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
854 fhEtaUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
855 fhEtaUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
856 outputContainer->Add(fhEtaUEConeSumPt) ;
858 fhEtaBand = new TH2F("fhEtaBand",
859 Form("Eta/Phi of particle in Eta band isolation cone for R = %2.2f",r),
860 netabins,etamin,etamax,nphibins,phimin,phimax);
861 fhEtaBand->SetXTitle("#eta");
862 fhEtaBand->SetYTitle("#phi");
863 outputContainer->Add(fhEtaBand) ;
865 fhPhiBand = new TH2F("fhPhiBand",
866 Form("Eta/Phi of particle in Phi band isolation cone for R = %2.2f",r),
867 netabins,etamin,etamax,nphibins,phimin,phimax);
868 fhPhiBand->SetXTitle("#eta");
869 fhPhiBand->SetYTitle("#phi");
870 outputContainer->Add(fhPhiBand) ;
872 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
873 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
874 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
875 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
876 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
877 outputContainer->Add(fhConeSumPtEtaUESub) ;
879 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
880 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
881 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
882 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
883 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
884 outputContainer->Add(fhConeSumPtPhiUESub) ;
886 fhEIso = new TH1F("hE",
887 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
888 nptbins,ptmin,ptmax);
889 fhEIso->SetYTitle("dN / dE");
890 fhEIso->SetXTitle("E (GeV/c)");
891 outputContainer->Add(fhEIso) ;
893 fhPtIso = new TH1F("hPt",
894 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),
895 nptbins,ptmin,ptmax);
896 fhPtIso->SetYTitle("dN / p_{T}");
897 fhPtIso->SetXTitle("p_{T} (GeV/c)");
898 outputContainer->Add(fhPtIso) ;
900 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
901 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),
902 nptbins,ptmin,ptmax,10,0,10);
903 fhPtNLocMaxIso->SetYTitle("NLM");
904 fhPtNLocMaxIso->SetXTitle("p_{T} (GeV/c)");
905 outputContainer->Add(fhPtNLocMaxIso) ;
907 fhPhiIso = new TH2F("hPhi",
908 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
909 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
910 fhPhiIso->SetYTitle("#phi");
911 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
912 outputContainer->Add(fhPhiIso) ;
914 fhEtaIso = new TH2F("hEta",
915 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
916 nptbins,ptmin,ptmax,netabins,etamin,etamax);
917 fhEtaIso->SetYTitle("#eta");
918 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
919 outputContainer->Add(fhEtaIso) ;
921 fhEtaPhiIso = new TH2F("hEtaPhiIso",
922 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),
923 netabins,etamin,etamax,nphibins,phimin,phimax);
924 fhEtaPhiIso->SetXTitle("#eta");
925 fhEtaPhiIso->SetYTitle("#phi");
926 outputContainer->Add(fhEtaPhiIso) ;
928 fhPtDecayIso = new TH1F("hPtDecayIso",
929 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),
930 nptbins,ptmin,ptmax);
931 fhPtDecayIso->SetYTitle("N");
932 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
933 outputContainer->Add(fhPtDecayIso) ;
935 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
936 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),
937 netabins,etamin,etamax,nphibins,phimin,phimax);
938 fhEtaPhiDecayIso->SetXTitle("#eta");
939 fhEtaPhiDecayIso->SetYTitle("#phi");
940 outputContainer->Add(fhEtaPhiDecayIso) ;
944 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
945 fhPtIsoPrompt->SetYTitle("N");
946 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
947 outputContainer->Add(fhPtIsoPrompt) ;
949 fhPhiIsoPrompt = new TH2F
950 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
951 fhPhiIsoPrompt->SetYTitle("#phi");
952 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
953 outputContainer->Add(fhPhiIsoPrompt) ;
955 fhEtaIsoPrompt = new TH2F
956 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
957 fhEtaIsoPrompt->SetYTitle("#eta");
958 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
959 outputContainer->Add(fhEtaIsoPrompt) ;
961 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
962 fhPtIsoFragmentation->SetYTitle("N");
963 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
964 outputContainer->Add(fhPtIsoFragmentation) ;
966 fhPhiIsoFragmentation = new TH2F
967 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
968 fhPhiIsoFragmentation->SetYTitle("#phi");
969 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
970 outputContainer->Add(fhPhiIsoFragmentation) ;
972 fhEtaIsoFragmentation = new TH2F
973 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
974 fhEtaIsoFragmentation->SetYTitle("#eta");
975 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
976 outputContainer->Add(fhEtaIsoFragmentation) ;
978 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
979 fhPtIsoPi0->SetYTitle("N");
980 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
981 outputContainer->Add(fhPtIsoPi0) ;
983 fhPhiIsoPi0 = new TH2F
984 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
985 fhPhiIsoPi0->SetYTitle("#phi");
986 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
987 outputContainer->Add(fhPhiIsoPi0) ;
989 fhEtaIsoPi0 = new TH2F
990 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
991 fhEtaIsoPi0->SetYTitle("#eta");
992 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
993 outputContainer->Add(fhEtaIsoPi0) ;
995 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
996 fhPtIsoPi0Decay->SetYTitle("N");
997 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
998 outputContainer->Add(fhPtIsoPi0Decay) ;
1000 fhPhiIsoPi0Decay = new TH2F
1001 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1002 fhPhiIsoPi0Decay->SetYTitle("#phi");
1003 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
1004 outputContainer->Add(fhPhiIsoPi0Decay) ;
1006 fhEtaIsoPi0Decay = new TH2F
1007 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1008 fhEtaIsoPi0Decay->SetYTitle("#eta");
1009 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
1010 outputContainer->Add(fhEtaIsoPi0Decay) ;
1012 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
1013 fhPtIsoEtaDecay->SetYTitle("N");
1014 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
1015 outputContainer->Add(fhPtIsoEtaDecay) ;
1017 fhPhiIsoEtaDecay = new TH2F
1018 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1019 fhPhiIsoEtaDecay->SetYTitle("#phi");
1020 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1021 outputContainer->Add(fhPhiIsoEtaDecay) ;
1023 fhEtaIsoEtaDecay = new TH2F
1024 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1025 fhEtaIsoEtaDecay->SetYTitle("#eta");
1026 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1027 outputContainer->Add(fhEtaIsoEtaDecay) ;
1029 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
1030 fhPtIsoOtherDecay->SetYTitle("N");
1031 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
1032 outputContainer->Add(fhPtIsoOtherDecay) ;
1034 fhPhiIsoOtherDecay = new TH2F
1035 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1036 fhPhiIsoOtherDecay->SetYTitle("#phi");
1037 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1038 outputContainer->Add(fhPhiIsoOtherDecay) ;
1040 fhEtaIsoOtherDecay = new TH2F
1041 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1042 fhEtaIsoOtherDecay->SetYTitle("#eta");
1043 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
1044 outputContainer->Add(fhEtaIsoOtherDecay) ;
1046 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
1047 // fhPtIsoConversion->SetYTitle("N");
1048 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
1049 // outputContainer->Add(fhPtIsoConversion) ;
1051 // fhPhiIsoConversion = new TH2F
1052 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1053 // fhPhiIsoConversion->SetYTitle("#phi");
1054 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1055 // outputContainer->Add(fhPhiIsoConversion) ;
1057 // fhEtaIsoConversion = new TH2F
1058 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1059 // fhEtaIsoConversion->SetYTitle("#eta");
1060 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
1061 // outputContainer->Add(fhEtaIsoConversion) ;
1063 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
1064 fhPtIsoHadron->SetYTitle("N");
1065 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
1066 outputContainer->Add(fhPtIsoHadron) ;
1069 fhPhiIsoHadron = new TH2F
1070 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1071 fhPhiIsoHadron->SetYTitle("#phi");
1072 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
1073 outputContainer->Add(fhPhiIsoHadron) ;
1075 fhEtaIsoHadron = new TH2F
1076 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1077 fhEtaIsoHadron->SetYTitle("#eta");
1078 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
1079 outputContainer->Add(fhEtaIsoHadron) ;
1085 // Not Isolated histograms, reference histograms
1087 fhENoIso = new TH1F("hENoIso",
1088 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),
1089 nptbins,ptmin,ptmax);
1090 fhENoIso->SetYTitle("N");
1091 fhENoIso->SetXTitle("p_{T}(GeV/c)");
1092 outputContainer->Add(fhENoIso) ;
1094 fhPtNoIso = new TH1F("hPtNoIso",
1095 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),
1096 nptbins,ptmin,ptmax);
1097 fhPtNoIso->SetYTitle("N");
1098 fhPtNoIso->SetXTitle("p_{T}(GeV/c)");
1099 outputContainer->Add(fhPtNoIso) ;
1101 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
1102 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),
1103 nptbins,ptmin,ptmax,10,0,10);
1104 fhPtNLocMaxNoIso->SetYTitle("NLM");
1105 fhPtNLocMaxNoIso->SetXTitle("p_{T} (GeV/c)");
1106 outputContainer->Add(fhPtNLocMaxNoIso) ;
1108 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
1109 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),
1110 netabins,etamin,etamax,nphibins,phimin,phimax);
1111 fhEtaPhiNoIso->SetXTitle("#eta");
1112 fhEtaPhiNoIso->SetYTitle("#phi");
1113 outputContainer->Add(fhEtaPhiNoIso) ;
1115 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
1116 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),
1117 nptbins,ptmin,ptmax);
1118 fhPtDecayNoIso->SetYTitle("N");
1119 fhPtDecayNoIso->SetXTitle("p_{T}(GeV/c)");
1120 outputContainer->Add(fhPtDecayNoIso) ;
1122 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
1123 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),
1124 netabins,etamin,etamax,nphibins,phimin,phimax);
1125 fhEtaPhiDecayNoIso->SetXTitle("#eta");
1126 fhEtaPhiDecayNoIso->SetYTitle("#phi");
1127 outputContainer->Add(fhEtaPhiDecayNoIso) ;
1133 fhPtNoIsoPi0 = new TH1F
1134 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
1135 fhPtNoIsoPi0->SetYTitle("N");
1136 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
1137 outputContainer->Add(fhPtNoIsoPi0) ;
1139 fhPtNoIsoPi0Decay = new TH1F
1140 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
1141 fhPtNoIsoPi0Decay->SetYTitle("N");
1142 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
1143 outputContainer->Add(fhPtNoIsoPi0Decay) ;
1145 fhPtNoIsoEtaDecay = new TH1F
1146 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
1147 fhPtNoIsoEtaDecay->SetYTitle("N");
1148 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
1149 outputContainer->Add(fhPtNoIsoEtaDecay) ;
1151 fhPtNoIsoOtherDecay = new TH1F
1152 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
1153 fhPtNoIsoOtherDecay->SetYTitle("N");
1154 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
1155 outputContainer->Add(fhPtNoIsoOtherDecay) ;
1157 fhPtNoIsoPrompt = new TH1F
1158 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
1159 fhPtNoIsoPrompt->SetYTitle("N");
1160 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
1161 outputContainer->Add(fhPtNoIsoPrompt) ;
1163 fhPtIsoMCPhoton = new TH1F
1164 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
1165 fhPtIsoMCPhoton->SetYTitle("N");
1166 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1167 outputContainer->Add(fhPtIsoMCPhoton) ;
1169 fhPtNoIsoMCPhoton = new TH1F
1170 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
1171 fhPtNoIsoMCPhoton->SetYTitle("N");
1172 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1173 outputContainer->Add(fhPtNoIsoMCPhoton) ;
1175 // fhPtNoIsoConversion = new TH1F
1176 // ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
1177 // fhPtNoIsoConversion->SetYTitle("N");
1178 // fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
1179 // outputContainer->Add(fhPtNoIsoConversion) ;
1181 fhPtNoIsoFragmentation = new TH1F
1182 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
1183 fhPtNoIsoFragmentation->SetYTitle("N");
1184 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
1185 outputContainer->Add(fhPtNoIsoFragmentation) ;
1187 fhPtNoIsoHadron = new TH1F
1188 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
1189 fhPtNoIsoHadron->SetYTitle("N");
1190 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
1191 outputContainer->Add(fhPtNoIsoHadron) ;
1198 const Int_t buffersize = 255;
1199 char name[buffersize];
1200 char title[buffersize];
1201 for(Int_t icone = 0; icone<fNCones; icone++)
1203 // sum pt in cone vs. pt leading
1204 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
1205 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1206 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1207 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1208 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1209 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
1211 // pt in cone vs. pt leading
1212 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
1213 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1214 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1215 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1216 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1217 outputContainer->Add(fhPtLeadingPt[icone]) ;
1219 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
1220 snprintf(name, buffersize,"hFRSumPtLeadingPt_Cone_%d",icone);
1221 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1222 fhFRSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1223 fhFRSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1224 fhFRSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1225 outputContainer->Add(fhFRSumPtLeadingPt[icone]) ;
1227 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
1228 snprintf(name, buffersize,"hFRPtLeadingPt_Cone_%d",icone);
1229 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1230 fhFRPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1231 fhFRPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1232 fhFRPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1233 outputContainer->Add(fhFRPtLeadingPt[icone]) ;
1238 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
1239 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1240 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1241 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1242 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
1243 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
1245 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
1246 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
1247 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1248 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1249 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
1250 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
1252 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
1253 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1254 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1255 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1256 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
1257 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
1259 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
1260 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1261 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1262 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1263 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
1264 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
1266 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
1267 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1268 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1269 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1270 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1271 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
1273 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
1274 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1275 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1276 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1277 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1278 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
1280 // snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
1281 // snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1282 // fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1283 // fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1284 // fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
1285 // outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
1287 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
1288 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1289 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1290 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1291 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
1292 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
1296 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
1299 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
1300 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1301 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1302 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1303 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
1305 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
1306 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1307 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1308 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1309 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
1312 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
1313 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1314 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1315 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1316 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1317 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
1319 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
1320 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]);
1321 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1322 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1323 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1324 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
1326 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
1327 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]);
1328 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1329 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1330 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1331 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
1333 // pt decays isolated
1334 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1335 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]);
1336 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1337 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1338 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
1340 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1341 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]);
1342 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1343 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1344 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
1346 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1347 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]);
1348 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1349 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1350 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1351 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
1353 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1354 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]);
1355 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1356 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1357 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1358 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
1360 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1361 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]);
1362 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1363 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1364 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1365 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
1369 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
1370 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1371 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1372 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
1373 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
1374 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
1376 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
1377 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1378 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1379 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
1380 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
1381 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
1383 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
1384 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1385 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1386 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
1387 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
1388 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
1390 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
1391 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]);
1392 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1393 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
1394 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
1395 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
1397 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
1398 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]);
1399 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1400 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
1401 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
1402 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
1405 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1406 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]);
1407 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1408 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
1409 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
1410 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
1412 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1413 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]);
1414 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1415 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
1416 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
1417 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
1420 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1421 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]);
1422 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1423 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1424 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1425 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
1427 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1428 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]);
1429 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1430 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
1431 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
1432 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
1434 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1435 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]);
1436 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1437 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1438 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1439 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
1444 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
1445 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1446 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1447 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1448 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
1450 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
1451 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1452 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1453 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1454 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
1456 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1457 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1458 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1459 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1460 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
1462 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1463 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1464 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1465 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1466 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
1468 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
1469 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1470 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1471 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1472 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
1474 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
1475 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1476 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1477 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1478 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
1480 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1481 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1482 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1483 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1484 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
1486 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1487 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1488 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1489 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1490 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
1492 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1493 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1494 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1495 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1496 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
1498 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1499 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1500 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1501 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1502 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
1505 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1506 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1507 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1508 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1509 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
1511 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1512 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1513 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1514 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1515 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
1517 // snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
1518 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1519 // fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1520 // fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1521 // outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
1523 // snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
1524 // snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1525 // fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1526 // fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1527 // outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
1529 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
1530 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1531 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1532 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1533 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
1535 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
1536 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1537 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1538 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1539 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
1546 if(fFillPileUpHistograms)
1548 for (Int_t i = 0; i < 7 ; i++)
1550 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
1551 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()),
1552 nptbins,ptmin,ptmax);
1553 fhEIsoPileUp[i]->SetYTitle("dN / dE");
1554 fhEIsoPileUp[i]->SetXTitle("E (GeV/c)");
1555 outputContainer->Add(fhEIsoPileUp[i]) ;
1557 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
1558 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()),
1559 nptbins,ptmin,ptmax);
1560 fhPtIsoPileUp[i]->SetYTitle("dN / p_{T}");
1561 fhPtIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
1562 outputContainer->Add(fhPtIsoPileUp[i]) ;
1564 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
1565 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()),
1566 nptbins,ptmin,ptmax);
1567 fhENoIsoPileUp[i]->SetYTitle("dN / dE");
1568 fhENoIsoPileUp[i]->SetXTitle("E (GeV/c)");
1569 outputContainer->Add(fhENoIsoPileUp[i]) ;
1571 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
1572 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()),
1573 nptbins,ptmin,ptmax);
1574 fhPtNoIsoPileUp[i]->SetYTitle("dN / p_{T}");
1575 fhPtNoIsoPileUp[i]->SetXTitle("p_{T} (GeV/c)");
1576 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
1579 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1580 fhTimeENoCut->SetXTitle("E (GeV)");
1581 fhTimeENoCut->SetYTitle("time (ns)");
1582 outputContainer->Add(fhTimeENoCut);
1584 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1585 fhTimeESPD->SetXTitle("E (GeV)");
1586 fhTimeESPD->SetYTitle("time (ns)");
1587 outputContainer->Add(fhTimeESPD);
1589 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
1590 fhTimeESPDMulti->SetXTitle("E (GeV)");
1591 fhTimeESPDMulti->SetYTitle("time (ns)");
1592 outputContainer->Add(fhTimeESPDMulti);
1594 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1595 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
1596 fhTimeNPileUpVertSPD->SetXTitle("time (ns)");
1597 outputContainer->Add(fhTimeNPileUpVertSPD);
1599 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
1600 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
1601 fhTimeNPileUpVertTrack->SetXTitle("time (ns)");
1602 outputContainer->Add(fhTimeNPileUpVertTrack);
1604 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
1605 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
1606 fhTimeNPileUpVertContributors->SetXTitle("time (ns)");
1607 outputContainer->Add(fhTimeNPileUpVertContributors);
1609 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);
1610 fhTimePileUpMainVertexZDistance->SetYTitle("distance Z (cm) ");
1611 fhTimePileUpMainVertexZDistance->SetXTitle("time (ns)");
1612 outputContainer->Add(fhTimePileUpMainVertexZDistance);
1614 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
1615 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance Z (cm) ");
1616 fhTimePileUpMainVertexZDiamond->SetXTitle("time (ns)");
1617 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
1620 return outputContainer ;
1624 //__________________________________
1625 void AliAnaParticleIsolation::Init()
1627 // Do some checks and init stuff
1629 // In case of several cone and thresholds analysis, open the cuts for the filling of the
1630 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
1631 // The different cones, thresholds are tested for this list of tracks, clusters.
1634 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
1635 GetIsolationCut()->SetPtThreshold(100);
1636 GetIsolationCut()->SetPtFraction(100);
1637 GetIsolationCut()->SetConeSize(1);
1641 //____________________________________________
1642 void AliAnaParticleIsolation::InitParameters()
1645 //Initialize the parameters of the analysis.
1646 SetInputAODName("PWG4Particle");
1647 SetAODObjArrayName("IsolationCone");
1648 AddToHistogramsName("AnaIsolation_");
1650 fCalorimeter = "PHOS" ;
1651 fReMakeIC = kFALSE ;
1652 fMakeSeveralIC = kFALSE ;
1654 //----------- Several IC-----------------
1657 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
1658 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
1659 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
1660 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
1662 //------------- Histograms settings -------
1663 fHistoNPtSumBins = 100 ;
1664 fHistoPtSumMax = 50 ;
1665 fHistoPtSumMin = 0. ;
1667 fHistoNPtInConeBins = 100 ;
1668 fHistoPtInConeMax = 50 ;
1669 fHistoPtInConeMin = 0. ;
1673 //__________________________________________________
1674 void AliAnaParticleIsolation::MakeAnalysisFillAOD()
1676 //Do analysis and fill aods
1677 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
1679 if(!GetInputAODBranch())
1681 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
1685 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
1687 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());
1691 Int_t n = 0, nfrac = 0;
1692 Bool_t isolated = kFALSE ;
1693 Float_t coneptsum = 0 ;
1694 TObjArray * pl = 0x0; ;
1696 //Select the calorimeter for candidate isolation with neutral particles
1697 if (fCalorimeter == "PHOS" )
1698 pl = GetPHOSClusters();
1699 else if (fCalorimeter == "EMCAL")
1700 pl = GetEMCALClusters();
1702 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
1703 Double_t ptLeading = 0. ;
1704 Int_t idLeading = -1 ;
1705 TLorentzVector mom ;
1706 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1707 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
1709 for(Int_t iaod = 0; iaod < naod; iaod++)
1711 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1713 //If too small or too large pt, skip
1714 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
1716 //check if it is low pt trigger particle
1717 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
1718 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
1721 continue ; //trigger should not come from underlying event
1724 //vertex cut in case of mixing
1725 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
1726 if(check == 0) continue;
1727 if(check == -1) return;
1729 //find the leading particles with highest momentum
1730 if ( aodinput->Pt() > ptLeading )
1732 ptLeading = aodinput->Pt() ;
1736 aodinput->SetLeadingParticle(kFALSE);
1738 }//finish searching for leading trigger particle
1740 // Check isolation of leading particle
1741 if(idLeading < 0) return;
1743 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
1744 aodinput->SetLeadingParticle(kTRUE);
1746 // Check isolation only of clusters in fiducial region
1747 if(IsFiducialCutOn())
1749 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
1753 //After cuts, study isolation
1754 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1755 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
1756 GetReader(), GetCaloPID(),
1757 kTRUE, aodinput, GetAODObjArrayName(),
1758 n,nfrac,coneptsum, isolated);
1760 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
1764 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
1765 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
1770 //_________________________________________________________
1771 void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
1773 //Do analysis and fill histograms
1775 Int_t n = 0, nfrac = 0;
1776 Bool_t isolated = kFALSE ;
1777 Float_t coneptsum = 0 ;
1778 Float_t etaUEptsum = 0 ;
1779 Float_t phiUEptsum = 0 ;
1781 //Loop on stored AOD
1782 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1783 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
1785 //Get vertex for photon momentum calculation
1786 Double_t vertex[] = {0,0,0} ; //vertex ;
1787 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
1789 GetReader()->GetVertex(vertex);
1792 for(Int_t iaod = 0; iaod < naod ; iaod++)
1794 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1796 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
1798 // Check isolation only of clusters in fiducial region
1799 if(IsFiducialCutOn())
1801 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
1802 if(! in ) continue ;
1805 Bool_t isolation = aod->IsIsolated();
1806 Bool_t decay = aod->IsTagged();
1807 Float_t energy = aod->E();
1808 Float_t pt = aod->Pt();
1809 Float_t phi = aod->Phi();
1810 Float_t eta = aod->Eta();
1811 Float_t conesize = GetIsolationCut()->GetConeSize();
1813 //Recover reference arrays with clusters and tracks
1814 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
1815 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
1817 //If too small or too large pt, skip
1818 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
1820 // --- In case of redoing isolation from delta AOD ----
1824 //Analysis of multiple IC at same time
1825 MakeSeveralICAnalysis(aod);
1830 //In case a more strict IC is needed in the produced AOD
1831 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
1832 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
1833 GetReader(), GetCaloPID(),
1835 n,nfrac,coneptsum, isolated);
1836 fhConeSumPt->Fill(pt,coneptsum);
1837 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1840 // ---------------------------------------------------
1842 //Fill pt distribution of particles in cone
1845 Double_t sumptFR = 0. ;
1846 TObjArray * trackList = GetCTSTracks() ;
1847 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
1849 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
1853 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
1857 //fill histogram for UE in phi band
1858 if(track->Eta() > (eta-conesize) && track->Eta() < (eta+conesize))
1860 phiUEptsum+=track->Pt();
1861 fhPhiBand->Fill(track->Eta(),track->Phi());
1863 //fill histogram for UE in eta band in EMCal acceptance
1864 if(track->Phi() > (phi-conesize) && track->Phi() < (phi+conesize) && track->Eta() > -0.6 && track->Eta() < 0.6)
1866 etaUEptsum+=track->Pt();
1867 fhEtaBand->Fill(track->Eta(),track->Phi());
1870 //fill the histograms at forward range
1871 Double_t dPhi = phi - track->Phi() + TMath::PiOver2();
1872 Double_t dEta = eta - track->Eta();
1873 Double_t arg = dPhi*dPhi + dEta*dEta;
1874 if(TMath::Sqrt(arg) < conesize)
1876 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1877 sumptFR+=track->Pt();
1880 dPhi = phi - track->Phi() - TMath::PiOver2();
1881 arg = dPhi*dPhi + dEta*dEta;
1882 if(TMath::Sqrt(arg) < conesize)
1884 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1885 sumptFR+=track->Pt();
1889 fhFRConeSumPt->Fill(pt,sumptFR);
1892 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1894 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1895 Float_t pTtrack = track->Pt();
1896 fhPtInCone->Fill(pt,pTtrack);
1897 if(fFillPileUpHistograms)
1899 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(pt,pTtrack);
1900 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(pt,pTtrack);
1901 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(pt,pTtrack);
1902 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(pt,pTtrack);
1903 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(pt,pTtrack);
1904 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(pt,pTtrack);
1905 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(pt,pTtrack);
1908 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1916 TLorentzVector mom ;
1917 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
1919 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
1920 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
1922 //fill histogram for UE in phi band
1923 if(mom.Eta() > (eta-conesize) && mom.Eta() < (eta+conesize))
1925 phiUEptsum+=mom.Pt();
1926 fhPhiBand->Fill(mom.Eta(),mom.Phi());
1928 //fill histogram for UE in eta band in EMCal acceptance
1929 if(mom.Phi() > (phi-conesize) && mom.Phi() < (phi+conesize))
1931 etaUEptsum+=mom.Pt();
1932 fhEtaBand->Fill(mom.Eta(),mom.Phi());
1935 fhPtInCone->Fill(pt, mom.Pt());
1936 if(fFillPileUpHistograms)
1938 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(pt,mom.Pt());
1939 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(pt,mom.Pt());
1940 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(pt,mom.Pt());
1941 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(pt,mom.Pt());
1942 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(pt,mom.Pt());
1943 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(pt,mom.Pt());
1944 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(pt,mom.Pt());
1947 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
1948 coneptsum+=mom.Pt();
1952 //normalize phi/eta band per area unit
1953 fhPhiUEConeSumPt->Fill(pt, phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1954 fhEtaUEConeSumPt->Fill(pt, etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1956 Double_t sumPhiUESub = coneptsum-(phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1957 Double_t sumEtaUESub = coneptsum-(etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1959 fhConeSumPtPhiUESub->Fill(pt,sumPhiUESub);
1960 fhConeSumPtEtaUESub->Fill(pt,sumEtaUESub);
1963 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsum);
1965 if(!fReMakeIC) fhConeSumPt->Fill(pt,coneptsum);
1967 Int_t mcTag = aod->GetTag() ;
1968 Int_t clID = aod->GetCaloLabel(0) ;
1969 Int_t nlm = aod->GetFiducialArea();
1970 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
1972 FillTrackMatchingShowerShapeControlHistograms(isolation, clID,nlm,mcTag,reftracks,refclusters,aod,GetReader(), GetCaloPID());
1976 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
1978 // Fill histograms to undertand pile-up before other cuts applied
1979 // Remember to relax time cuts in the reader
1980 FillPileUpHistograms(clID);
1982 fhEIso ->Fill(energy);
1984 fhPhiIso ->Fill(pt,phi);
1985 fhEtaIso ->Fill(pt,eta);
1986 fhEtaPhiIso ->Fill(eta,phi);
1987 fhPtNLocMaxIso->Fill(pt,nlm);
1991 fhPtDecayIso->Fill(pt);
1992 fhEtaPhiDecayIso->Fill(eta,phi);
1995 if(fFillPileUpHistograms)
1997 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
1998 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
1999 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
2000 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
2001 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
2002 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
2003 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
2009 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
2011 fhPtIsoMCPhoton ->Fill(pt);
2014 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
2016 fhPtIsoPrompt ->Fill(pt);
2017 fhPhiIsoPrompt ->Fill(pt,phi);
2018 fhEtaIsoPrompt ->Fill(pt,eta);
2020 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
2022 fhPtIsoFragmentation ->Fill(pt);
2023 fhPhiIsoFragmentation ->Fill(pt,phi);
2024 fhEtaIsoFragmentation ->Fill(pt,eta);
2026 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
2028 fhPtIsoPi0 ->Fill(pt);
2029 fhPhiIsoPi0 ->Fill(pt,phi);
2030 fhEtaIsoPi0 ->Fill(pt,eta);
2032 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
2034 fhPtIsoPi0Decay ->Fill(pt);
2035 fhPhiIsoPi0Decay ->Fill(pt,phi);
2036 fhEtaIsoPi0Decay ->Fill(pt,eta);
2038 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
2040 fhPtIsoEtaDecay ->Fill(pt);
2041 fhPhiIsoEtaDecay ->Fill(pt,phi);
2042 fhEtaIsoEtaDecay ->Fill(pt,eta);
2044 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
2046 fhPtIsoOtherDecay ->Fill(pt);
2047 fhPhiIsoOtherDecay ->Fill(pt,phi);
2048 fhEtaIsoOtherDecay ->Fill(pt,eta);
2050 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
2052 // fhPtIsoConversion ->Fill(pt);
2053 // fhPhiIsoConversion ->Fill(pt,phi);
2054 // fhEtaIsoConversion ->Fill(pt,eta);
2056 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
2058 fhPtIsoHadron ->Fill(pt);
2059 fhPhiIsoHadron ->Fill(pt,phi);
2060 fhEtaIsoHadron ->Fill(pt,eta);
2062 }//Histograms with MC
2064 }//Isolated histograms
2065 else // NON isolated
2067 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
2069 fhENoIso ->Fill(energy);
2070 fhPtNoIso ->Fill(pt);
2071 fhEtaPhiNoIso ->Fill(eta,phi);
2072 fhPtNLocMaxNoIso->Fill(pt,nlm);
2074 if(fFillPileUpHistograms)
2076 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
2077 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
2078 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
2079 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
2080 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
2081 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
2082 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
2087 fhPtDecayNoIso ->Fill(pt);
2088 fhEtaPhiDecayNoIso->Fill(eta,phi);
2093 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
2094 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
2095 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
2096 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
2097 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
2098 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
2099 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
2100 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
2101 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
2109 //_____________________________________________________________________________________
2110 void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
2113 //Isolation Cut Analysis for both methods and different pt cuts and cones
2114 Float_t ptC = ph->Pt();
2115 Float_t etaC = ph->Eta();
2116 Float_t phiC = ph->Phi();
2117 Int_t tag = ph->GetTag();
2118 Bool_t decay = ph->IsTagged();
2120 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
2122 //Keep original setting used when filling AODs, reset at end of analysis
2123 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
2124 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
2125 Float_t rorg = GetIsolationCut()->GetConeSize();
2127 Float_t coneptsum = 0 ;
2128 Int_t n [10][10];//[fNCones][fNPtThresFrac];
2129 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
2130 Bool_t isolated = kFALSE;
2132 Int_t nFracCone = 0;
2134 // fill hist with all particles before isolation criteria
2135 fhPtNoIso ->Fill(ptC);
2136 fhEtaPhiNoIso->Fill(etaC,phiC);
2140 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
2141 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
2142 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
2143 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
2144 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
2145 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
2146 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
2147 // else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
2148 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
2153 fhPtDecayNoIso ->Fill(ptC);
2154 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
2156 //Get vertex for photon momentum calculation
2157 Double_t vertex[] = {0,0,0} ; //vertex ;
2158 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
2160 GetReader()->GetVertex(vertex);
2163 //Loop on cone sizes
2164 for(Int_t icone = 0; icone<fNCones; icone++)
2166 //Recover reference arrays with clusters and tracks
2167 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
2168 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
2170 //If too small or too large pt, skip
2171 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
2173 //In case a more strict IC is needed in the produced AOD
2175 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
2177 GetIsolationCut()->SetSumPtThreshold(100);
2178 GetIsolationCut()->SetPtThreshold(100);
2179 GetIsolationCut()->SetPtFraction(100);
2180 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
2181 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2182 GetReader(), GetCaloPID(),
2184 nCone,nFracCone,coneptsum, isolated);
2187 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
2189 // retreive pt tracks to fill histo vs. pt leading
2190 //Fill pt distribution of particles in cone
2191 //fhPtLeadingPt(),fhFRSumPtLeadingPt(),fhFRPtLeadingPt(),
2195 Double_t sumptFR = 0. ;
2196 TObjArray * trackList = GetCTSTracks() ;
2197 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
2199 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
2200 //fill the histograms at forward range
2203 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
2207 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
2208 Double_t dEta = etaC - track->Eta();
2209 Double_t arg = dPhi*dPhi + dEta*dEta;
2210 if(TMath::Sqrt(arg) < fConeSizes[icone])
2212 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2213 sumptFR+=track->Pt();
2216 dPhi = phiC - track->Phi() - TMath::PiOver2();
2217 arg = dPhi*dPhi + dEta*dEta;
2218 if(TMath::Sqrt(arg) < fConeSizes[icone])
2220 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2221 sumptFR+=track->Pt();
2224 fhFRSumPtLeadingPt[icone]->Fill(ptC,sumptFR);
2227 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
2229 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
2230 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
2231 coneptsum+=track->Pt();
2237 TLorentzVector mom ;
2238 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
2240 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
2241 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
2243 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
2244 coneptsum+=mom.Pt();
2250 //Loop on ptthresholds
2251 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
2254 nfrac[icone][ipt]=0;
2255 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
2256 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
2257 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
2259 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
2260 GetReader(), GetCaloPID(),
2262 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2264 if(!isolated) continue;
2265 //Normal ptThreshold cut
2267 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",
2268 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
2269 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
2271 if(n[icone][ipt] == 0)
2273 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
2274 fhPtThresIsolated[icone][ipt]->Fill(ptC);
2275 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
2279 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
2280 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
2285 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2286 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2287 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2288 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2289 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2290 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2291 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2292 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
2296 // pt in cone fraction
2297 if(nfrac[icone][ipt] == 0)
2299 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
2300 fhPtFracIsolated[icone][ipt]->Fill(ptC);
2301 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
2305 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
2306 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
2311 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
2312 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
2313 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
2314 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
2315 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2316 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2317 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
2318 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
2322 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
2324 //Pt threshold on pt cand/ sum in cone histograms
2325 if(coneptsum<fSumPtThresholds[ipt])
2326 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
2327 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
2328 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
2329 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
2332 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
2333 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
2337 // pt sum pt frac method
2338 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
2340 if(coneptsum < fPtFractions[ipt]*ptC)
2342 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
2343 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
2344 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
2348 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
2349 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
2354 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
2355 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
2356 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
2357 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
2358 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
2359 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
2363 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
2364 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
2372 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
2373 // else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
2374 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
2375 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
2376 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
2377 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
2378 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
2379 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
2384 //Reset original parameters for AOD analysis
2385 GetIsolationCut()->SetPtThreshold(ptthresorg);
2386 GetIsolationCut()->SetPtFraction(ptfracorg);
2387 GetIsolationCut()->SetConeSize(rorg);
2391 //_____________________________________________________________
2392 void AliAnaParticleIsolation::Print(const Option_t * opt) const
2395 //Print some relevant parameters set for the analysis
2399 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
2400 AliAnaCaloTrackCorrBaseClass::Print(" ");
2402 printf("ReMake Isolation = %d \n", fReMakeIC) ;
2403 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
2404 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
2408 printf("N Cone Sizes = %d\n", fNCones) ;
2409 printf("Cone Sizes = \n") ;
2410 for(Int_t i = 0; i < fNCones; i++)
2411 printf(" %1.2f;", fConeSizes[i]) ;
2414 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
2415 printf(" pT thresholds = \n") ;
2416 for(Int_t i = 0; i < fNPtThresFrac; i++)
2417 printf(" %2.2f;", fPtThresholds[i]) ;
2421 printf(" pT fractions = \n") ;
2422 for(Int_t i = 0; i < fNPtThresFrac; i++)
2423 printf(" %2.2f;", fPtFractions[i]) ;
2427 printf("sum pT thresholds = \n") ;
2428 for(Int_t i = 0; i < fNPtThresFrac; i++)
2429 printf(" %2.2f;", fSumPtThresholds[i]) ;
2434 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
2435 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);