]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.cxx
rootlogon.C updated
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaParticleIsolation.cxx
CommitLineData
1a31a9ab 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
1a31a9ab 15
16//_________________________________________________________________________
17// Class for analysis of particle isolation
18// Input is selected particles put in AOD branch (AliAODPWG4ParticleCorrelation)
19//
20// Class created from old AliPHOSGammaJet
21// (see AliRoot versions previous Release 4-09)
22//
23// -- Author: Gustavo Conesa (LNF-INFN)
24
25//-Yaxian Mao (add the possibility for different IC method with different pt range, 01/10/2010)
26//////////////////////////////////////////////////////////////////////////////
db6fb352 27
28
1a31a9ab 29// --- ROOT system ---
30#include <TClonesArray.h>
31#include <TList.h>
32#include <TObjString.h>
33#include <TH2F.h>
1a31a9ab 34#include <TClass.h>
35
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
46ClassImp(AliAnaParticleIsolation)
db6fb352 47
803d06a8 48//______________________________________________________________________________
db6fb352 49AliAnaParticleIsolation::AliAnaParticleIsolation() :
50AliAnaCaloTrackCorrBaseClass(), fCalorimeter(""),
51fReMakeIC(0), fMakeSeveralIC(0),
52fFillTMHisto(0), fFillSSHisto(0),
53// Several IC
54fNCones(0), fNPtThresFrac(0),
55fConeSizes(), fPtThresholds(),
56fPtFractions(), fSumPtThresholds(),
57// Histograms
58fhEIso(0), fhPtIso(0),
59fhPhiIso(0), fhEtaIso(0), fhEtaPhiIso(0),
60fhEtaPhiNoIso(0),
61fhPtNoIso(0), fhPtDecayIso(0), fhPtDecayNoIso(0),
62fhEtaPhiDecayIso(0), fhEtaPhiDecayNoIso(0),
b7ce43b4 63fhConeSumPt(0), fhPtInCone(0), fhPtInConeCent(0),
64fhFRConeSumPt(0), fhPtInFRCone(0), fhPhiUEConeSumPt(0),
65fhEtaUEConeSumPt(0), fhEtaBand(0), fhPhiBand(0),
66fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
db6fb352 67// MC histograms
68fhPtIsoPrompt(0), fhPhiIsoPrompt(0), fhEtaIsoPrompt(0),
69fhPtThresIsolatedPrompt(), fhPtFracIsolatedPrompt(), fhPtSumIsolatedPrompt(),
70fhPtIsoFragmentation(0), fhPhiIsoFragmentation(0), fhEtaIsoFragmentation(0),
71fhPtThresIsolatedFragmentation(), fhPtFracIsolatedFragmentation(), fhPtSumIsolatedFragmentation(),
764ab1f4 72fhPtIsoPi0(0), fhPhiIsoPi0(0), fhEtaIsoPi0(0),
73fhPtThresIsolatedPi0(), fhPtFracIsolatedPi0(), fhPtSumIsolatedPi0(),
db6fb352 74fhPtIsoPi0Decay(0), fhPhiIsoPi0Decay(0), fhEtaIsoPi0Decay(0),
75fhPtThresIsolatedPi0Decay(), fhPtFracIsolatedPi0Decay(), fhPtSumIsolatedPi0Decay(),
76fhPtIsoEtaDecay(0), fhPhiIsoEtaDecay(0), fhEtaIsoEtaDecay(0),
77fhPtThresIsolatedEtaDecay(), fhPtFracIsolatedEtaDecay(), fhPtSumIsolatedEtaDecay(),
78fhPtIsoOtherDecay(0), fhPhiIsoOtherDecay(0), fhEtaIsoOtherDecay(0),
79fhPtThresIsolatedOtherDecay(), fhPtFracIsolatedOtherDecay(), fhPtSumIsolatedOtherDecay(),
764ab1f4 80//fhPtIsoConversion(0), fhPhiIsoConversion(0), fhEtaIsoConversion(0),
81//fhPtThresIsolatedConversion(), fhPtFracIsolatedConversion(), fhPtSumIsolatedConversion(),
82fhPtIsoHadron(0), fhPhiIsoHadron(0), fhEtaIsoHadron(0),
83fhPtThresIsolatedHadron(), fhPtFracIsolatedHadron(), fhPtSumIsolatedHadron(),
84fhPtNoIsoPi0(0), fhPtNoIsoPi0Decay(0),
85fhPtNoIsoEtaDecay(0), fhPtNoIsoOtherDecay(0),
db6fb352 86fhPtNoIsoPrompt(0), fhPtIsoMCPhoton(0), fhPtNoIsoMCPhoton(0),
764ab1f4 87//fhPtNoIsoConversion(0),
88fhPtNoIsoFragmentation(0), fhPtNoIsoHadron(0),
db6fb352 89// Hist several IC
764ab1f4 90fhSumPtLeadingPt(), fhPtLeadingPt(),
91fhFRSumPtLeadingPt(), fhFRPtLeadingPt(),
db6fb352 92fhPtThresIsolated(), fhPtFracIsolated(), fhPtSumIsolated(),
93fhEtaPhiPtThresIso(), fhEtaPhiPtThresDecayIso(), fhPtPtThresDecayIso(),
94fhEtaPhiPtFracIso(), fhEtaPhiPtFracDecayIso(), fhPtPtFracDecayIso(),
b0a31c92 95fhPtPtSumDecayIso(), fhEtaPhiSumDensityIso(), fhEtaPhiSumDensityDecayIso(),
96fhPtSumDensityIso(), fhPtSumDensityDecayIso(),
97fhPtFracPtSumIso(), fhPtFracPtSumDecayIso(),
98fhEtaPhiFracPtSumIso(), fhEtaPhiFracPtSumDecayIso(),
db6fb352 99// Cluster control histograms
ca134929 100fhTrackMatchedDEta(), fhTrackMatchedDPhi(), fhTrackMatchedDEtaDPhi(),
101fhdEdx(), fhEOverP(), fhTrackMatchedMCParticle(),
db7b861a 102fhELambda0() , fhELambda1(), fhELambda0SSBkg(),
ca134929 103fhELambda0TRD(), fhELambda1TRD(),
764ab1f4 104fhELambda0MCPhoton(), fhELambda0MCPi0(), fhELambda0MCPi0Decay(),
105fhELambda0MCEtaDecay(), fhELambda0MCOtherDecay(), fhELambda0MCHadron(),
db6fb352 106// Number of local maxima in cluster
ca134929 107fhNLocMax(),
108fhELambda0LocMax1(), fhELambda1LocMax1(),
109fhELambda0LocMax2(), fhELambda1LocMax2(),
110fhELambda0LocMaxN(), fhELambda1LocMaxN(),
db6fb352 111// Histograms settings
112fHistoNPtSumBins(0), fHistoPtSumMax(0.), fHistoPtSumMin(0.),
113fHistoNPtInConeBins(0), fHistoPtInConeMax(0.), fHistoPtInConeMin(0.)
1a31a9ab 114{
115 //default ctor
116
117 //Initialize parameters
118 InitParameters();
db6fb352 119
b5dbb99b 120 for(Int_t i = 0; i < 5 ; i++)
121 {
803d06a8 122 fConeSizes[i] = 0 ;
1a31a9ab 123
db6fb352 124 fhPtSumIsolatedPrompt [i] = 0 ;
1a31a9ab 125 fhPtSumIsolatedFragmentation[i] = 0 ;
db6fb352 126 fhPtSumIsolatedPi0Decay [i] = 0 ;
764ab1f4 127 fhPtSumIsolatedPi0 [i] = 0 ;
db6fb352 128 fhPtSumIsolatedEtaDecay [i] = 0 ;
129 fhPtSumIsolatedOtherDecay [i] = 0 ;
764ab1f4 130// fhPtSumIsolatedConversion [i] = 0 ;
131 fhPtSumIsolatedHadron [i] = 0 ;
1a31a9ab 132
b5dbb99b 133 for(Int_t j = 0; j < 5 ; j++)
134 {
db6fb352 135 fhPtThresIsolated [i][j] = 0 ;
136 fhPtFracIsolated [i][j] = 0 ;
137 fhPtSumIsolated [i][j] = 0 ;
138
139 fhEtaPhiPtThresIso [i][j] = 0 ;
140 fhEtaPhiPtThresDecayIso[i][j] = 0 ;
141 fhPtPtThresDecayIso [i][j] = 0 ;
142
143 fhEtaPhiPtFracIso [i][j] = 0 ;
144 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
145 fhPtPtFracDecayIso [i][j] = 0 ;
146 fhPtPtSumDecayIso [i][j] = 0 ;
147 fhPtSumDensityIso [i][j] = 0 ;
148 fhPtSumDensityDecayIso [i][j] = 0 ;
b0a31c92 149 fhEtaPhiSumDensityIso [i][j] = 0 ;
150 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
ca134929 151 fhPtFracPtSumIso [i][j] = 0 ;
152 fhPtFracPtSumDecayIso [i][j] = 0 ;
b0a31c92 153 fhEtaPhiFracPtSumIso [i][j] = 0 ;
154 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
db6fb352 155
156 fhPtThresIsolatedPrompt [i][j] = 0 ;
157 fhPtThresIsolatedFragmentation[i][j] = 0 ;
158 fhPtThresIsolatedPi0Decay [i][j] = 0 ;
764ab1f4 159 fhPtThresIsolatedPi0 [i][j] = 0 ;
160 fhPtThresIsolatedEtaDecay [i][j] = 0 ;
db6fb352 161 fhPtThresIsolatedOtherDecay [i][j] = 0 ;
764ab1f4 162// fhPtThresIsolatedConversion [i][j] = 0 ;
163 fhPtThresIsolatedHadron [i][j] = 0 ;
db6fb352 164
165 fhPtFracIsolatedPrompt [i][j] = 0 ;
166 fhPtFracIsolatedFragmentation [i][j] = 0 ;
764ab1f4 167 fhPtFracIsolatedPi0 [i][j] = 0 ;
db6fb352 168 fhPtFracIsolatedPi0Decay [i][j] = 0 ;
169 fhPtFracIsolatedEtaDecay [i][j] = 0 ;
170 fhPtFracIsolatedOtherDecay [i][j] = 0 ;
764ab1f4 171// fhPtFracIsolatedConversion [i][j] = 0 ;
172 fhPtFracIsolatedHadron [i][j] = 0 ;
db6fb352 173
1a31a9ab 174 }
175 }
176
db6fb352 177 for(Int_t i = 0; i < 5 ; i++)
178 {
179 fPtFractions [i] = 0 ;
180 fPtThresholds [i] = 0 ;
181 fSumPtThresholds[i] = 0 ;
1a31a9ab 182 }
ca134929 183
184
185 for(Int_t i = 0; i < 2 ; i++)
186 {
187 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
188 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
189 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ;
190 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ;
191
764ab1f4 192 fhELambda0MCPhoton [i] = 0 ; fhELambda0MCPi0 [i] = 0 ; fhELambda0MCPi0Decay[i] = 0 ;
193 fhELambda0MCEtaDecay[i] = 0 ; fhELambda0MCOtherDecay[i] = 0 ; fhELambda0MCHadron [i] = 0 ;
194
195
ca134929 196 // Number of local maxima in cluster
197 fhNLocMax [i] = 0 ;
198 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
199 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
200 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
201
202 }
db6fb352 203
1a31a9ab 204}
205
b5dbb99b 206//________________________________________________________________________________________________
ca134929 207void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(const Bool_t isolated,
208 const Int_t clusterID,
209 const Int_t nMaxima,
db7b861a 210 const Int_t mcTag,
764ab1f4 211 const TObjArray * plCTS,
212 const TObjArray * plNe,
213 AliAODPWG4ParticleCorrelation *pCandidate,
214 const AliCaloTrackReader * reader,
db7b861a 215 const AliCaloPID * pid)
b5dbb99b 216{
db7b861a 217 // Fill Track matching and Shower Shape control histograms
b5dbb99b 218 if(!fFillTMHisto && !fFillSSHisto) return;
219
547c2f01 220 if(clusterID < 0 )
221 {
222 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! ", clusterID);
223 return;
224 }
225
b5dbb99b 226 Int_t iclus = -1;
227 TObjArray* clusters = 0x0;
228 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
229 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
230
231 if(clusters)
232 {
233
234 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
235 Float_t energy = cluster->E();
236
237 if(fFillSSHisto)
238 {
ca134929 239 fhELambda0[isolated]->Fill(energy, cluster->GetM02() );
240 fhELambda1[isolated]->Fill(energy, cluster->GetM20() );
b5dbb99b 241
764ab1f4 242 if(IsDataMC())
243 {
244 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt) ||
245 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhELambda0MCPhoton [isolated]->Fill(energy, cluster->GetM02());
246 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhELambda0MCPi0 [isolated]->Fill(energy, cluster->GetM02());
247 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhELambda0MCPi0Decay [isolated]->Fill(energy, cluster->GetM02());
248 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhELambda0MCEtaDecay [isolated]->Fill(energy, cluster->GetM02());
249 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhELambda0MCOtherDecay[isolated]->Fill(energy, cluster->GetM02());
250
251 // else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(energy);
252 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhELambda0MCHadron [isolated]->Fill(energy);
253
254 }
255
ca134929 256 if(fCalorimeter == "EMCAL" && GetModuleNumber(cluster) > 5) // TO DO: CHANGE FOR 2012
b5dbb99b 257 {
ca134929 258 fhELambda0TRD[isolated]->Fill(energy, cluster->GetM02() );
259 fhELambda1TRD[isolated]->Fill(energy, cluster->GetM20() );
b5dbb99b 260 }
5c46c992 261
ca134929 262 fhNLocMax[isolated]->Fill(energy,nMaxima);
263 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
264 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
265 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
db7b861a 266
267 if(isolated==0)
268 {
269 //Analyse non-isolated events
270 Int_t n = 0;
271 Int_t nfrac = 0;
272 Bool_t iso = kFALSE ;
273 Float_t coneptsum = 0 ;
274 GetIsolationCut()->SetPtThresholdMax(1.);
275 GetIsolationCut()->MakeIsolationCut(plCTS, plNe,
276 reader, pid,
277 kFALSE, pCandidate, "",
278 n,nfrac,coneptsum, iso);
279 if (!iso) fhELambda0SSBkg->Fill(energy, cluster->GetM02());
280
5c46c992 281
db7b861a 282 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
283 }
284 GetIsolationCut()->SetPtThresholdMax(10000.);
285
b5dbb99b 286 } // SS histo fill
287
288
289 if(fFillTMHisto)
290 {
291 Float_t dZ = cluster->GetTrackDz();
292 Float_t dR = cluster->GetTrackDx();
293
294 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
295 {
296 dR = 2000., dZ = 2000.;
297 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
298 }
299
300 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
b7ce43b4 301 if(fhTrackMatchedDEta && TMath::Abs(dR) < 999)
b5dbb99b 302 {
ca134929 303 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
304 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
305 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
b5dbb99b 306 }
307
308 // Check dEdx and E/p of matched clusters
309
310 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
311 {
db6fb352 312
4bfeae64 313 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
b5dbb99b 314
315 if(track)
316 {
317 Float_t dEdx = track->GetTPCsignal();
ca134929 318 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
b5dbb99b 319
320 Float_t eOverp = cluster->E()/track->P();
ca134929 321 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
b5dbb99b 322 }
4bfeae64 323 //else
324 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
b5dbb99b 325
db6fb352 326
327 if(IsDataMC())
328 {
b5dbb99b 329 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
330 {
331 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
ca134929 332 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
333 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
334 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
335 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
b5dbb99b 336
337 }
338 else
339 {
340 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
ca134929 341 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
342 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
343 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
344 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
b5dbb99b 345 }
346
347 } // MC
348
349 } // match window
350
351 }// TM histos fill
352
353 } // clusters array available
354
355}
356
803d06a8 357//______________________________________________________
1a31a9ab 358TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
359{
b0a31c92 360 //Save parameters used for analysis
1a31a9ab 361 TString parList ; //this will be list of parameters used for this analysis.
362 const Int_t buffersize = 255;
363 char onePar[buffersize] ;
364
365 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
366 parList+=onePar ;
367 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
368 parList+=onePar ;
369 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
370 parList+=onePar ;
371 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
09273901 372 parList+=onePar ;
373 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
1a31a9ab 374 parList+=onePar ;
09273901 375 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
376 parList+=onePar ;
db6fb352 377
b5dbb99b 378 if(fMakeSeveralIC)
379 {
1a31a9ab 380 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
381 parList+=onePar ;
382 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
383 parList+=onePar ;
384
b5dbb99b 385 for(Int_t icone = 0; icone < fNCones ; icone++)
386 {
1a31a9ab 387 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
388 parList+=onePar ;
389 }
b5dbb99b 390 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
391 {
1a31a9ab 392 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
393 parList+=onePar ;
394 }
b5dbb99b 395 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
396 {
1a31a9ab 397 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
398 parList+=onePar ;
db6fb352 399 }
400 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
401 {
402 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
403 parList+=onePar ;
1a31a9ab 404 }
405 }
406
407 //Get parameters set in base class.
408 parList += GetBaseParametersList() ;
409
410 //Get parameters set in IC class.
411 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
412
413 return new TObjString(parList) ;
b0a31c92 414
1a31a9ab 415}
416
803d06a8 417//________________________________________________________
1a31a9ab 418TList * AliAnaParticleIsolation::GetCreateOutputObjects()
419{
420 // Create histograms to be saved in output file and
421 // store them in outputContainer
422 TList * outputContainer = new TList() ;
423 outputContainer->SetName("IsolatedParticleHistos") ;
424
745913ae 425 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
426 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
427 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
428 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
429 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
430 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
431 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
432 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
433 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
09273901 434 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
435 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
436 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
db6fb352 437
09273901 438 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
439 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
440 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
441 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
442 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
443 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
803d06a8 444
31ae6d59 445 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
446 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
447 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
448 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
449 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
450 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
451
803d06a8 452 Int_t nptsumbins = fHistoNPtSumBins;
453 Float_t ptsummax = fHistoPtSumMax;
454 Float_t ptsummin = fHistoPtSumMin;
455 Int_t nptinconebins = fHistoNPtInConeBins;
456 Float_t ptinconemax = fHistoPtInConeMax;
457 Float_t ptinconemin = fHistoPtInConeMin;
1a31a9ab 458
db6fb352 459 Float_t ptthre = GetIsolationCut()->GetPtThreshold();
460 Float_t ptfrac = GetIsolationCut()->GetPtFraction();
461 Float_t r = GetIsolationCut()->GetConeSize();
462
b5dbb99b 463 if(!fMakeSeveralIC)
464 {
ca134929 465 TString hName [] = {"NoIso",""};
466 TString hTitle[] = {"Not isolated" ,"isolated"};
764ab1f4 467 if(fFillSSHisto)
468 {
db7b861a 469 fhELambda0SSBkg = new TH2F
764ab1f4 470 ("hELambda0SSBkg","Non isolated clusters : E vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
471 fhELambda0SSBkg->SetYTitle("#lambda_{0}^{2}");
472 fhELambda0SSBkg->SetXTitle("E (GeV)");
473 outputContainer->Add(fhELambda0SSBkg) ;
474 }
475
ca134929 476 for(Int_t iso = 0; iso < 2; iso++)
b5dbb99b 477 {
ca134929 478 if(fFillTMHisto)
31ae6d59 479 {
ca134929 480 fhTrackMatchedDEta[iso] = new TH2F
481 (Form("hTrackMatchedDEta%s",hName[iso].Data()),
482 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),
483 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
484 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
485 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
486
487 fhTrackMatchedDPhi[iso] = new TH2F
488 (Form("hTrackMatchedDPhi%s",hName[iso].Data()),
489 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),
490 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
491 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
492 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
493
494 fhTrackMatchedDEtaDPhi[iso] = new TH2F
495 (Form("hTrackMatchedDEtaDPhi%s",hName[iso].Data()),
496 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),
497 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
498 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
499 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
500
501 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
502 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
503 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
31ae6d59 504
ca134929 505 fhdEdx[iso] = new TH2F
506 (Form("hdEdx%s",hName[iso].Data()),
507 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),
508 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
509 fhdEdx[iso]->SetXTitle("E (GeV)");
510 fhdEdx[iso]->SetYTitle("<dE/dx>");
511 outputContainer->Add(fhdEdx[iso]);
31ae6d59 512
ca134929 513 fhEOverP[iso] = new TH2F
514 (Form("hEOverP%s",hName[iso].Data()),
515 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),
516 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
517 fhEOverP[iso]->SetXTitle("E (GeV)");
518 fhEOverP[iso]->SetYTitle("E/p");
519 outputContainer->Add(fhEOverP[iso]);
520
521 if(IsDataMC())
522 {
523 fhTrackMatchedMCParticle[iso] = new TH2F
524 (Form("hTrackMatchedMCParticle%s",hName[iso].Data()),
525 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),
526 nptbins,ptmin,ptmax,8,0,8);
527 fhTrackMatchedMCParticle[iso]->SetXTitle("E (GeV)");
528 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
529
530 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
531 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
532 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
533 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
534 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
535 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
536 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
537 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
538
539 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
540 }
31ae6d59 541 }
b5dbb99b 542
ca134929 543 if(fFillSSHisto)
b5dbb99b 544 {
ca134929 545 fhELambda0[iso] = new TH2F
546 (Form("hELambda0%s",hName[iso].Data()),
547 Form("%s cluster : E vs #lambda_{0}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
548 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
549 fhELambda0[iso]->SetXTitle("E (GeV)");
550 outputContainer->Add(fhELambda0[iso]) ;
551
764ab1f4 552 if(IsDataMC())
553 {
554 fhELambda0MCPhoton[iso] = new TH2F
555 (Form("hELambda0%s_MCPhoton",hName[iso].Data()),
556 Form("%s cluster : E vs #lambda_{0}: Origin is final state photon",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
557 fhELambda0MCPhoton[iso]->SetYTitle("#lambda_{0}^{2}");
558 fhELambda0MCPhoton[iso]->SetXTitle("E (GeV)");
559 outputContainer->Add(fhELambda0MCPhoton[iso]) ;
560
561 fhELambda0MCPi0[iso] = new TH2F
562 (Form("hELambda0%s_MCPi0",hName[iso].Data()),
563 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 (2 #gamma)",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
564 fhELambda0MCPi0[iso]->SetYTitle("#lambda_{0}^{2}");
565 fhELambda0MCPi0[iso]->SetXTitle("E (GeV)");
566 outputContainer->Add(fhELambda0MCPi0[iso]) ;
567
568 fhELambda0MCPi0Decay[iso] = new TH2F
569 (Form("hELambda0%s_MCPi0Decay",hName[iso].Data()),
570 Form("%s cluster : E vs #lambda_{0}: Origin is pi0 decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
571 fhELambda0MCPi0Decay[iso]->SetYTitle("#lambda_{0}^{2}");
572 fhELambda0MCPi0Decay[iso]->SetXTitle("E (GeV)");
573 outputContainer->Add(fhELambda0MCPi0Decay[iso]) ;
574
575 fhELambda0MCEtaDecay[iso] = new TH2F
576 (Form("hELambda0%s_MCEtaDecay",hName[iso].Data()),
577 Form("%s cluster : E vs #lambda_{0}: Origin is eta decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
578 fhELambda0MCEtaDecay[iso]->SetYTitle("#lambda_{0}^{2}");
579 fhELambda0MCEtaDecay[iso]->SetXTitle("E (GeV)");
580 outputContainer->Add(fhELambda0MCEtaDecay[iso]) ;
581
582 fhELambda0MCOtherDecay[iso] = new TH2F
583 (Form("hELambda0%s_MCOtherDecay",hName[iso].Data()),
584 Form("%s cluster : E vs #lambda_{0}: Origin is other decay",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
585 fhELambda0MCOtherDecay[iso]->SetYTitle("#lambda_{0}^{2}");
586 fhELambda0MCOtherDecay[iso]->SetXTitle("E (GeV)");
587 outputContainer->Add(fhELambda0MCOtherDecay[iso]) ;
588
589 fhELambda0MCHadron[iso] = new TH2F
590 (Form("hELambda0%s_MCHadron",hName[iso].Data()),
591 Form("%s cluster : E vs #lambda_{0}: Origin is hadron",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
592 fhELambda0MCHadron[iso]->SetYTitle("#lambda_{0}^{2}");
593 fhELambda0MCHadron[iso]->SetXTitle("E (GeV)");
594 outputContainer->Add(fhELambda0MCHadron[iso]) ;
595 }
596
ca134929 597 fhELambda1[iso] = new TH2F
598 (Form("hELambda1%s",hName[iso].Data()),
599 Form("%s cluster: E vs #lambda_{1}",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
600 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
601 fhELambda1[iso]->SetXTitle("E (GeV)");
db7b861a 602 outputContainer->Add(fhELambda1[iso]) ;
ca134929 603
604 if(fCalorimeter=="EMCAL")
605 {
606 fhELambda0TRD[iso] = new TH2F
607 (Form("hELambda0TRD%s",hName[iso].Data()),
608 Form("%s cluster: E vs #lambda_{0}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
609 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
610 fhELambda0TRD[iso]->SetXTitle("E (GeV)");
611 outputContainer->Add(fhELambda0TRD[iso]) ;
612
613 fhELambda1TRD[iso] = new TH2F
614 (Form("hELambda1TRD%s",hName[iso].Data()),
615 Form("%s cluster: E vs #lambda_{1}, SM behind TRD",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
616 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
617 fhELambda1TRD[iso]->SetXTitle("E (GeV)");
618 outputContainer->Add(fhELambda1TRD[iso]) ;
619 }
620
621 fhNLocMax[iso] = new TH2F
622 (Form("hNLocMax%s",hName[iso].Data()),
623 Form("%s - Number of local maxima in cluster",hTitle[iso].Data()),
624 nptbins,ptmin,ptmax,10,0,10);
625 fhNLocMax[iso]->SetYTitle("N maxima");
626 fhNLocMax[iso]->SetXTitle("E (GeV)");
627 outputContainer->Add(fhNLocMax[iso]) ;
628
629 fhELambda0LocMax1[iso] = new TH2F
630 (Form("hELambda0LocMax1%s",hName[iso].Data()),
631 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
632 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
633 fhELambda0LocMax1[iso]->SetXTitle("E (GeV)");
634 outputContainer->Add(fhELambda0LocMax1[iso]) ;
635
636 fhELambda1LocMax1[iso] = new TH2F
637 (Form("hELambda1LocMax1%s",hName[iso].Data()),
638 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 1 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
639 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
640 fhELambda1LocMax1[iso]->SetXTitle("E (GeV)");
641 outputContainer->Add(fhELambda1LocMax1[iso]) ;
642
643 fhELambda0LocMax2[iso] = new TH2F
644 (Form("hELambda0LocMax2%s",hName[iso].Data()),
645 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
646 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
647 fhELambda0LocMax2[iso]->SetXTitle("E (GeV)");
648 outputContainer->Add(fhELambda0LocMax2[iso]) ;
649
650 fhELambda1LocMax2[iso] = new TH2F
651 (Form("hELambda1LocMax2%s",hName[iso].Data()),
652 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, 2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
653 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
654 fhELambda1LocMax2[iso]->SetXTitle("E (GeV)");
655 outputContainer->Add(fhELambda1LocMax2[iso]) ;
656
657 fhELambda0LocMaxN[iso] = new TH2F
658 ( Form("hELambda0LocMaxN%s",hName[iso].Data()),
659 Form("%s cluster (#eta) pairs: E vs #lambda_{0}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
660 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
661 fhELambda0LocMaxN[iso]->SetXTitle("E (GeV)");
662 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
663
664 fhELambda1LocMaxN[iso] = new TH2F
665 (Form("hELambda1LocMaxN%s",hName[iso].Data()),
666 Form("%s cluster (#eta) pairs: E vs #lambda_{1}, N>2 Local maxima",hTitle[iso].Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
667 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
668 fhELambda1LocMaxN[iso]->SetXTitle("E (GeV)");
669 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
b5dbb99b 670
b5dbb99b 671 }
ca134929 672 } // control histograms for isolated and non isolated objects
764ab1f4 673
db6fb352 674 fhConeSumPt = new TH2F("hConePtSum",
675 Form("#Sigma p_{T} in isolation cone for R = %2.2f",r),
676 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1a31a9ab 677 fhConeSumPt->SetYTitle("#Sigma p_{T}");
678 fhConeSumPt->SetXTitle("p_{T} (GeV/c)");
679 outputContainer->Add(fhConeSumPt) ;
680
db6fb352 681 fhPtInCone = new TH2F("hPtInCone",
682 Form("p_{T} in isolation cone for R = %2.2f",r),
683 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1a31a9ab 684 fhPtInCone->SetYTitle("p_{T in cone} (GeV/c)");
685 fhPtInCone->SetXTitle("p_{T} (GeV/c)");
686 outputContainer->Add(fhPtInCone) ;
764ab1f4 687
b7ce43b4 688 fhPtInConeCent = new TH2F("hPtInConeCent",
764ab1f4 689 Form("p_{T} in isolation cone for R = %2.2f",r),
690 100,0,100,nptinconebins,ptinconemin,ptinconemax);
b7ce43b4 691 fhPtInConeCent->SetYTitle("p_{T in cone} (GeV/c)");
692 fhPtInConeCent->SetXTitle("centrality");
693 outputContainer->Add(fhPtInConeCent) ;
1a31a9ab 694
db6fb352 695 fhFRConeSumPt = new TH2F("hFRConePtSum",
696 Form("#Sigma p_{T} in the forward region isolation cone for R = %2.2f",r),
697 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1a31a9ab 698 fhFRConeSumPt->SetYTitle("#Sigma p_{T}");
699 fhFRConeSumPt->SetXTitle("p_{T} (GeV/c)");
700 outputContainer->Add(fhFRConeSumPt) ;
701
db6fb352 702 fhPtInFRCone = new TH2F("hPtInFRCone",
703 Form("p_{T} in forward region isolation cone for R = %2.2f",r),
704 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1a31a9ab 705 fhPtInFRCone->SetYTitle("p_{T in cone} (GeV/c)");
706 fhPtInFRCone->SetXTitle("p_{T} (GeV/c)");
b7ce43b4 707 outputContainer->Add(fhPtInFRCone) ;
764ab1f4 708
b7ce43b4 709 fhPhiUEConeSumPt = new TH2F("hPhiUEConeSumPt",
764ab1f4 710 Form("p_{T} in phi band around isolation cone for R = %2.2f",r),
711 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
b7ce43b4 712 fhPhiUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
713 fhPhiUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
714 outputContainer->Add(fhPhiUEConeSumPt) ;
764ab1f4 715
b7ce43b4 716 fhEtaUEConeSumPt = new TH2F("hEtaUEConeSumPt",
764ab1f4 717 Form("p_{T} in eta band around isolation cone for R = %2.2f",r),
718 nptbins,ptmin,ptmax,4*nptinconebins,ptinconemin,4*ptinconemax);
b7ce43b4 719 fhEtaUEConeSumPt->SetYTitle("p_{T in band} (GeV/c)");
720 fhEtaUEConeSumPt->SetXTitle("p_{T} (GeV/c)");
721 outputContainer->Add(fhEtaUEConeSumPt) ;
764ab1f4 722
b7ce43b4 723 fhEtaBand = new TH2F("fhEtaBand",
764ab1f4 724 Form("Eta/Phi of particle in Eta band isolation cone for R = %2.2f",r),
725 netabins,etamin,etamax,nphibins,phimin,phimax);
b7ce43b4 726 fhEtaBand->SetXTitle("#eta");
727 fhEtaBand->SetYTitle("#phi");
728 outputContainer->Add(fhEtaBand) ;
764ab1f4 729
b7ce43b4 730 fhPhiBand = new TH2F("fhPhiBand",
764ab1f4 731 Form("Eta/Phi of particle in Phi band isolation cone for R = %2.2f",r),
732 netabins,etamin,etamax,nphibins,phimin,phimax);
b7ce43b4 733 fhPhiBand->SetXTitle("#eta");
734 fhPhiBand->SetYTitle("#phi");
735 outputContainer->Add(fhPhiBand) ;
764ab1f4 736
b7ce43b4 737 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
764ab1f4 738 Form("#Sigma p_{T} after bkg subtraction from eta band in the isolation cone for R = %2.2f",r),
739 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
b7ce43b4 740 fhConeSumPtEtaUESub->SetYTitle("#Sigma p_{T}");
741 fhConeSumPtEtaUESub->SetXTitle("p_{T} (GeV/c)");
742 outputContainer->Add(fhConeSumPtEtaUESub) ;
764ab1f4 743
b7ce43b4 744 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
764ab1f4 745 Form("#Sigma p_{T} after bkg subtraction from phi band in the isolation cone for R = %2.2f",r),
746 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
b7ce43b4 747 fhConeSumPtPhiUESub->SetYTitle("#Sigma p_{T}");
748 fhConeSumPtPhiUESub->SetXTitle("p_{T} (GeV/c)");
749 outputContainer->Add(fhConeSumPtPhiUESub) ;
764ab1f4 750
db6fb352 751 fhEIso = new TH1F("hE",
752 Form("Number of isolated particles vs E for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
753 nptbins,ptmin,ptmax);
0fb69ade 754 fhEIso->SetYTitle("dN / dE");
755 fhEIso->SetXTitle("E (GeV/c)");
756 outputContainer->Add(fhEIso) ;
757
db6fb352 758 fhPtIso = new TH1F("hPt",
759 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),
760 nptbins,ptmin,ptmax);
0fb69ade 761 fhPtIso->SetYTitle("dN / p_{T}");
762 fhPtIso->SetXTitle("p_{T} (GeV/c)");
1a31a9ab 763 outputContainer->Add(fhPtIso) ;
764
db6fb352 765 fhPhiIso = new TH2F("hPhi",
766 Form("Number of isolated particles vs #phi for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
767 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1a31a9ab 768 fhPhiIso->SetYTitle("#phi");
769 fhPhiIso->SetXTitle("p_{T} (GeV/c)");
770 outputContainer->Add(fhPhiIso) ;
771
db6fb352 772 fhEtaIso = new TH2F("hEta",
773 Form("Number of isolated particles vs #eta for R = %2.2f, p_{T}^{th} = %2.2f, p_{T}^{fr} = %2.2f",r,ptthre,ptfrac),
774 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1a31a9ab 775 fhEtaIso->SetYTitle("#eta");
776 fhEtaIso->SetXTitle("p_{T} (GeV/c)");
777 outputContainer->Add(fhEtaIso) ;
778
db6fb352 779 fhEtaPhiIso = new TH2F("hEtaPhiIso",
780 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),
781 netabins,etamin,etamax,nphibins,phimin,phimax);
0fb69ade 782 fhEtaPhiIso->SetXTitle("#eta");
783 fhEtaPhiIso->SetYTitle("#phi");
784 outputContainer->Add(fhEtaPhiIso) ;
b0a31c92 785
db6fb352 786 fhPtDecayIso = new TH1F("hPtDecayIso",
787 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),
788 nptbins,ptmin,ptmax);
66e64043 789 fhPtDecayIso->SetYTitle("N");
790 fhPtDecayIso->SetXTitle("p_{T}(GeV/c)");
803d06a8 791 outputContainer->Add(fhPtDecayIso) ;
1a31a9ab 792
db6fb352 793 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
794 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),
795 netabins,etamin,etamax,nphibins,phimin,phimax);
d0a4f937 796 fhEtaPhiDecayIso->SetXTitle("#eta");
797 fhEtaPhiDecayIso->SetYTitle("#phi");
798 outputContainer->Add(fhEtaPhiDecayIso) ;
b0a31c92 799
b5dbb99b 800 if(IsDataMC())
801 {
732895a6 802 fhPtIsoPrompt = new TH1F("hPtMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax);
1a31a9ab 803 fhPtIsoPrompt->SetYTitle("N");
804 fhPtIsoPrompt->SetXTitle("p_{T #gamma}(GeV/c)");
805 outputContainer->Add(fhPtIsoPrompt) ;
806
807 fhPhiIsoPrompt = new TH2F
732895a6 808 ("hPhiMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1a31a9ab 809 fhPhiIsoPrompt->SetYTitle("#phi");
810 fhPhiIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
811 outputContainer->Add(fhPhiIsoPrompt) ;
812
813 fhEtaIsoPrompt = new TH2F
732895a6 814 ("hEtaMCPrompt","Number of isolated prompt #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1a31a9ab 815 fhEtaIsoPrompt->SetYTitle("#eta");
816 fhEtaIsoPrompt->SetXTitle("p_{T #gamma} (GeV/c)");
817 outputContainer->Add(fhEtaIsoPrompt) ;
818
732895a6 819 fhPtIsoFragmentation = new TH1F("hPtMCFragmentation","Number of isolated #gamma",nptbins,ptmin,ptmax);
1a31a9ab 820 fhPtIsoFragmentation->SetYTitle("N");
821 fhPtIsoFragmentation->SetXTitle("p_{T #gamma}(GeV/c)");
822 outputContainer->Add(fhPtIsoFragmentation) ;
823
824 fhPhiIsoFragmentation = new TH2F
732895a6 825 ("hPhiMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1a31a9ab 826 fhPhiIsoFragmentation->SetYTitle("#phi");
827 fhPhiIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
828 outputContainer->Add(fhPhiIsoFragmentation) ;
829
830 fhEtaIsoFragmentation = new TH2F
732895a6 831 ("hEtaMCFragmentation","Number of isolated fragmentation #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1a31a9ab 832 fhEtaIsoFragmentation->SetYTitle("#eta");
833 fhEtaIsoFragmentation->SetXTitle("p_{T #gamma} (GeV/c)");
834 outputContainer->Add(fhEtaIsoFragmentation) ;
835
764ab1f4 836 fhPtIsoPi0 = new TH1F("hPtMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
837 fhPtIsoPi0->SetYTitle("N");
838 fhPtIsoPi0->SetXTitle("p_{T #gamma}(GeV/c)");
839 outputContainer->Add(fhPtIsoPi0) ;
840
841 fhPhiIsoPi0 = new TH2F
842 ("hPhiMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
843 fhPhiIsoPi0->SetYTitle("#phi");
844 fhPhiIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
845 outputContainer->Add(fhPhiIsoPi0) ;
846
847 fhEtaIsoPi0 = new TH2F
848 ("hEtaMCPi0","Number of isolated #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
849 fhEtaIsoPi0->SetYTitle("#eta");
850 fhEtaIsoPi0->SetXTitle("p_{T #gamma} (GeV/c)");
851 outputContainer->Add(fhEtaIsoPi0) ;
852
732895a6 853 fhPtIsoPi0Decay = new TH1F("hPtMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
1a31a9ab 854 fhPtIsoPi0Decay->SetYTitle("N");
855 fhPtIsoPi0Decay->SetXTitle("p_{T #gamma}(GeV/c)");
856 outputContainer->Add(fhPtIsoPi0Decay) ;
857
858 fhPhiIsoPi0Decay = new TH2F
732895a6 859 ("hPhiMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1a31a9ab 860 fhPhiIsoPi0Decay->SetYTitle("#phi");
861 fhPhiIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
862 outputContainer->Add(fhPhiIsoPi0Decay) ;
863
864 fhEtaIsoPi0Decay = new TH2F
732895a6 865 ("hEtaMCPi0Decay","Number of isolated #gamma from #pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1a31a9ab 866 fhEtaIsoPi0Decay->SetYTitle("#eta");
867 fhEtaIsoPi0Decay->SetXTitle("p_{T #gamma} (GeV/c)");
868 outputContainer->Add(fhEtaIsoPi0Decay) ;
869
803d06a8 870 fhPtIsoEtaDecay = new TH1F("hPtMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax);
871 fhPtIsoEtaDecay->SetYTitle("N");
872 fhPtIsoEtaDecay->SetXTitle("p_{T #gamma}(GeV/c)");
873 outputContainer->Add(fhPtIsoEtaDecay) ;
874
875 fhPhiIsoEtaDecay = new TH2F
876 ("hPhiMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
877 fhPhiIsoEtaDecay->SetYTitle("#phi");
878 fhPhiIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
879 outputContainer->Add(fhPhiIsoEtaDecay) ;
880
881 fhEtaIsoEtaDecay = new TH2F
882 ("hEtaMCEtaDecay","Number of isolated #gamma from #eta decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
883 fhEtaIsoEtaDecay->SetYTitle("#eta");
884 fhEtaIsoEtaDecay->SetXTitle("p_{T #gamma} (GeV/c)");
885 outputContainer->Add(fhEtaIsoEtaDecay) ;
886
732895a6 887 fhPtIsoOtherDecay = new TH1F("hPtMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax);
1a31a9ab 888 fhPtIsoOtherDecay->SetYTitle("N");
889 fhPtIsoOtherDecay->SetXTitle("p_{T #gamma}(GeV/c)");
890 outputContainer->Add(fhPtIsoOtherDecay) ;
891
892 fhPhiIsoOtherDecay = new TH2F
732895a6 893 ("hPhiMCOtherDecay","Number of isolated #gamma from non-#pi^{0} decay",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1a31a9ab 894 fhPhiIsoOtherDecay->SetYTitle("#phi");
895 fhPhiIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
896 outputContainer->Add(fhPhiIsoOtherDecay) ;
897
898 fhEtaIsoOtherDecay = new TH2F
732895a6 899 ("hEtaMCOtherDecay","Number of isolated #gamma non-#pi^{0} decay",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1a31a9ab 900 fhEtaIsoOtherDecay->SetYTitle("#eta");
901 fhEtaIsoOtherDecay->SetXTitle("p_{T #gamma} (GeV/c)");
902 outputContainer->Add(fhEtaIsoOtherDecay) ;
903
764ab1f4 904 // fhPtIsoConversion = new TH1F("hPtMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax);
905 // fhPtIsoConversion->SetYTitle("N");
906 // fhPtIsoConversion->SetXTitle("p_{T #gamma}(GeV/c)");
907 // outputContainer->Add(fhPtIsoConversion) ;
908 //
909 // fhPhiIsoConversion = new TH2F
910 // ("hPhiMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
911 // fhPhiIsoConversion->SetYTitle("#phi");
912 // fhPhiIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
913 // outputContainer->Add(fhPhiIsoConversion) ;
914 //
915 // fhEtaIsoConversion = new TH2F
916 // ("hEtaMCConversion","Number of isolated converted #gamma",nptbins,ptmin,ptmax,netabins,etamin,etamax);
917 // fhEtaIsoConversion->SetYTitle("#eta");
918 // fhEtaIsoConversion->SetXTitle("p_{T #gamma} (GeV/c)");
919 // outputContainer->Add(fhEtaIsoConversion) ;
1a31a9ab 920
764ab1f4 921 fhPtIsoHadron = new TH1F("hPtMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax);
922 fhPtIsoHadron->SetYTitle("N");
923 fhPtIsoHadron->SetXTitle("p_{T}(GeV/c)");
924 outputContainer->Add(fhPtIsoHadron) ;
1a31a9ab 925
764ab1f4 926 fhPhiIsoHadron = new TH2F
927 ("hPhiMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
928 fhPhiIsoHadron->SetYTitle("#phi");
929 fhPhiIsoHadron->SetXTitle("p_{T} (GeV/c)");
930 outputContainer->Add(fhPhiIsoHadron) ;
1a31a9ab 931
764ab1f4 932 fhEtaIsoHadron = new TH2F
933 ("hEtaMCHadron","Number of isolated non-#gamma particles",nptbins,ptmin,ptmax,netabins,etamin,etamax);
934 fhEtaIsoHadron->SetYTitle("#eta");
935 fhEtaIsoHadron->SetXTitle("p_{T} (GeV/c)");
936 outputContainer->Add(fhEtaIsoHadron) ;
1a31a9ab 937
1a31a9ab 938 }//Histos with MC
939
940 }
941
db6fb352 942 // Not Isolated histograms, reference histograms
943
944 fhPtNoIso = new TH1F("hPtNoIso",
945 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),
946 nptbins,ptmin,ptmax);
947 fhPtNoIso->SetYTitle("N");
948 fhPtNoIso->SetXTitle("p_{T}(GeV/c)");
949 outputContainer->Add(fhPtNoIso) ;
950
951
952 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
953 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),
954 netabins,etamin,etamax,nphibins,phimin,phimax);
955 fhEtaPhiNoIso->SetXTitle("#eta");
956 fhEtaPhiNoIso->SetYTitle("#phi");
957 outputContainer->Add(fhEtaPhiNoIso) ;
958
959 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
960 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),
961 nptbins,ptmin,ptmax);
962 fhPtDecayNoIso->SetYTitle("N");
963 fhPtDecayNoIso->SetXTitle("p_{T}(GeV/c)");
964 outputContainer->Add(fhPtDecayNoIso) ;
965
966 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
967 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),
968 netabins,etamin,etamax,nphibins,phimin,phimax);
969 fhEtaPhiDecayNoIso->SetXTitle("#eta");
970 fhEtaPhiDecayNoIso->SetYTitle("#phi");
971 outputContainer->Add(fhEtaPhiDecayNoIso) ;
972
44e48e82 973
974
db6fb352 975 if(IsDataMC())
976 {
764ab1f4 977 fhPtNoIsoPi0 = new TH1F
978 ("hPtNoIsoPi0","Number of not isolated leading #gamma from #pi^{0} (2 #gamma)",nptbins,ptmin,ptmax);
979 fhPtNoIsoPi0->SetYTitle("N");
980 fhPtNoIsoPi0->SetXTitle("p_{T} (GeV/c)");
981 outputContainer->Add(fhPtNoIsoPi0) ;
982
db6fb352 983 fhPtNoIsoPi0Decay = new TH1F
984 ("hPtNoIsoPi0Decay","Number of not isolated leading #gamma from #pi^{0} decay",nptbins,ptmin,ptmax);
985 fhPtNoIsoPi0Decay->SetYTitle("N");
986 fhPtNoIsoPi0Decay->SetXTitle("p_{T} (GeV/c)");
987 outputContainer->Add(fhPtNoIsoPi0Decay) ;
988
989 fhPtNoIsoEtaDecay = new TH1F
990 ("hPtNoIsoEtaDecay","Number of not isolated leading #gamma from eta decay",nptbins,ptmin,ptmax);
991 fhPtNoIsoEtaDecay->SetYTitle("N");
992 fhPtNoIsoEtaDecay->SetXTitle("p_{T} (GeV/c)");
993 outputContainer->Add(fhPtNoIsoEtaDecay) ;
994
995 fhPtNoIsoOtherDecay = new TH1F
996 ("hPtNoIsoOtherDecay","Number of not isolated leading #gamma from other decay",nptbins,ptmin,ptmax);
997 fhPtNoIsoOtherDecay->SetYTitle("N");
998 fhPtNoIsoOtherDecay->SetXTitle("p_{T} (GeV/c)");
999 outputContainer->Add(fhPtNoIsoOtherDecay) ;
1000
1001 fhPtNoIsoPrompt = new TH1F
1002 ("hPtNoIsoPrompt","Number of not isolated leading prompt #gamma",nptbins,ptmin,ptmax);
1003 fhPtNoIsoPrompt->SetYTitle("N");
1004 fhPtNoIsoPrompt->SetXTitle("p_{T} (GeV/c)");
1005 outputContainer->Add(fhPtNoIsoPrompt) ;
1006
1007 fhPtIsoMCPhoton = new TH1F
1008 ("hPtIsoMCPhoton","Number of isolated leading #gamma",nptbins,ptmin,ptmax);
1009 fhPtIsoMCPhoton->SetYTitle("N");
1010 fhPtIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1011 outputContainer->Add(fhPtIsoMCPhoton) ;
1012
1013 fhPtNoIsoMCPhoton = new TH1F
1014 ("hPtNoIsoMCPhoton","Number of not isolated leading #gamma",nptbins,ptmin,ptmax);
1015 fhPtNoIsoMCPhoton->SetYTitle("N");
1016 fhPtNoIsoMCPhoton->SetXTitle("p_{T} (GeV/c)");
1017 outputContainer->Add(fhPtNoIsoMCPhoton) ;
1018
764ab1f4 1019// fhPtNoIsoConversion = new TH1F
1020// ("hPtNoIsoConversion","Number of not isolated leading conversion #gamma",nptbins,ptmin,ptmax);
1021// fhPtNoIsoConversion->SetYTitle("N");
1022// fhPtNoIsoConversion->SetXTitle("p_{T} (GeV/c)");
1023// outputContainer->Add(fhPtNoIsoConversion) ;
db6fb352 1024
1025 fhPtNoIsoFragmentation = new TH1F
1026 ("hPtNoIsoFragmentation","Number of not isolated leading fragmentation #gamma",nptbins,ptmin,ptmax);
1027 fhPtNoIsoFragmentation->SetYTitle("N");
1028 fhPtNoIsoFragmentation->SetXTitle("p_{T} (GeV/c)");
1029 outputContainer->Add(fhPtNoIsoFragmentation) ;
1030
764ab1f4 1031 fhPtNoIsoHadron = new TH1F
1032 ("hPtNoIsoHadron","Number of not isolated leading hadrons",nptbins,ptmin,ptmax);
1033 fhPtNoIsoHadron->SetYTitle("N");
1034 fhPtNoIsoHadron->SetXTitle("p_{T} (GeV/c)");
1035 outputContainer->Add(fhPtNoIsoHadron) ;
db6fb352 1036
1037 }//Histos with MC
1038
1039
b5dbb99b 1040 if(fMakeSeveralIC)
1041 {
1a31a9ab 1042 const Int_t buffersize = 255;
e4ef72be 1043 char name[buffersize];
1044 char title[buffersize];
1045 for(Int_t icone = 0; icone<fNCones; icone++)
44e48e82 1046 {
1047 // sum pt in cone vs. pt leading
1048 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
1049 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1050 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1051 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1052 fhSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1053 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
1054
1055 // pt in cone vs. pt leading
1056 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
1057 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1058 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1059 fhPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1060 fhPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1061 outputContainer->Add(fhPtLeadingPt[icone]) ;
1062
1063 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
1064 snprintf(name, buffersize,"hFRSumPtLeadingPt_Cone_%d",icone);
1065 snprintf(title, buffersize,"#Sigma p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1066 fhFRSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1067 fhFRSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}p_{T} (GeV/c)");//#Sigma p_{T}
1068 fhFRSumPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1069 outputContainer->Add(fhFRSumPtLeadingPt[icone]) ;
1070
1071 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
1072 snprintf(name, buffersize,"hFRPtLeadingPt_Cone_%d",icone);
1073 snprintf(title, buffersize,"p_{T} in isolation cone for R = %2.2f",fConeSizes[icone]);
1074 fhFRPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
1075 fhFRPtLeadingPt[icone] ->SetYTitle("p_{T}^{cone} (GeV/c)");
1076 fhFRPtLeadingPt[icone] ->SetXTitle("p_{T}^{leading} (GeV/c)");
1077 outputContainer->Add(fhFRPtLeadingPt[icone]) ;
1078
1079
e4ef72be 1080 if(IsDataMC())
db6fb352 1081 {
b0a31c92 1082 snprintf(name, buffersize,"hPtSumPrompt_Cone_%d",icone);
1083 snprintf(title, buffersize,"Candidate Prompt cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1084 fhPtSumIsolatedPrompt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1085 fhPtSumIsolatedPrompt[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1086 fhPtSumIsolatedPrompt[icone]->SetXTitle("p_{T} (GeV/c)");
1087 outputContainer->Add(fhPtSumIsolatedPrompt[icone]) ;
1088
1089 snprintf(name, buffersize,"hPtSumFragmentation_Cone_%d",icone);
1090 snprintf(title, buffersize,"Candidate Fragmentation cone sum p_{T} for R = %2.2fvs candidate p_{T}",fConeSizes[icone]);
1091 fhPtSumIsolatedFragmentation[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1092 fhPtSumIsolatedFragmentation[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1093 fhPtSumIsolatedFragmentation[icone]->SetXTitle("p_{T} (GeV/c)");
1094 outputContainer->Add(fhPtSumIsolatedFragmentation[icone]) ;
1095
764ab1f4 1096 snprintf(name, buffersize,"hPtSumPi0_Cone_%d",icone);
1097 snprintf(title, buffersize,"Candidate Pi0 cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1098 fhPtSumIsolatedPi0[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1099 fhPtSumIsolatedPi0[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1100 fhPtSumIsolatedPi0[icone]->SetXTitle("p_{T} (GeV/c)");
1101 outputContainer->Add(fhPtSumIsolatedPi0[icone]) ;
1102
b0a31c92 1103 snprintf(name, buffersize,"hPtSumPi0Decay_Cone_%d",icone);
1104 snprintf(title, buffersize,"Candidate Pi0Decay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1105 fhPtSumIsolatedPi0Decay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1106 fhPtSumIsolatedPi0Decay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1107 fhPtSumIsolatedPi0Decay[icone]->SetXTitle("p_{T} (GeV/c)");
1108 outputContainer->Add(fhPtSumIsolatedPi0Decay[icone]) ;
1109
1110 snprintf(name, buffersize,"hPtSumEtaDecay_Cone_%d",icone);
1111 snprintf(title, buffersize,"Candidate EtaDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1112 fhPtSumIsolatedEtaDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1113 fhPtSumIsolatedEtaDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1114 fhPtSumIsolatedEtaDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1115 outputContainer->Add(fhPtSumIsolatedEtaDecay[icone]) ;
1116
1117 snprintf(name, buffersize,"hPtSumOtherDecay_Cone_%d",icone);
1118 snprintf(title, buffersize,"Candidate OtherDecay cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1119 fhPtSumIsolatedOtherDecay[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1120 fhPtSumIsolatedOtherDecay[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1121 fhPtSumIsolatedOtherDecay[icone]->SetXTitle("p_{T} (GeV/c)");
1122 outputContainer->Add(fhPtSumIsolatedOtherDecay[icone]) ;
1123
764ab1f4 1124// snprintf(name, buffersize,"hPtSumConversion_Cone_%d",icone);
1125// snprintf(title, buffersize,"Candidate Conversion cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1126// fhPtSumIsolatedConversion[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1127// fhPtSumIsolatedConversion[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1128// fhPtSumIsolatedConversion[icone]->SetXTitle("p_{T} (GeV/c)");
1129// outputContainer->Add(fhPtSumIsolatedConversion[icone]) ;
b0a31c92 1130
764ab1f4 1131 snprintf(name, buffersize,"hPtSumHadron_Cone_%d",icone);
1132 snprintf(title, buffersize,"Candidate Hadron cone sum p_{T} for R = %2.2f vs candidate p_{T}",fConeSizes[icone]);
1133 fhPtSumIsolatedHadron[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1134 fhPtSumIsolatedHadron[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1135 fhPtSumIsolatedHadron[icone]->SetXTitle("p_{T} (GeV/c)");
1136 outputContainer->Add(fhPtSumIsolatedHadron[icone]) ;
b0a31c92 1137
e4ef72be 1138 }//Histos with MC
1139
1140 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
1141 {
44e48e82 1142
b0a31c92 1143 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
1144 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1145 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1146 fhPtThresIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1147 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
1148
1149 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
1150 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1151 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1152 fhPtFracIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1153 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
1154
1155
1156 snprintf(name, buffersize,"hPtSum_Cone_%d_Pt%d",icone,ipt);
1157 snprintf(title, buffersize,"Isolated candidate p_{T} distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1158 fhPtSumIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1159 // fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1160 fhPtSumIsolated[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1161 outputContainer->Add(fhPtSumIsolated[icone][ipt]) ;
1162
1163 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
1164 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]);
1165 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1166 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1167 fhPtSumDensityIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1168 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
1169
1170 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
1171 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]);
1172 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1173 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma p_{T} (GeV/c)");
1174 fhPtFracPtSumIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1175 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
1176
1177 // pt decays isolated
1178 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1179 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]);
1180 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1181 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1182 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
1183
1184 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1185 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]);
1186 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1187 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1188 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
1189
1190 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1191 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]);
1192 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1193 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1194 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1195 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
1196
1197 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1198 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]);
1199 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1200 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1201 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1202 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
1203
1204 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1205 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]);
1206 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
1207 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma p_{T} (GeV/c)");
1208 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1209 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
1210
1211
1212 // eta:phi
1213 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
1214 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{th} = %2.2f GeV/c",fConeSizes[icone],fPtThresholds[ipt]);
1215 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1216 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
1217 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
1218 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
1219
1220 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
1221 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{fr} = %2.2f GeV/c",fConeSizes[icone],fPtFractions[ipt]);
1222 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1223 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
1224 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
1225 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
1226
1227 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
1228 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for R = %2.2f and p_{T}^{sum} = %2.2f GeV/c",fConeSizes[icone],fSumPtThresholds[ipt]);
1229 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1230 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
1231 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
1232 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
1233
1234 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
1235 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]);
1236 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1237 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
1238 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
1239 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
1240
1241 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
1242 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]);
1243 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1244 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
1245 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
1246 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
1247
1248 // eta:phi decays
1249 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
1250 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]);
1251 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1252 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
1253 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
1254 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
1255
1256 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
1257 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]);
1258 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1259 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
1260 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
1261 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
1262
1263
1264 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1265 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]);
1266 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1267 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1268 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1269 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
1270
1271 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
1272 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]);
1273 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1274 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
1275 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
1276 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
1277
1278 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
1279 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]);
1280 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
1281 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
1282 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
1283 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
1284
1285
1286 if(IsDataMC())
1287 {
1288 snprintf(name, buffersize,"hPtThresMCPrompt_Cone_%d_Pt%d",icone,ipt);
1289 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1290 fhPtThresIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1291 fhPtThresIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1292 outputContainer->Add(fhPtThresIsolatedPrompt[icone][ipt]) ;
1293
1294 snprintf(name, buffersize,"hPtFracMCPrompt_Cone_%d_Pt%d",icone,ipt);
1295 snprintf(title, buffersize,"Isolated candidate Prompt p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1296 fhPtFracIsolatedPrompt[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1297 fhPtFracIsolatedPrompt[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1298 outputContainer->Add(fhPtFracIsolatedPrompt[icone][ipt]) ;
1299
1300 snprintf(name, buffersize,"hPtThresMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1301 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1302 fhPtThresIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1303 fhPtThresIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1304 outputContainer->Add(fhPtThresIsolatedFragmentation[icone][ipt]) ;
1305
1306 snprintf(name, buffersize,"hPtFracMCFragmentation_Cone_%d_Pt%d",icone,ipt);
1307 snprintf(title, buffersize,"Isolated candidate Fragmentation p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1308 fhPtFracIsolatedFragmentation[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1309 fhPtFracIsolatedFragmentation[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1310 outputContainer->Add(fhPtFracIsolatedFragmentation[icone][ipt]) ;
1311
764ab1f4 1312 snprintf(name, buffersize,"hPtThresMCPi0_Cone_%d_Pt%d",icone,ipt);
1313 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1314 fhPtThresIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1315 fhPtThresIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1316 outputContainer->Add(fhPtThresIsolatedPi0[icone][ipt]) ;
1317
1318 snprintf(name, buffersize,"hPtFracMCPi0_Cone_%d_Pt%d",icone,ipt);
1319 snprintf(title, buffersize,"Isolated candidate Pi0 p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1320 fhPtFracIsolatedPi0[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1321 fhPtFracIsolatedPi0[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1322 outputContainer->Add(fhPtFracIsolatedPi0[icone][ipt]) ;
1323
b0a31c92 1324 snprintf(name, buffersize,"hPtThresMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1325 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1326 fhPtThresIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1327 fhPtThresIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1328 outputContainer->Add(fhPtThresIsolatedPi0Decay[icone][ipt]) ;
1329
1330 snprintf(name, buffersize,"hPtFracMCPi0Decay_Cone_%d_Pt%d",icone,ipt);
1331 snprintf(title, buffersize,"Isolated candidate Pi0Decay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1332 fhPtFracIsolatedPi0Decay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1333 fhPtFracIsolatedPi0Decay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1334 outputContainer->Add(fhPtFracIsolatedPi0Decay[icone][ipt]) ;
1335
1336 snprintf(name, buffersize,"hPtThresMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1337 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1338 fhPtThresIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1339 fhPtThresIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1340 outputContainer->Add(fhPtThresIsolatedEtaDecay[icone][ipt]) ;
1341
1342 snprintf(name, buffersize,"hPtFracMCEtaDecay_Cone_%d_Pt%d",icone,ipt);
1343 snprintf(title, buffersize,"Isolated candidate EtaDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1344 fhPtFracIsolatedEtaDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1345 fhPtFracIsolatedEtaDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1346 outputContainer->Add(fhPtFracIsolatedEtaDecay[icone][ipt]) ;
1347
1348
1349 snprintf(name, buffersize,"hPtThresMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1350 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1351 fhPtThresIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1352 fhPtThresIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1353 outputContainer->Add(fhPtThresIsolatedOtherDecay[icone][ipt]) ;
1354
1355 snprintf(name, buffersize,"hPtFracMCOtherDecay_Cone_%d_Pt%d",icone,ipt);
1356 snprintf(title, buffersize,"Isolated candidate OtherDecay p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1357 fhPtFracIsolatedOtherDecay[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1358 fhPtFracIsolatedOtherDecay[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1359 outputContainer->Add(fhPtFracIsolatedOtherDecay[icone][ipt]) ;
1360
764ab1f4 1361// snprintf(name, buffersize,"hPtThresMCConversion_Cone_%d_Pt%d",icone,ipt);
1362// snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1363// fhPtThresIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1364// fhPtThresIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1365// outputContainer->Add(fhPtThresIsolatedConversion[icone][ipt]) ;
b0a31c92 1366
764ab1f4 1367// snprintf(name, buffersize,"hPtFracMCConversion_Cone_%d_Pt%d",icone,ipt);
1368// snprintf(title, buffersize,"Isolated candidate Conversion p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1369// fhPtFracIsolatedConversion[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1370// fhPtFracIsolatedConversion[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1371// outputContainer->Add(fhPtFracIsolatedConversion[icone][ipt]) ;
b0a31c92 1372
764ab1f4 1373 snprintf(name, buffersize,"hPtThresMCHadron_Cone_%d_Pt%d",icone,ipt);
1374 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1375 fhPtThresIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1376 fhPtThresIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1377 outputContainer->Add(fhPtThresIsolatedHadron[icone][ipt]) ;
b0a31c92 1378
764ab1f4 1379 snprintf(name, buffersize,"hPtFracMCHadron_Cone_%d_Pt%d",icone,ipt);
1380 snprintf(title, buffersize,"Isolated candidate Hadron p_{T} distribution for cone size %d and p_{T}^{th} %d",icone,ipt);
1381 fhPtFracIsolatedHadron[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
1382 fhPtFracIsolatedHadron[icone][ipt]->SetXTitle("p_{T} (GeV/c)");
1383 outputContainer->Add(fhPtFracIsolatedHadron[icone][ipt]) ;
b0a31c92 1384
e4ef72be 1385 }//Histos with MC
1386 }//icone loop
1387 }//ipt loop
1a31a9ab 1388 }
1389
1a31a9ab 1390 return outputContainer ;
1391
1392}
1393
03bae431 1394//__________________________________
1395void AliAnaParticleIsolation::Init()
1396{
1397 // Do some checks and init stuff
1398
1399 // In case of several cone and thresholds analysis, open the cuts for the filling of the
1400 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
1401 // The different cones, thresholds are tested for this list of tracks, clusters.
1402 if(fMakeSeveralIC)
1403 {
1404 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
1405 GetIsolationCut()->SetPtThreshold(100);
1406 GetIsolationCut()->SetPtFraction(100);
1407 GetIsolationCut()->SetConeSize(1);
1408 }
1409}
1410
803d06a8 1411//____________________________________________
1412void AliAnaParticleIsolation::InitParameters()
1413{
1414
1415 //Initialize the parameters of the analysis.
1416 SetInputAODName("PWG4Particle");
1417 SetAODObjArrayName("IsolationCone");
1418 AddToHistogramsName("AnaIsolation_");
1419
1420 fCalorimeter = "PHOS" ;
1421 fReMakeIC = kFALSE ;
1422 fMakeSeveralIC = kFALSE ;
1423
1424 //----------- Several IC-----------------
db6fb352 1425 fNCones = 5 ;
1426 fNPtThresFrac = 5 ;
1427 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
1428 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
1429 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
1430 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
803d06a8 1431
1432 //------------- Histograms settings -------
1433 fHistoNPtSumBins = 100 ;
1434 fHistoPtSumMax = 50 ;
1435 fHistoPtSumMin = 0. ;
1436
1437 fHistoNPtInConeBins = 100 ;
1438 fHistoPtInConeMax = 50 ;
1439 fHistoPtInConeMin = 0. ;
1440
1441}
1442
1443//__________________________________________________
1a31a9ab 1444void AliAnaParticleIsolation::MakeAnalysisFillAOD()
1445{
1446 //Do analysis and fill aods
1447 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
1448
b5dbb99b 1449 if(!GetInputAODBranch())
1450 {
1a31a9ab 1451 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - No input particles in AOD with name branch < %s >, STOP \n",GetInputAODName().Data());
1452 abort();
1453 }
1454
b5dbb99b 1455 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
1456 {
1a31a9ab 1457 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());
1458 abort();
1459 }
b0a31c92 1460
1a31a9ab 1461 Int_t n = 0, nfrac = 0;
1462 Bool_t isolated = kFALSE ;
1a31a9ab 1463 Float_t coneptsum = 0 ;
1464 TObjArray * pl = 0x0; ;
1465
1466 //Select the calorimeter for candidate isolation with neutral particles
b5dbb99b 1467 if (fCalorimeter == "PHOS" )
1a31a9ab 1468 pl = GetPHOSClusters();
1469 else if (fCalorimeter == "EMCAL")
1470 pl = GetEMCALClusters();
1471
1472 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
1473 Double_t ptLeading = 0. ;
1474 Int_t idLeading = -1 ;
1475 TLorentzVector mom ;
1476 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1477 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
1478
b5dbb99b 1479 for(Int_t iaod = 0; iaod < naod; iaod++)
1480 {
1a31a9ab 1481 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1482
1483 //If too small or too large pt, skip
1484 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
1485
03bae431 1486 //check if it is low pt trigger particle
1487 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
1488 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
1489 !fMakeSeveralIC)
b5dbb99b 1490 {
1a31a9ab 1491 continue ; //trigger should not come from underlying event
b5dbb99b 1492 }
1a31a9ab 1493
1494 //vertex cut in case of mixing
04f7a616 1495 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
1496 if(check == 0) continue;
1497 if(check == -1) return;
1a31a9ab 1498
1499 //find the leading particles with highest momentum
547c2f01 1500 if ( aodinput->Pt() > ptLeading )
b5dbb99b 1501 {
1a31a9ab 1502 ptLeading = aodinput->Pt() ;
226b95ba 1503 idLeading = iaod ;
1a31a9ab 1504 }
b5dbb99b 1505
226b95ba 1506 aodinput->SetLeadingParticle(kFALSE);
b5dbb99b 1507
1a31a9ab 1508 }//finish searching for leading trigger particle
1509
1510 // Check isolation of leading particle
1511 if(idLeading < 0) return;
226b95ba 1512
1a31a9ab 1513 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
db6fb352 1514 aodinput->SetLeadingParticle(kTRUE);
547c2f01 1515
1516 // Check isolation only of clusters in fiducial region
1517 if(IsFiducialCutOn())
1518 {
050ad675 1519 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
547c2f01 1520 if(! in ) return ;
1521 }
1522
1a31a9ab 1523 //After cuts, study isolation
1524 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
ac5111f9 1525 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
1526 GetReader(), GetCaloPID(),
b5dbb99b 1527 kTRUE, aodinput, GetAODObjArrayName(),
1528 n,nfrac,coneptsum, isolated);
3d187b6c 1529
1530 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
1a31a9ab 1531
b5dbb99b 1532 if(GetDebug() > 1)
1533 {
1a31a9ab 1534 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
1535 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
1536 }
1537
1538}
1539
803d06a8 1540//_________________________________________________________
1a31a9ab 1541void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
1542{
1543 //Do analysis and fill histograms
db6fb352 1544
803d06a8 1545 Int_t n = 0, nfrac = 0;
1546 Bool_t isolated = kFALSE ;
1a31a9ab 1547 Float_t coneptsum = 0 ;
b7ce43b4 1548 Float_t etaUEptsum = 0 ;
1549 Float_t phiUEptsum = 0 ;
803d06a8 1550
1a31a9ab 1551 //Loop on stored AOD
1552 Int_t naod = GetInputAODBranch()->GetEntriesFast();
1553 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
1554
1555 //Get vertex for photon momentum calculation
3d187b6c 1556 Double_t vertex[] = {0,0,0} ; //vertex ;
b5dbb99b 1557 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
1558 {
b0a31c92 1559 GetReader()->GetVertex(vertex);
1a31a9ab 1560 }
b0a31c92 1561
b5dbb99b 1562 for(Int_t iaod = 0; iaod < naod ; iaod++)
1563 {
1a31a9ab 1564 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
1565
1566 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
1567
547c2f01 1568 // Check isolation only of clusters in fiducial region
1569 if(IsFiducialCutOn())
1570 {
050ad675 1571 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
547c2f01 1572 if(! in ) continue ;
1573 }
1574
1a31a9ab 1575 Bool_t isolation = aod->IsIsolated();
803d06a8 1576 Bool_t decay = aod->IsTagged();
0fb69ade 1577 Float_t energy = aod->E();
1a31a9ab 1578 Float_t pt = aod->Pt();
1579 Float_t phi = aod->Phi();
1580 Float_t eta = aod->Eta();
1581 Float_t conesize = GetIsolationCut()->GetConeSize();
1582
1583 //Recover reference arrays with clusters and tracks
1584 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
1585 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
0fb69ade 1586
1a31a9ab 1587 //If too small or too large pt, skip
1588 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
b0a31c92 1589
1a31a9ab 1590 // --- In case of redoing isolation from delta AOD ----
db6fb352 1591
03bae431 1592 if(fMakeSeveralIC)
1593 {
1a31a9ab 1594 //Analysis of multiple IC at same time
1595 MakeSeveralICAnalysis(aod);
03bae431 1596 continue;
1a31a9ab 1597 }
b5dbb99b 1598 else if(fReMakeIC)
1599 {
1a31a9ab 1600 //In case a more strict IC is needed in the produced AOD
1601 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
ac5111f9 1602 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
1603 GetReader(), GetCaloPID(),
b5dbb99b 1604 kFALSE, aod, "",
1605 n,nfrac,coneptsum, isolated);
1a31a9ab 1606 fhConeSumPt->Fill(pt,coneptsum);
1607 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
1608 }
db6fb352 1609
547c2f01 1610 // ---------------------------------------------------
1a31a9ab 1611
1612 //Fill pt distribution of particles in cone
1613 //Tracks
1614 coneptsum = 0;
1615 Double_t sumptFR = 0. ;
1616 TObjArray * trackList = GetCTSTracks() ;
b5dbb99b 1617 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
1618 {
1a31a9ab 1619 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
b7ce43b4 1620
3f150b4b 1621 if(!track)
1622 {
1a31a9ab 1623 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
1624 continue;
1625 }
0fb69ade 1626
b7ce43b4 1627 //fill histogram for UE in phi band
1628 if(track->Eta() > (eta-conesize) && track->Eta() < (eta+conesize))
1629 {
1630 phiUEptsum+=track->Pt();
1631 fhPhiBand->Fill(track->Eta(),track->Phi());
1632 }
1633 //fill histogram for UE in eta band in EMCal acceptance
1634 if(track->Phi() > (phi-conesize) && track->Phi() < (phi+conesize) && track->Eta() > -0.6 && track->Eta() < 0.6)
1635 {
1636 etaUEptsum+=track->Pt();
1637 fhEtaBand->Fill(track->Eta(),track->Phi());
1638 }
1639
1640
1641 //fill the histograms at forward range
1a31a9ab 1642 Double_t dPhi = phi - track->Phi() + TMath::PiOver2();
1643 Double_t dEta = eta - track->Eta();
1644 Double_t arg = dPhi*dPhi + dEta*dEta;
b5dbb99b 1645 if(TMath::Sqrt(arg) < conesize)
1646 {
1a31a9ab 1647 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1648 sumptFR+=track->Pt();
0fb69ade 1649 }
1650
1a31a9ab 1651 dPhi = phi - track->Phi() - TMath::PiOver2();
1652 arg = dPhi*dPhi + dEta*dEta;
b5dbb99b 1653 if(TMath::Sqrt(arg) < conesize)
1654 {
1a31a9ab 1655 fhPtInFRCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1656 sumptFR+=track->Pt();
1657 }
1658 }
0fb69ade 1659
1a31a9ab 1660 fhFRConeSumPt->Fill(pt,sumptFR);
b5dbb99b 1661 if(reftracks)
1662 {
1663 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1664 {
1a31a9ab 1665 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1666 fhPtInCone->Fill(pt,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
b7ce43b4 1667 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1a31a9ab 1668 coneptsum+=track->Pt();
1669 }
1670 }
1671
1672 //CaloClusters
b5dbb99b 1673 if(refclusters)
1674 {
1a31a9ab 1675 TLorentzVector mom ;
b5dbb99b 1676 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
1677 {
1a31a9ab 1678 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
1679 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
b7ce43b4 1680
1681 //fill histogram for UE in phi band
1682 if(mom.Eta() > (eta-conesize) && mom.Eta() < (eta+conesize))
1683 {
1684 phiUEptsum+=mom.Pt();
1685 fhPhiBand->Fill(mom.Eta(),mom.Phi());
1686 }
1687 //fill histogram for UE in eta band in EMCal acceptance
1688 if(mom.Phi() > (phi-conesize) && mom.Phi() < (phi+conesize))
1689 {
1690 etaUEptsum+=mom.Pt();
1691 fhEtaBand->Fill(mom.Eta(),mom.Phi());
1692 }
1a31a9ab 1693
1694 fhPtInCone->Fill(pt, mom.Pt());
b7ce43b4 1695 if (GetEventCentrality()) fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
1a31a9ab 1696 coneptsum+=mom.Pt();
1697 }
1698 }
b7ce43b4 1699
1700 //normalize phi/eta band per area unit
1701 fhPhiUEConeSumPt->Fill(pt, phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1702 fhEtaUEConeSumPt->Fill(pt, etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1703
1704 Double_t SumPhiUESub = coneptsum-(phiUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*TMath::Pi()));
1705 Double_t SumEtaUESub = coneptsum-(etaUEptsum*(TMath::Pi()*conesize*conesize)/(2*conesize*2*0.6));
1706
1707 fhConeSumPtPhiUESub->Fill(pt,SumPhiUESub);
1708 fhConeSumPtEtaUESub->Fill(pt,SumEtaUESub);
1709
1710
1a31a9ab 1711 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsum);
1712
1713 if(!fReMakeIC) fhConeSumPt->Fill(pt,coneptsum);
1714
b5dbb99b 1715 Int_t mcTag = aod->GetTag() ;
1716 Int_t clID = aod->GetCaloLabel(0) ;
1717
db6fb352 1718 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f\n",pt, eta, phi);
1719
db7b861a 1720 FillTrackMatchingShowerShapeControlHistograms(isolation, clID,aod->GetFiducialArea(),mcTag,reftracks,refclusters,aod,GetReader(), GetCaloPID());
ca134929 1721
b5dbb99b 1722 if(isolation)
1723 {
db6fb352 1724 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
ca134929 1725
b5dbb99b 1726 fhEIso ->Fill(energy);
1727 fhPtIso ->Fill(pt);
1728 fhPhiIso ->Fill(pt,phi);
1729 fhEtaIso ->Fill(pt,eta);
0fb69ade 1730 fhEtaPhiIso ->Fill(eta,phi);
db6fb352 1731
1732 if(decay)
3f150b4b 1733 {
1734 fhPtDecayIso->Fill(pt);
1735 fhEtaPhiDecayIso->Fill(eta,phi);
1736 }
1a31a9ab 1737
b5dbb99b 1738 if(IsDataMC())
1739 {
1a31a9ab 1740
b5dbb99b 1741 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
803d06a8 1742 {
1743 fhPtIsoMCPhoton ->Fill(pt);
1744 }
1745
db6fb352 1746 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
1747 {
1a31a9ab 1748 fhPtIsoPrompt ->Fill(pt);
1749 fhPhiIsoPrompt ->Fill(pt,phi);
1750 fhEtaIsoPrompt ->Fill(pt,eta);
1751 }
b5dbb99b 1752 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
1a31a9ab 1753 {
1754 fhPtIsoFragmentation ->Fill(pt);
1755 fhPhiIsoFragmentation ->Fill(pt,phi);
1756 fhEtaIsoFragmentation ->Fill(pt,eta);
1757 }
764ab1f4 1758 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
1759 {
1760 fhPtIsoPi0 ->Fill(pt);
1761 fhPhiIsoPi0 ->Fill(pt,phi);
1762 fhEtaIsoPi0 ->Fill(pt,eta);
1763 }
b5dbb99b 1764 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
1a31a9ab 1765 {
1766 fhPtIsoPi0Decay ->Fill(pt);
1767 fhPhiIsoPi0Decay ->Fill(pt,phi);
1768 fhEtaIsoPi0Decay ->Fill(pt,eta);
1769 }
b5dbb99b 1770 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
803d06a8 1771 {
1772 fhPtIsoEtaDecay ->Fill(pt);
1773 fhPhiIsoEtaDecay ->Fill(pt,phi);
1774 fhEtaIsoEtaDecay ->Fill(pt,eta);
1775 }
b5dbb99b 1776 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
1a31a9ab 1777 {
1778 fhPtIsoOtherDecay ->Fill(pt);
1779 fhPhiIsoOtherDecay ->Fill(pt,phi);
1780 fhEtaIsoOtherDecay ->Fill(pt,eta);
1781 }
764ab1f4 1782// else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion))
1783// {
1784// fhPtIsoConversion ->Fill(pt);
1785// fhPhiIsoConversion ->Fill(pt,phi);
1786// fhEtaIsoConversion ->Fill(pt,eta);
1787// }
1788 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))// anything else but electrons
1a31a9ab 1789 {
764ab1f4 1790 fhPtIsoHadron ->Fill(pt);
1791 fhPhiIsoHadron ->Fill(pt,phi);
1792 fhEtaIsoHadron ->Fill(pt,eta);
1a31a9ab 1793 }
1794 }//Histograms with MC
1795
1796 }//Isolated histograms
ca134929 1797 else // NON isolated
1a31a9ab 1798 {
db6fb352 1799 if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
1800
1801 fhPtNoIso ->Fill(pt);
d0a4f937 1802 fhEtaPhiNoIso->Fill(eta,phi);
3f150b4b 1803
db6fb352 1804 if(decay)
3f150b4b 1805 {
db6fb352 1806 fhPtDecayNoIso ->Fill(pt);
3f150b4b 1807 fhEtaPhiDecayNoIso->Fill(eta,phi);
1808 }
1a31a9ab 1809
b5dbb99b 1810 if(IsDataMC())
1811 {
db6fb352 1812 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(pt);
764ab1f4 1813 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(pt);
1814 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(pt);
db6fb352 1815 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(pt);
1816 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(pt);
1817 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(pt);
1818 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(pt);
764ab1f4 1819// else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(pt);
1820 else if(!GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(pt);
1a31a9ab 1821 }
1822 }
1a31a9ab 1823 }// aod loop
1824
1825}
1826
1a31a9ab 1827
803d06a8 1828//_____________________________________________________________________________________
1a31a9ab 1829void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph)
1830{
1a31a9ab 1831
db6fb352 1832 //Isolation Cut Analysis for both methods and different pt cuts and cones
1833 Float_t ptC = ph->Pt();
1834 Float_t etaC = ph->Eta();
1835 Float_t phiC = ph->Phi();
1836 Int_t tag = ph->GetTag();
1837 Bool_t decay = ph->IsTagged();
b0a31c92 1838
03bae431 1839 if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
1840
1a31a9ab 1841 //Keep original setting used when filling AODs, reset at end of analysis
1842 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
1843 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
1844 Float_t rorg = GetIsolationCut()->GetConeSize();
1845
b7ce43b4 1846 Float_t coneptsum = 0 ;
db6fb352 1847 Int_t n [10][10];//[fNCones][fNPtThresFrac];
1848 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
ca134929 1849 Bool_t isolated = kFALSE;
1850 Int_t nCone = 0;
1851 Int_t nFracCone = 0;
44e48e82 1852
db6fb352 1853 // fill hist with all particles before isolation criteria
1854 fhPtNoIso ->Fill(ptC);
1855 fhEtaPhiNoIso->Fill(etaC,phiC);
1856
1857 if(IsDataMC())
1858 {
1859 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton)) fhPtNoIsoMCPhoton ->Fill(ptC);
764ab1f4 1860 if (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtNoIsoPi0 ->Fill(ptC);
1861 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtNoIsoPi0Decay ->Fill(ptC);
db6fb352 1862 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtNoIsoEtaDecay ->Fill(ptC);
1863 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtNoIsoOtherDecay ->Fill(ptC);
1864 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtNoIsoPrompt ->Fill(ptC);
1865 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtNoIsoFragmentation->Fill(ptC);
764ab1f4 1866// else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtNoIsoConversion ->Fill(ptC);
1867 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtNoIsoHadron ->Fill(ptC);
db6fb352 1868 }
1869
1870 if(decay)
1871 {
1872 fhPtDecayNoIso ->Fill(ptC);
1873 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
1874 }
44e48e82 1875 //Get vertex for photon momentum calculation
1876 Double_t vertex[] = {0,0,0} ; //vertex ;
1877 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
1878 {
1879 GetReader()->GetVertex(vertex);
1880 }
1881
1a31a9ab 1882 //Loop on cone sizes
b5dbb99b 1883 for(Int_t icone = 0; icone<fNCones; icone++)
1884 {
44e48e82 1885 //Recover reference arrays with clusters and tracks
1886 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
1887 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
1888
1889 //If too small or too large pt, skip
1890 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
1891
1892 //In case a more strict IC is needed in the produced AOD
1893
b7ce43b4 1894 nCone=0; nFracCone = 0; isolated = kFALSE; coneptsum = 0;
44e48e82 1895
1896 GetIsolationCut()->SetSumPtThreshold(100);
1897 GetIsolationCut()->SetPtThreshold(100);
1898 GetIsolationCut()->SetPtFraction(100);
1899 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
1900 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
1901 GetReader(), GetCaloPID(),
1902 kFALSE, ph, "",
b7ce43b4 1903 nCone,nFracCone,coneptsum, isolated);
44e48e82 1904
1905
1906 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
db6fb352 1907
44e48e82 1908 // retreive pt tracks to fill histo vs. pt leading
1909 //Fill pt distribution of particles in cone
1910 //fhPtLeadingPt(),fhFRSumPtLeadingPt(),fhFRPtLeadingPt(),
1911
1912 //Tracks
1913 coneptsum = 0;
1914 Double_t sumptFR = 0. ;
1915 TObjArray * trackList = GetCTSTracks() ;
1916 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
1917 {
1918 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
1919 //fill the histograms at forward range
1920 if(!track)
1921 {
1922 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
1923 continue;
1924 }
1925
1926 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
1927 Double_t dEta = etaC - track->Eta();
1928 Double_t arg = dPhi*dPhi + dEta*dEta;
1929 if(TMath::Sqrt(arg) < fConeSizes[icone])
1930 {
1931 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1932 sumptFR+=track->Pt();
1933 }
1934
1935 dPhi = phiC - track->Phi() - TMath::PiOver2();
1936 arg = dPhi*dPhi + dEta*dEta;
1937 if(TMath::Sqrt(arg) < fConeSizes[icone])
1938 {
1939 fhFRPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1940 sumptFR+=track->Pt();
1941 }
1942 }
1943 fhFRSumPtLeadingPt[icone]->Fill(ptC,sumptFR);
1944 if(reftracks)
1945 {
1946 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
1947 {
1948 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
1949 fhPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
1950 coneptsum+=track->Pt();
1951 }
1952 }
1953 //CaloClusters
1954 if(refclusters)
1955 {
1956 TLorentzVector mom ;
1957 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
1958 {
1959 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
1960 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
1961
1962 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
1963 coneptsum+=mom.Pt();
1964 }
1965 }
1966 ///////////////////
1967
1968
1a31a9ab 1969 //Loop on ptthresholds
b5dbb99b 1970 for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
1971 {
db6fb352 1972 n [icone][ipt]=0;
1a31a9ab 1973 nfrac[icone][ipt]=0;
1974 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
db6fb352 1975 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
1976 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
1977
44e48e82 1978 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
ac5111f9 1979 GetReader(), GetCaloPID(),
b5dbb99b 1980 kFALSE, ph, "",
1981 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
1a31a9ab 1982
db6fb352 1983 if(!isolated) continue;
1a31a9ab 1984 //Normal ptThreshold cut
db6fb352 1985
1986 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",
1987 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
1988 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
1989
b5dbb99b 1990 if(n[icone][ipt] == 0)
1991 {
db6fb352 1992 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
1a31a9ab 1993 fhPtThresIsolated[icone][ipt]->Fill(ptC);
db6fb352 1994 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
1995
1996 if(decay)
1997 {
1998 fhPtPtThresDecayIso[icone][ipt]->Fill(ptC);
1999 // fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
2000 }
2001
b5dbb99b 2002 if(IsDataMC())
2003 {
803d06a8 2004 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtThresIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
764ab1f4 2005// else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtThresIsolatedConversion[icone][ipt] ->Fill(ptC) ;
803d06a8 2006 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtThresIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
764ab1f4 2007 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtThresIsolatedPi0[icone][ipt] ->Fill(ptC) ;
803d06a8 2008 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtThresIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2009 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtThresIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2010 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtThresIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
764ab1f4 2011 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtThresIsolatedHadron[icone][ipt] ->Fill(ptC) ;
1a31a9ab 2012 }
2013 }
2014
db6fb352 2015 // pt in cone fraction
b5dbb99b 2016 if(nfrac[icone][ipt] == 0)
2017 {
db6fb352 2018 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
1a31a9ab 2019 fhPtFracIsolated[icone][ipt]->Fill(ptC);
db6fb352 2020 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
2021
2022 if(decay)
2023 {
2024 fhPtPtFracDecayIso[icone][ipt]->Fill(ptC);
b0a31c92 2025 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
db6fb352 2026 }
2027
b5dbb99b 2028 if(IsDataMC())
2029 {
803d06a8 2030 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtFracIsolatedPrompt[icone][ipt] ->Fill(ptC) ;
764ab1f4 2031// else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtFracIsolatedConversion[icone][ipt] ->Fill(ptC) ;
803d06a8 2032 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtFracIsolatedFragmentation[icone][ipt]->Fill(ptC) ;
764ab1f4 2033 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtFracIsolatedPi0[icone][ipt] ->Fill(ptC) ;
803d06a8 2034 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtFracIsolatedPi0Decay[icone][ipt] ->Fill(ptC) ;
2035 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtFracIsolatedEtaDecay[icone][ipt] ->Fill(ptC) ;
2036 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtFracIsolatedOtherDecay[icone][ipt] ->Fill(ptC) ;
764ab1f4 2037 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtFracIsolatedHadron[icone][ipt]->Fill(ptC) ;
1a31a9ab 2038 }
2039 }
db6fb352 2040
2041 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
2042
2043 //Pt threshold on pt cand/ sum in cone histograms
2044 if(coneptsum<fSumPtThresholds[ipt])
2045 {// if((GetIsolationCut()->GetICMethod())==1){//kSumPtIC){
2046 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
2047 fhPtSumIsolated[icone][ipt]->Fill(ptC) ;
b0a31c92 2048 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
db6fb352 2049 if(decay)
2050 {
2051 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
b0a31c92 2052 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
db6fb352 2053 }
2054 }
2055
44e48e82 2056 // pt sum pt frac method
bb5fc123 2057// if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
2058
2059 if(coneptsum < fPtFractions[ipt]*ptC)
2060 {
b0a31c92 2061 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
2062 fhPtFracPtSumIso[icone][ipt]->Fill(ptC) ;
2063 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
2064
2065 if(decay)
2066 {
2067 fhPtFracPtSumDecayIso[icone][ipt]->Fill(ptC);
2068 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
2069 }
2070 }
2071
2072 // density method
db6fb352 2073 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
2074 if(coneptsum<fSumPtThresholds[ipt]*cellDensity)
2075 {//(GetIsolationCut()->GetICMethod())==4){//kSumDensityIC) {
2076 if(GetDebug()>0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
2077 fhPtSumDensityIso[icone][ipt]->Fill(ptC) ;
b0a31c92 2078 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
2079
db6fb352 2080 if(decay)
2081 {
2082 fhPtSumDensityDecayIso[icone][ipt]->Fill(ptC);
b0a31c92 2083 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
db6fb352 2084 }
2085
2086 }
1a31a9ab 2087 }//pt thresh loop
2088
b5dbb99b 2089 if(IsDataMC())
2090 {
803d06a8 2091 if ( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt)) fhPtSumIsolatedPrompt[icone] ->Fill(ptC,coneptsum) ;
764ab1f4 2092// else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) fhPtSumIsolatedConversion[icone] ->Fill(ptC,coneptsum) ;
803d06a8 2093 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation)) fhPtSumIsolatedFragmentation[icone]->Fill(ptC,coneptsum) ;
764ab1f4 2094 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0)) fhPtSumIsolatedPi0[icone] ->Fill(ptC,coneptsum) ;
803d06a8 2095 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay)) fhPtSumIsolatedPi0Decay[icone] ->Fill(ptC,coneptsum) ;
2096 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay)) fhPtSumIsolatedEtaDecay[icone] ->Fill(ptC,coneptsum) ;
2097 else if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)) fhPtSumIsolatedOtherDecay[icone] ->Fill(ptC,coneptsum) ;
764ab1f4 2098 else if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) fhPtSumIsolatedHadron[icone]->Fill(ptC,coneptsum) ;
1a31a9ab 2099 }
2100
2101 }//cone size loop
2102
2103 //Reset original parameters for AOD analysis
2104 GetIsolationCut()->SetPtThreshold(ptthresorg);
2105 GetIsolationCut()->SetPtFraction(ptfracorg);
2106 GetIsolationCut()->SetConeSize(rorg);
2107
2108}
2109
803d06a8 2110//_____________________________________________________________
1a31a9ab 2111void AliAnaParticleIsolation::Print(const Option_t * opt) const
2112{
2113
2114 //Print some relevant parameters set for the analysis
2115 if(! opt)
2116 return;
2117
2118 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
745913ae 2119 AliAnaCaloTrackCorrBaseClass::Print(" ");
1a31a9ab 2120
2121 printf("ReMake Isolation = %d \n", fReMakeIC) ;
2122 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
2123 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
2124
b5dbb99b 2125 if(fMakeSeveralIC)
2126 {
1a31a9ab 2127 printf("N Cone Sizes = %d\n", fNCones) ;
2128 printf("Cone Sizes = \n") ;
2129 for(Int_t i = 0; i < fNCones; i++)
2130 printf(" %1.2f;", fConeSizes[i]) ;
2131 printf(" \n") ;
2132
2133 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
2134 printf(" pT thresholds = \n") ;
2135 for(Int_t i = 0; i < fNPtThresFrac; i++)
2136 printf(" %2.2f;", fPtThresholds[i]) ;
2137
2138 printf(" \n") ;
2139
2140 printf(" pT fractions = \n") ;
2141 for(Int_t i = 0; i < fNPtThresFrac; i++)
2142 printf(" %2.2f;", fPtFractions[i]) ;
2143
db6fb352 2144 printf(" \n") ;
2145
2146 printf("sum pT thresholds = \n") ;
2147 for(Int_t i = 0; i < fNPtThresFrac; i++)
2148 printf(" %2.2f;", fSumPtThresholds[i]) ;
2149
2150
1a31a9ab 2151 }
2152
b5dbb99b 2153 printf("Histograms: %3.1f < pT sum < %3.1f, Nbin = %d\n", fHistoPtSumMin, fHistoPtSumMax, fHistoNPtSumBins );
1a31a9ab 2154 printf("Histograms: %3.1f < pT in cone < %3.1f, Nbin = %d\n", fHistoPtInConeMin, fHistoPtInConeMax, fHistoNPtInConeBins);
2155
2156 printf(" \n") ;
2157
2158}
2159