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