]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.cxx
fix wrong Set/Get Int_t parameters when data member is Float_t
[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//
6ae3345d 20// Class created from old AliPHOSGammaJet
1a31a9ab 21// (see AliRoot versions previous Release 4-09)
22//
6ae3345d 23// -- Author: Gustavo Conesa (LNF-INFN)
1a31a9ab 24
25//-Yaxian Mao (add the possibility for different IC method with different pt range, 01/10/2010)
26//////////////////////////////////////////////////////////////////////////////
db6fb352 27
28
6ae3345d 29// --- ROOT system ---
1a31a9ab 30#include <TClonesArray.h>
31#include <TList.h>
32#include <TObjString.h>
33#include <TH2F.h>
1a31a9ab 34#include <TClass.h>
dc9c6e78 35#include <TH2F.h>
36#include "TParticle.h"
37#include "TDatabasePDG.h"
38
39
1a31a9ab 40
6ae3345d 41// --- Analysis system ---
42#include "AliAnaParticleIsolation.h"
1a31a9ab 43#include "AliCaloTrackReader.h"
dc9c6e78 44#include "AliStack.h"
1a31a9ab 45#include "AliIsolationCut.h"
dc9c6e78 46#include "AliFiducialCut.h"
47#include "AliMCAnalysisUtils.h"
1a31a9ab 48#include "AliNeutralMesonSelection.h"
dc9c6e78 49#include "AliAODMCParticle.h"
1a31a9ab 50#include "AliAODPWG4ParticleCorrelation.h"
51#include "AliMCAnalysisUtils.h"
52#include "AliVTrack.h"
53#include "AliVCluster.h"
2ad19c3d 54#include "AliESDEvent.h"
55#include "AliAODEvent.h"
dc9c6e78 56// --- Detectors ---
6ae3345d 57#include "AliEMCALGeometry.h"
dc9c6e78 58#include "AliPHOSGeoUtils.h"
1a31a9ab 59
60ClassImp(AliAnaParticleIsolation)
db6fb352 61
803d06a8 62//______________________________________________________________________________
6ae3345d 63AliAnaParticleIsolation::AliAnaParticleIsolation() :
4b6cb0f2 64AliAnaCaloTrackCorrBaseClass(),
65fCalorimeter(""), fIsoDetector(""),
6ae3345d 66fReMakeIC(0), fMakeSeveralIC(0),
2ad19c3d 67fFillPileUpHistograms(0),
977564f5 68fFillTMHisto(0), fFillSSHisto(1),
69fFillUEBandSubtractHistograms(1), fFillCellHistograms(0),
70fFillHighMultHistograms(0), fFillTaggedDecayHistograms(0),
4d1d8f00 71fFillNLMHistograms(0),
db6fb352 72// Several IC
6ae3345d 73fNCones(0), fNPtThresFrac(0),
74fConeSizes(), fPtThresholds(),
db6fb352 75fPtFractions(), fSumPtThresholds(),
76// Histograms
c8710850 77fhEIso(0), fhPtIso(0),
78fhPtCentralityIso(0), fhPtEventPlaneIso(0),
79fhPtNLocMaxIso(0),
6ae3345d 80fhPhiIso(0), fhEtaIso(0), fhEtaPhiIso(0),
81fhEtaPhiNoIso(0),
9b01dc66 82fhENoIso(0), fhPtNoIso(0), fhPtNLocMaxNoIso(0),
8736d400 83fhPtDecayIso(0), fhPtDecayNoIso(0),
6ae3345d 84fhEtaPhiDecayIso(0), fhEtaPhiDecayNoIso(0),
23130491 85fhPtInCone(0),
9b01dc66 86fhPtClusterInCone(0), fhPtCellInCone(0), fhPtTrackInCone(0),
2a9171b5 87fhPtTrackInConeOtherBC(0), fhPtTrackInConeOtherBCPileUpSPD(0),
cc944149 88fhPtTrackInConeBC0(0), fhPtTrackInConeVtxBC0(0),
89fhPtTrackInConeBC0PileUpSPD(0),
17af6e24 90fhPtInConePileUp(), fhPtInConeCent(0),
23130491 91fhPerpConeSumPt(0), fhPtInPerpCone(0),
977564f5 92fhEtaPhiInConeCluster(0), fhEtaPhiCluster(0),
93fhEtaPhiInConeTrack(0), fhEtaPhiTrack(0),
23130491 94fhEtaBandCluster(0), fhPhiBandCluster(0),
95fhEtaBandTrack(0), fhPhiBandTrack(0),
9b01dc66 96fhEtaBandCell(0), fhPhiBandCell(0),
97fhConeSumPt(0), fhConeSumPtCellTrack(0),
98fhConeSumPtCell(0), fhConeSumPtCluster(0), fhConeSumPtTrack(0),
23130491 99fhConeSumPtEtaBandUECluster(0), fhConeSumPtPhiBandUECluster(0),
100fhConeSumPtEtaBandUETrack(0), fhConeSumPtPhiBandUETrack(0),
9b01dc66 101fhConeSumPtEtaBandUECell(0), fhConeSumPtPhiBandUECell(0),
23130491 102fhConeSumPtTrigEtaPhi(0),
9b01dc66 103fhConeSumPtCellTrackTrigEtaPhi(0),
23130491 104fhConeSumPtEtaBandUEClusterTrigEtaPhi(0), fhConeSumPtPhiBandUEClusterTrigEtaPhi(0),
105fhConeSumPtEtaBandUETrackTrigEtaPhi(0), fhConeSumPtPhiBandUETrackTrigEtaPhi(0),
67b42f6d 106fhConeSumPtEtaBandUECellTrigEtaPhi(0), fhConeSumPtPhiBandUECellTrigEtaPhi(0),
23130491 107fhConeSumPtEtaUESub(0), fhConeSumPtPhiUESub(0),
108fhConeSumPtEtaUESubTrigEtaPhi(0), fhConeSumPtPhiUESubTrigEtaPhi(0),
9b01dc66 109fhConeSumPtEtaUESubTrackCell(0), fhConeSumPtPhiUESubTrackCell(0),
110fhConeSumPtEtaUESubTrackCellTrigEtaPhi(0), fhConeSumPtPhiUESubTrackCellTrigEtaPhi(0),
23130491 111fhConeSumPtEtaUESubCluster(0), fhConeSumPtPhiUESubCluster(0),
112fhConeSumPtEtaUESubClusterTrigEtaPhi(0), fhConeSumPtPhiUESubClusterTrigEtaPhi(0),
9b01dc66 113fhConeSumPtEtaUESubCell(0), fhConeSumPtPhiUESubCell(0),
114fhConeSumPtEtaUESubCellTrigEtaPhi(0), fhConeSumPtPhiUESubCellTrigEtaPhi(0),
23130491 115fhConeSumPtEtaUESubTrack(0), fhConeSumPtPhiUESubTrack(0),
116fhConeSumPtEtaUESubTrackTrigEtaPhi(0), fhConeSumPtPhiUESubTrackTrigEtaPhi(0),
117fhFractionTrackOutConeEta(0), fhFractionTrackOutConeEtaTrigEtaPhi(0),
118fhFractionClusterOutConeEta(0), fhFractionClusterOutConeEtaTrigEtaPhi(0),
119fhFractionClusterOutConePhi(0), fhFractionClusterOutConePhiTrigEtaPhi(0),
9b01dc66 120fhFractionCellOutConeEta(0), fhFractionCellOutConeEtaTrigEtaPhi(0),
121fhFractionCellOutConePhi(0), fhFractionCellOutConePhiTrigEtaPhi(0),
814d1087 122fhConeSumPtClustervsTrack(0),
123fhConeSumPtEtaUESubClustervsTrack(0), fhConeSumPtPhiUESubClustervsTrack(0),
9b01dc66 124fhConeSumPtCellvsTrack(0),
125fhConeSumPtEtaUESubCellvsTrack(0), fhConeSumPtPhiUESubCellvsTrack(0),
814d1087 126fhEtaBandClustervsTrack(0), fhPhiBandClustervsTrack(0),
127fhEtaBandNormClustervsTrack(0), fhPhiBandNormClustervsTrack(0),
9b01dc66 128fhEtaBandCellvsTrack(0), fhPhiBandCellvsTrack(0),
129fhEtaBandNormCellvsTrack(0), fhPhiBandNormCellvsTrack(0),
b5d10017 130fhConeSumPtSubvsConeSumPtTotPhiTrack(0), fhConeSumPtSubNormvsConeSumPtTotPhiTrack(0),
131fhConeSumPtSubvsConeSumPtTotEtaTrack(0), fhConeSumPtSubNormvsConeSumPtTotEtaTrack(0),
132fhConeSumPtSubvsConeSumPtTotPhiCluster(0), fhConeSumPtSubNormvsConeSumPtTotPhiCluster(0),
133fhConeSumPtSubvsConeSumPtTotEtaCluster(0), fhConeSumPtSubNormvsConeSumPtTotEtaCluster(0),
134fhConeSumPtSubvsConeSumPtTotPhiCell(0), fhConeSumPtSubNormvsConeSumPtTotPhiCell(0),
135fhConeSumPtSubvsConeSumPtTotEtaCell(0), fhConeSumPtSubNormvsConeSumPtTotEtaCell(0),
727a309a 136fhConeSumPtVSUETracksEtaBand(0), fhConeSumPtVSUETracksPhiBand(0),
137fhConeSumPtVSUEClusterEtaBand(0), fhConeSumPtVSUEClusterPhiBand(0),
124bffb3 138
db6fb352 139// Number of local maxima in cluster
ca134929 140fhNLocMax(),
141fhELambda0LocMax1(), fhELambda1LocMax1(),
142fhELambda0LocMax2(), fhELambda1LocMax2(),
143fhELambda0LocMaxN(), fhELambda1LocMaxN(),
2ad19c3d 144// PileUp
17af6e24 145fhEIsoPileUp(), fhPtIsoPileUp(),
146fhENoIsoPileUp(), fhPtNoIsoPileUp(),
2ad19c3d 147fhTimeENoCut(0), fhTimeESPD(0), fhTimeESPDMulti(0),
148fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
149fhTimeNPileUpVertContributors(0),
98287a43 150fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0)
1a31a9ab 151{
152 //default ctor
153
154 //Initialize parameters
155 InitParameters();
db6fb352 156
b5dbb99b 157 for(Int_t i = 0; i < 5 ; i++)
dc9c6e78 158 {
159 fConeSizes[i] = 0 ;
160
124bffb3 161 for(Int_t imc = 0; imc < 9; imc++)
f5b702a0 162 fhSumPtLeadingPtMC[imc][i] = 0 ;
1a31a9ab 163
b5dbb99b 164 for(Int_t j = 0; j < 5 ; j++)
dc9c6e78 165 {
23130491 166 fhPtThresIsolated [i][j] = 0 ;
167 fhPtFracIsolated [i][j] = 0 ;
f5b702a0 168 fhSumPtIsolated [i][j] = 0 ;
23130491 169
170 fhEtaPhiPtThresIso [i][j] = 0 ;
171 fhEtaPhiPtThresDecayIso [i][j] = 0 ;
172 fhPtPtThresDecayIso [i][j] = 0 ;
173
174 fhEtaPhiPtFracIso [i][j] = 0 ;
175 fhEtaPhiPtFracDecayIso [i][j] = 0 ;
176 fhPtPtFracDecayIso [i][j] = 0 ;
177 fhPtPtSumDecayIso [i][j] = 0 ;
178 fhPtSumDensityIso [i][j] = 0 ;
179 fhPtSumDensityDecayIso [i][j] = 0 ;
180 fhEtaPhiSumDensityIso [i][j] = 0 ;
181 fhEtaPhiSumDensityDecayIso [i][j] = 0 ;
182 fhPtFracPtSumIso [i][j] = 0 ;
183 fhPtFracPtSumDecayIso [i][j] = 0 ;
184 fhEtaPhiFracPtSumIso [i][j] = 0 ;
185 fhEtaPhiFracPtSumDecayIso [i][j] = 0 ;
db6fb352 186
124bffb3 187 for(Int_t imc = 0; imc < 9; imc++)
188 {
189 fhPtThresIsolatedMC[imc][i][j] = 0 ;
190 fhPtFracIsolatedMC [imc][i][j] = 0 ;
f5b702a0 191 fhSumPtIsolatedMC [imc][i][j] = 0 ;
124bffb3 192
193 }
dc9c6e78 194 }
195 }
1a31a9ab 196
db6fb352 197 for(Int_t i = 0; i < 5 ; i++)
dc9c6e78 198 {
199 fPtFractions [i] = 0 ;
db6fb352 200 fPtThresholds [i] = 0 ;
201 fSumPtThresholds[i] = 0 ;
ddaa6315 202
203 fhSumPtLeadingPt [i] = 0 ;
204 fhPtLeadingPt [i] = 0 ;
205 fhPerpSumPtLeadingPt[i] = 0 ;
6ae3345d 206 fhPerpPtLeadingPt [i] = 0 ;
dc9c6e78 207 }
208
124bffb3 209 for(Int_t imc = 0; imc < 9; imc++)
210 {
211 fhPtNoIsoMC [imc] = 0;
212 fhPtIsoMC [imc] = 0;
213 fhPhiIsoMC [imc] = 0;
214 fhEtaIsoMC [imc] = 0;
215 fhPtLambda0MC[imc][0] = 0;
216 fhPtLambda0MC[imc][1] = 0;
aa2e58e4 217
218 fhPtDecayIsoMC [imc] = 0;
219 fhPtDecayNoIsoMC[imc] = 0;
124bffb3 220 }
ca134929 221
222 for(Int_t i = 0; i < 2 ; i++)
dc9c6e78 223 {
ddaa6315 224 fhTrackMatchedDEta[i] = 0 ; fhTrackMatchedDPhi[i] = 0 ; fhTrackMatchedDEtaDPhi [i] = 0 ;
225 fhdEdx [i] = 0 ; fhEOverP [i] = 0 ; fhTrackMatchedMCParticle[i] = 0 ;
226 fhELambda0 [i] = 0 ; fhELambda1 [i] = 0 ; fhPtLambda0 [i] = 0 ;
227 fhELambda0TRD [i] = 0 ; fhELambda1TRD [i] = 0 ; fhPtLambda0TRD [i] = 0 ;
ca134929 228
229 // Number of local maxima in cluster
230 fhNLocMax [i] = 0 ;
231 fhELambda0LocMax1[i] = 0 ; fhELambda1LocMax1[i] = 0 ;
232 fhELambda0LocMax2[i] = 0 ; fhELambda1LocMax2[i] = 0 ;
233 fhELambda0LocMaxN[i] = 0 ; fhELambda1LocMaxN[i] = 0 ;
dc9c6e78 234 }
235
dc9c6e78 236 // Acceptance
bf8a7dac 237 for(Int_t i = 0; i < 6; i++)
dc9c6e78 238 {
239 fhPtPrimMCiso[i] = 0;
240 fhEPrimMC [i] = 0;
241 fhEtaPrimMC [i] = 0;
db4ffddf 242 fhPhiPrimMC [i] = 0;
dc9c6e78 243 }
db6fb352 244
17af6e24 245 // Pile-Up
246
247 for(Int_t i = 0 ; i < 7 ; i++)
248 {
249 fhPtInConePileUp[i] = 0 ;
250 fhEIsoPileUp [i] = 0 ;
251 fhPtIsoPileUp [i] = 0 ;
252 fhENoIsoPileUp [i] = 0 ;
253 fhPtNoIsoPileUp [i] = 0 ;
254 }
255
1a31a9ab 256}
257
23130491 258//_______________________________________________________________________________________________
259void AliAnaParticleIsolation::CalculateCaloUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
260 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
261{
262 // Get the clusters pT or sum of pT in phi/eta bands or at 45 degrees from trigger
263
72433939 264 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
265
23130491 266 Float_t conesize = GetIsolationCut()->GetConeSize();
267 TLorentzVector mom ;
268
6ae3345d 269 //Select the Calorimeter
23130491 270 TObjArray * pl = 0x0;
271 if (fCalorimeter == "PHOS" )
272 pl = GetPHOSClusters();
273 else if (fCalorimeter == "EMCAL")
274 pl = GetEMCALClusters();
275
276 if(!pl) return ;
277
278 //Get vertex for cluster momentum calculation
279 Double_t vertex[] = {0,0,0} ; //vertex ;
280 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
281 GetReader()->GetVertex(vertex);
282
283 Float_t ptTrig = pCandidate->Pt() ;
284 Float_t phiTrig = pCandidate->Phi();
285 Float_t etaTrig = pCandidate->Eta();
286
287 for(Int_t icluster=0; icluster < pl->GetEntriesFast(); icluster++)
288 {
289 AliVCluster* cluster = (AliVCluster *) pl->At(icluster);
290
291 if(!cluster)
292 {
293 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Cluster not available?");
294 continue;
295 }
6ae3345d 296
23130491 297 //Do not count the candidate (photon or pi0) or the daughters of the candidate
298 if(cluster->GetID() == pCandidate->GetCaloLabel(0) ||
299 cluster->GetID() == pCandidate->GetCaloLabel(1) ) continue ;
300
72433939 301 //Remove matched clusters to tracks if Neutral and Track info is used
302 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged &&
6ae3345d 303 IsTrackMatched(cluster,GetReader()->GetInputEvent())) continue ;
73378bcc 304
23130491 305 cluster->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
306
307 //exclude particles in cone
308 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, mom.Eta(), mom.Phi());
23130491 309
9004af1c 310 // histo of eta and phi for all clusters
311 fhEtaPhiCluster->Fill(mom.Eta(), mom.Phi());
312 if(rad < conesize) {
313 // histos for all clusters in cone
6ae3345d 314 fhEtaPhiInConeCluster->Fill(mom.Eta(), mom.Phi());
315 continue ;
9004af1c 316 }
23130491 317 //fill histogram for UE in phi band in EMCal acceptance
318 if(mom.Eta() > (etaTrig-conesize) && mom.Eta() < (etaTrig+conesize))
319 {
320 phiBandPtSum+=mom.Pt();
321 fhPhiBandCluster->Fill(mom.Eta(),mom.Phi());
9004af1c 322
6ae3345d 323 }
23130491 324
325 //fill histogram for UE in eta band in EMCal acceptance
326 if(mom.Phi() > (phiTrig-conesize) && mom.Phi() < (phiTrig+conesize))
327 {
328 etaBandPtSum+=mom.Pt();
329 fhEtaBandCluster->Fill(mom.Eta(),mom.Phi());
330 }
331 }
332
814d1087 333 fhConeSumPtEtaBandUECluster ->Fill(ptTrig , etaBandPtSum);
334 fhConeSumPtPhiBandUECluster ->Fill(ptTrig , phiBandPtSum);
23130491 335 fhConeSumPtEtaBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
336 fhConeSumPtPhiBandUEClusterTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
6ae3345d 337
23130491 338}
339
b5d10017 340//________________________________________________________________________________________________
9b01dc66 341void AliAnaParticleIsolation::CalculateCaloCellUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
342 Float_t & etaBandPtSumCells, Float_t & phiBandPtSumCells)
343{
344 // Get the cells amplitude or sum of amplitude in phi/eta bands or at 45 degrees from trigger
345
346 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
b5d10017 347
348 Float_t conesize = GetIsolationCut()->GetConeSize();
9b01dc66 349
350 Float_t phiTrig = pCandidate->Phi();
b5d10017 351 if(phiTrig<0) phiTrig += TMath::TwoPi();
9b01dc66 352 Float_t etaTrig = pCandidate->Eta();
9b01dc66 353
b5d10017 354 if(pCandidate->GetDetector()=="EMCAL")
9b01dc66 355 {
b5d10017 356 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
357 Int_t absId = -999;
358
359 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
e0ddcd8e 360 {
b5d10017 361 if(!eGeom->CheckAbsCellId(absId)) return ;
9b01dc66 362
b5d10017 363 // Get absolute (col,row) of trigger particle
364 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
365 Int_t nModule = -1;
366 Int_t imEta=-1, imPhi=-1;
367 Int_t ieta =-1, iphi =-1;
6ae3345d 368
b5d10017 369 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
370 {
371 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
372
373 Int_t colTrig = ieta;
374 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + ieta ;
375 Int_t rowTrig = iphi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
376
377 Int_t sqrSize = int(conesize/0.0143);
378
379 AliVCaloCells * cells = GetEMCALCells();
380
10a65cc6 381 Int_t nTotalRows = AliEMCALGeoParams::fgkEMCALRows*16/3 ; // 24*(16/3) 5 full-size Sectors (2 SM) + 1 one-third Sector (2 SM)
382 Int_t nTotalCols = 2*AliEMCALGeoParams::fgkEMCALCols;
6ae3345d 383 // printf("nTotalRows %i, nTotalCols %i\n",nTotalRows,nTotalCols);
b5d10017 384 // Loop on cells in eta band
6ae3345d 385
10a65cc6 386 Int_t irowmin = rowTrig-sqrSize;
6ae3345d 387 if(irowmin<0) irowmin=0;
388 Int_t irowmax = rowTrig+sqrSize;
389 if(irowmax>AliEMCALGeoParams::fgkEMCALRows) irowmax=AliEMCALGeoParams::fgkEMCALRows;
390
391
10a65cc6 392 for(Int_t irow = irowmin; irow <irowmax; irow++)
b5d10017 393 {
10a65cc6 394 for(Int_t icol = 0; icol < nTotalCols; icol++)
b5d10017 395 {
396 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
6ae3345d 397 if(inSector==5) continue;
398 Int_t inSupMod = -1;
b5d10017 399 Int_t icolLoc = -1;
400 if(icol < AliEMCALGeoParams::fgkEMCALCols)
401 {
ea051413 402 inSupMod = 2*inSector + 1;
b5d10017 403 icolLoc = icol;
404 }
405 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
406 {
ea051413 407 inSupMod = 2*inSector;
b5d10017 408 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
409 }
410
b5c8089d 411 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
6ae3345d 412
b5d10017 413 // Exclude cells in cone
9004af1c 414 if(TMath::Abs(icol-colTrig) < sqrSize || TMath::Abs(irow-rowTrig) < sqrSize){
6ae3345d 415 continue ;
9004af1c 416 }
b5d10017 417 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
418 if(!eGeom->CheckAbsCellId(iabsId)) continue;
419 etaBandPtSumCells += cells->GetCellAmplitude(iabsId);
6ae3345d 420 fhEtaBandCell->Fill(colTrig,rowTrig);
421
422 // printf("ETA inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, etaBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,etaBandPtSumCells);
423 }
b5d10017 424 }
6ae3345d 425 Int_t icolmin = colTrig-sqrSize;
426 if(icolmin<0) icolmin=0;
427 Int_t icolmax = colTrig+sqrSize;
428 if(icolmax>AliEMCALGeoParams::fgkEMCALCols) icolmax=AliEMCALGeoParams::fgkEMCALCols;
10a65cc6 429
b5d10017 430 // Loop on cells in phi band
10a65cc6 431 for(Int_t icol = icolmin; icol < icolmax; icol++)
b5d10017 432 {
433 for(Int_t irow = 0; irow < nTotalRows; irow++)
6ae3345d 434 {
b5d10017 435 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
6ae3345d 436 if(inSector==5) continue;
b5d10017 437 Int_t inSupMod = -1;
438 Int_t icolLoc = -1;
6ae3345d 439 // printf("icol %i, irow %i, inSector %i\n",icol,irow ,inSector);
b5d10017 440 if(icol < AliEMCALGeoParams::fgkEMCALCols)
441 {
6ae3345d 442 // printf("icol < AliEMCALGeoParams::fgkEMCALCols %i\n",AliEMCALGeoParams::fgkEMCALCols );
ea051413 443 inSupMod = 2*inSector + 1;
b5d10017 444 icolLoc = icol;
445 }
446 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
447 {
6ae3345d 448 // printf("icol > AliEMCALGeoParams::fgkEMCALCols -1 %i\n",AliEMCALGeoParams::fgkEMCALCols -1 );
449 inSupMod = 2*inSector;
b5d10017 450 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
451 }
452
ea051413 453 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ; // Stesso problema di sopra //
6ae3345d 454
b5d10017 455 // Exclude cells in cone
10a65cc6 456 if(TMath::Abs(icol-colTrig) < sqrSize) {
6ae3345d 457 //printf("TMath::Abs(icol-colTrig) %i < sqrSize %i\n",TMath::Abs(icol-colTrig) ,sqrSize);continue ;
458 }
10a65cc6 459 if(TMath::Abs(irow-rowTrig) < sqrSize) {
6ae3345d 460 //printf("TMath::Abs(irow-rowTrig) %i < sqrSize %i\n",TMath::Abs(irow-rowTrig) ,sqrSize);continue ;
461 }
b5d10017 462
463 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
10a65cc6 464 if(!eGeom->CheckAbsCellId(iabsId)) {printf("!eGeom->CheckAbsCellId(iabsId=%i) inSupMod %i irowLoc %i icolLoc %i \n",iabsId,inSupMod, irowLoc, icolLoc);continue;}
b5d10017 465 phiBandPtSumCells += cells->GetCellAmplitude(iabsId);
6ae3345d 466 fhPhiBandCell->Fill(colTrig,rowTrig);
467 //printf("inSupMod %i,irowLoc %i,icolLoc %i, iabsId %i, phiBandPtSumCells %f\n",nSupMod,irowLoc,icolLoc,iabsId,phiBandPtSumCells);
468 }
b5d10017 469 }
470 }
9b01dc66 471 }
472 }
473
474 Float_t ptTrig = pCandidate->Pt();
475
476 fhConeSumPtEtaBandUECell ->Fill(ptTrig , etaBandPtSumCells);
477 fhConeSumPtPhiBandUECell ->Fill(ptTrig , phiBandPtSumCells);
478 fhConeSumPtEtaBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSumCells);
479 fhConeSumPtPhiBandUECellTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSumCells);
480
481}
482
23130491 483//________________________________________________________________________________________________
484void AliAnaParticleIsolation::CalculateTrackUEBand(AliAODPWG4ParticleCorrelation * pCandidate,
485 Float_t & etaBandPtSum, Float_t & phiBandPtSum)
486{
487 // Get the track pT or sum of pT in phi/eta bands or at 45 degrees from trigger
488
72433939 489 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
490
23130491 491 Float_t conesize = GetIsolationCut()->GetConeSize();
492
493 Double_t sumptPerp= 0. ;
494 Float_t ptTrig = pCandidate->Pt() ;
495 Float_t phiTrig = pCandidate->Phi();
496 Float_t etaTrig = pCandidate->Eta();
497
498 TObjArray * trackList = GetCTSTracks() ;
499 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
500 {
501 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
502
503 if(!track)
504 {
727a309a 505 printf("AliAnaParticleIsolation::CalculateTrackUEBand() - Track not available?");
23130491 506 continue;
507 }
508
509 //Do not count the candidate (pion, conversion photon) or the daughters of the candidate
510 if(track->GetID() == pCandidate->GetTrackLabel(0) || track->GetID() == pCandidate->GetTrackLabel(1) ||
511 track->GetID() == pCandidate->GetTrackLabel(2) || track->GetID() == pCandidate->GetTrackLabel(3) ) continue ;
6ae3345d 512
513 // histo of eta:phi for all tracks
9004af1c 514 fhEtaPhiTrack->Fill(track->Eta(),track->Phi());
6ae3345d 515
23130491 516 //exclude particles in cone
517 Float_t rad = GetIsolationCut()->Radius(etaTrig, phiTrig, track->Eta(), track->Phi());
9004af1c 518 if(rad < conesize) {
519 // histo of eta:phi for all tracks in cone
6ae3345d 520 fhEtaPhiInConeTrack->Fill(track->Eta(),track->Phi());
9004af1c 521 continue ;
522 }
23130491 523
524 //fill histogram for UE in phi band
525 if(track->Eta() > (etaTrig-conesize) && track->Eta() < (etaTrig+conesize))
526 {
527 phiBandPtSum+=track->Pt();
528 fhPhiBandTrack->Fill(track->Eta(),track->Phi());
529 }
530
531 //fill histogram for UE in eta band in EMCal acceptance
6ae3345d 532 if(track->Phi() > (phiTrig-conesize) && track->Phi() < (phiTrig+conesize))
23130491 533 {
534 etaBandPtSum+=track->Pt();
535 fhEtaBandTrack->Fill(track->Eta(),track->Phi());
536 }
537
538 //fill the histograms at +-45 degrees in phi from trigger particle, perpedicular to trigger axis in phi
539 Double_t dPhi = phiTrig - track->Phi() + TMath::PiOver2();
540 Double_t dEta = etaTrig - track->Eta();
541 Double_t arg = dPhi*dPhi + dEta*dEta;
542 if(TMath::Sqrt(arg) < conesize)
543 {
544 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
545 sumptPerp+=track->Pt();
546 }
547
548 dPhi = phiTrig - track->Phi() - TMath::PiOver2();
549 arg = dPhi*dPhi + dEta*dEta;
550 if(TMath::Sqrt(arg) < conesize)
551 {
552 fhPtInPerpCone->Fill(ptTrig,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
553 sumptPerp+=track->Pt();
554 }
555 }
556
814d1087 557 fhPerpConeSumPt ->Fill(ptTrig , sumptPerp );
558 fhConeSumPtEtaBandUETrack ->Fill(ptTrig , etaBandPtSum);
559 fhConeSumPtPhiBandUETrack ->Fill(ptTrig , phiBandPtSum);
23130491 560 fhConeSumPtEtaBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,etaBandPtSum);
561 fhConeSumPtPhiBandUETrackTrigEtaPhi->Fill(etaTrig,phiTrig,phiBandPtSum);
6ae3345d 562
23130491 563}
564
0e7a6570 565
0e7a6570 566
b94e038e 567//_____________________________________________________________________________________________________________________________________
568void AliAnaParticleIsolation::CalculateNormalizeUEBandPerUnitArea(AliAODPWG4ParticleCorrelation * pCandidate, Float_t coneptsumCluster,
569 Float_t coneptsumCell, Float_t coneptsumTrack,
570 Float_t &etaBandptsumTrackNorm, Float_t &etaBandptsumClusterNorm)
23130491 571{
572 //normalize phi/eta band per area unit
6ae3345d 573
23130491 574 Float_t etaUEptsumTrack = 0 ;
575 Float_t phiUEptsumTrack = 0 ;
576 Float_t etaUEptsumCluster = 0 ;
577 Float_t phiUEptsumCluster = 0 ;
9b01dc66 578 Float_t etaUEptsumCell = 0 ;
579 Float_t phiUEptsumCell = 0 ;
580
72433939 581 Int_t partTypeInCone = GetIsolationCut()->GetParticleTypeInCone();
23130491 582
23130491 583 // Do the normalization
584
585 Float_t conesize = GetIsolationCut()->GetConeSize();
586 Float_t coneA = conesize*conesize*TMath::Pi(); // A = pi R^2, isolation cone area
587 Float_t ptTrig = pCandidate->Pt() ;
588 Float_t phiTrig = pCandidate->Phi();
589 Float_t etaTrig = pCandidate->Eta();
727a309a 590
6ae3345d 591
23130491 592 // ------ //
593 // Tracks //
594 // ------ //
72433939 595 Float_t phiUEptsumTrackNorm = 0 ;
596 Float_t etaUEptsumTrackNorm = 0 ;
597 Float_t coneptsumTrackSubPhi = 0 ;
598 Float_t coneptsumTrackSubEta = 0 ;
b5d10017 599 Float_t coneptsumTrackSubPhiNorm = 0 ;
600 Float_t coneptsumTrackSubEtaNorm = 0 ;
727a309a 601 etaBandptsumTrackNorm = 0 ;
6ae3345d 602
72433939 603 if( partTypeInCone!=AliIsolationCut::kOnlyNeutral )
23130491 604 {
727a309a 605 // Sum the pT in the phi or eta band for clusters or tracks
606 CalculateTrackUEBand (pCandidate,etaUEptsumTrack ,phiUEptsumTrack );// rajouter ici l'histo eta phi
6ae3345d 607
608 //Fill histos
609 fhConeSumPtVSUETracksEtaBand->Fill(coneptsumTrack,etaUEptsumTrack);
610 fhConeSumPtVSUETracksPhiBand->Fill(coneptsumTrack,phiUEptsumTrack);
611
612
727a309a 613 Float_t correctConeSumTrack = 1;
614 Float_t correctConeSumTrackPhi = 1;
6ae3345d 615
727a309a 616 GetIsolationCut()->CalculateUEBandTrackNormalization(GetReader(),etaTrig, phiTrig,
6ae3345d 617 phiUEptsumTrack,etaUEptsumTrack,
618 phiUEptsumTrackNorm,etaUEptsumTrackNorm,
619 correctConeSumTrack,correctConeSumTrackPhi);
620
727a309a 621 coneptsumTrackSubPhi = coneptsumTrack - phiUEptsumTrackNorm;
622 coneptsumTrackSubEta = coneptsumTrack - etaUEptsumTrackNorm;
6ae3345d 623
727a309a 624 etaBandptsumTrackNorm = etaUEptsumTrackNorm;
72433939 625
626 fhConeSumPtPhiUESubTrack ->Fill(ptTrig , coneptsumTrackSubPhi);
627 fhConeSumPtPhiUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubPhi);
628 fhConeSumPtEtaUESubTrack ->Fill(ptTrig , coneptsumTrackSubEta);
629 fhConeSumPtEtaUESubTrackTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumTrackSubEta);
630
631 fhFractionTrackOutConeEta ->Fill(ptTrig , correctConeSumTrack-1);
632 fhFractionTrackOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig,correctConeSumTrack-1);
b5d10017 633
727a309a 634 if(coneptsumTrack > 0)
635 {
636 coneptsumTrackSubPhiNorm = coneptsumTrackSubPhi/coneptsumTrack;
10a65cc6 637 coneptsumTrackSubEtaNorm = coneptsumTrackSubEta/coneptsumTrack;
638 }
727a309a 639
b5d10017 640 fhConeSumPtSubvsConeSumPtTotPhiTrack ->Fill(coneptsumTrack,coneptsumTrackSubPhi);
641 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->Fill(coneptsumTrack,coneptsumTrackSubPhiNorm);
642 fhConeSumPtSubvsConeSumPtTotEtaTrack ->Fill(coneptsumTrack,coneptsumTrackSubEta);
643 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->Fill(coneptsumTrack,coneptsumTrackSubEtaNorm);
644
72433939 645 }
23130491 646
9b01dc66 647 // ------------------------ //
648 // EMCal Clusters and cells //
649 // ------------------------ //
72433939 650 Float_t phiUEptsumClusterNorm = 0 ;
651 Float_t etaUEptsumClusterNorm = 0 ;
652 Float_t coneptsumClusterSubPhi = 0 ;
653 Float_t coneptsumClusterSubEta = 0 ;
b5d10017 654 Float_t coneptsumClusterSubPhiNorm = 0 ;
655 Float_t coneptsumClusterSubEtaNorm = 0 ;
9b01dc66 656 Float_t phiUEptsumCellNorm = 0 ;
657 Float_t etaUEptsumCellNorm = 0 ;
658 Float_t coneptsumCellSubPhi = 0 ;
659 Float_t coneptsumCellSubEta = 0 ;
b5d10017 660 Float_t coneptsumCellSubPhiNorm = 0 ;
661 Float_t coneptsumCellSubEtaNorm = 0 ;
727a309a 662 etaBandptsumClusterNorm = 0;
6ae3345d 663
72433939 664 if( partTypeInCone!=AliIsolationCut::kOnlyCharged )
23130491 665 {
977564f5 666
9b01dc66 667 // -------------- //
668 // EMCal clusters //
669 // -------------- //
72433939 670
727a309a 671 // Sum the pT in the phi or eta band for clusters or tracks
672 CalculateCaloUEBand (pCandidate,etaUEptsumCluster,phiUEptsumCluster);// rajouter ici l'histo eta phi
977564f5 673
674 //Fill histos
675 fhConeSumPtVSUEClusterEtaBand->Fill(coneptsumCluster,etaUEptsumCluster);
676 fhConeSumPtVSUEClusterPhiBand->Fill(coneptsumCluster,phiUEptsumCluster);
677
678
727a309a 679 Float_t correctConeSumClusterEta = 1;
72433939 680 Float_t correctConeSumClusterPhi = 1;
977564f5 681
727a309a 682 GetIsolationCut()->CalculateUEBandClusterNormalization(GetReader(),etaTrig, phiTrig,
683 phiUEptsumCluster,etaUEptsumCluster,
684 phiUEptsumClusterNorm,etaUEptsumClusterNorm,
685 correctConeSumClusterEta,correctConeSumClusterPhi);
72433939 686
687 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
727a309a 688 // Comment if not used
689 // Float_t coneBadCellsCoeff =1;
690 // Float_t etaBandBadCellsCoeff=1;
691 // Float_t phiBandBadCellsCoeff=1;
692 // GetIsolationCut()->GetCoeffNormBadCell(pCandidate, GetReader(),coneBadCellsCoeff,etaBandBadCellsCoeff,phiBandBadCellsCoeff) ;
977564f5 693
727a309a 694 //coneptsumCluster=coneptsumCluster*coneBadCellsCoeff*correctConeSumClusterEta*correctConeSumClusterPhi;
695
696 coneptsumClusterSubPhi = coneptsumCluster - phiUEptsumClusterNorm;
26a8bf11 697 coneptsumClusterSubEta = coneptsumCluster - etaUEptsumClusterNorm;
72433939 698
727a309a 699 etaBandptsumClusterNorm = etaUEptsumClusterNorm;
977564f5 700
72433939 701 fhConeSumPtPhiUESubCluster ->Fill(ptTrig , coneptsumClusterSubPhi);
702 fhConeSumPtPhiUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubPhi);
703 fhConeSumPtEtaUESubCluster ->Fill(ptTrig , coneptsumClusterSubEta);
704 fhConeSumPtEtaUESubClusterTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumClusterSubEta);
705
706 fhFractionClusterOutConeEta ->Fill(ptTrig , correctConeSumClusterEta-1);
707 fhFractionClusterOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterEta-1);
708 fhFractionClusterOutConePhi ->Fill(ptTrig , correctConeSumClusterPhi-1);
709 fhFractionClusterOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumClusterPhi-1);
9b01dc66 710
727a309a 711 if(coneptsumCluster!=0)
712 {
10a65cc6 713 coneptsumClusterSubPhiNorm = coneptsumClusterSubPhi/coneptsumCluster;
714 coneptsumClusterSubEtaNorm = coneptsumClusterSubEta/coneptsumCluster;
715 }
727a309a 716
b5d10017 717 fhConeSumPtSubvsConeSumPtTotPhiCluster ->Fill(coneptsumCluster,coneptsumClusterSubPhi);
718 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->Fill(coneptsumCluster,coneptsumClusterSubPhiNorm);
719 fhConeSumPtSubvsConeSumPtTotEtaCluster ->Fill(coneptsumCluster,coneptsumClusterSubEta);
720 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->Fill(coneptsumCluster,coneptsumClusterSubEtaNorm);
721
9b01dc66 722 // ----------- //
723 // EMCal Cells //
724 // ----------- //
727a309a 725
977564f5 726 if(fFillCellHistograms)
9b01dc66 727 {
977564f5 728 // Sum the pT in the phi or eta band for clusters or tracks
729 CalculateCaloCellUEBand(pCandidate,etaUEptsumCell ,phiUEptsumCell );
9b01dc66 730
977564f5 731 // Move to AliIsolationCut the calculation not the histograms??
b5d10017 732
977564f5 733 //Careful here if EMCal limits changed .. 2010 (4 SM) to 2011-12 (10 SM), for the moment consider 100 deg in phi
734 Float_t emcEtaSize = 0.7*2; // TO FIX
735 Float_t emcPhiSize = TMath::DegToRad()*100.; // TO FIX
736
737 if(((2*conesize*emcPhiSize)-coneA)!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*conesize*emcPhiSize)-coneA));
738 if(((2*conesize*emcEtaSize)-coneA)!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*conesize*emcEtaSize)-coneA));
739
740 // Need to correct coneptsumCluster by the fraction of the cone out of the calorimeter cut acceptance!
741
742 Float_t correctConeSumCellEta = 1;
743 if(TMath::Abs(etaTrig)+conesize > emcEtaSize/2.)
744 {
745 Float_t excess = TMath::Abs(etaTrig) + conesize - emcEtaSize/2.;
746 correctConeSumCellEta = GetIsolationCut()->CalculateExcessAreaFraction(excess);
747 //printf("Excess EMC-Eta %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",excess,coneA, excessA, angle*TMath::RadToDeg(), correctConeSumClusterEta);
748 // Need to correct phi band surface if part of the cone falls out of track cut acceptance!
749 if(((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta))!=0)phiUEptsumCellNorm = phiUEptsumCell*(coneA / ((2*(conesize-excess)*emcPhiSize)-(coneA-correctConeSumCellEta)));
750 }
751
752 Float_t correctConeSumCellPhi = 1;
753 //printf("EMCPhiTrig %2.2f, conesize %2.2f, sum %2.2f, rest %2.2f \n",phiTrig*TMath::RadToDeg(),conesize*TMath::RadToDeg(),(phiTrig+conesize)*TMath::RadToDeg(),(phiTrig-conesize)*TMath::RadToDeg() );
754 if((phiTrig+conesize > 180*TMath::DegToRad()) ||
755 (phiTrig-conesize < 80*TMath::DegToRad()))
756 {
757 Float_t excess = 0;
758 if( phiTrig+conesize > 180*TMath::DegToRad() ) excess = conesize + phiTrig - 180*TMath::DegToRad() ;
759 else excess = conesize - phiTrig + 80*TMath::DegToRad() ;
760
761 correctConeSumCellPhi = GetIsolationCut()->CalculateExcessAreaFraction(excess);
762 //printf("Excess EMC-Phi %2.3f, coneA %2.2f, excessA %2.2f, angle %2.2f,factor %2.2f\n",excess,coneA, excessA, angle*TMath::RadToDeg(), correctConeSumClusterPhi);
763
764 // Need to correct eta band surface if part of the cone falls out of track cut acceptance!
765 if(((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi))!=0)etaUEptsumCellNorm = etaUEptsumCell*(coneA / ((2*(conesize-excess)*emcEtaSize)-(coneA-correctConeSumCellPhi)));
766
767 }
768
769 // In case that cone is out of eta and phi side, we are over correcting, not too often with the current cuts ...
770 coneptsumCellSubPhi = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - phiUEptsumCellNorm;
771 coneptsumCellSubEta = coneptsumCell*correctConeSumCellEta*correctConeSumCellPhi - etaUEptsumCellNorm;
772
773 fhConeSumPtPhiUESubCell ->Fill(ptTrig , coneptsumCellSubPhi);
774 fhConeSumPtPhiUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubPhi);
775 fhConeSumPtEtaUESubCell ->Fill(ptTrig , coneptsumCellSubEta);
776 fhConeSumPtEtaUESubCellTrigEtaPhi ->Fill(etaTrig, phiTrig, coneptsumCellSubEta);
777
778 fhFractionCellOutConeEta ->Fill(ptTrig , correctConeSumCellEta-1);
779 fhFractionCellOutConeEtaTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellEta-1);
780 fhFractionCellOutConePhi ->Fill(ptTrig , correctConeSumCellPhi-1);
781 fhFractionCellOutConePhiTrigEtaPhi->Fill(etaTrig, phiTrig, correctConeSumCellPhi-1);
782 if(coneptsumCell!=0)
783 {
784 coneptsumCellSubPhiNorm = coneptsumCellSubPhi/coneptsumCell;
785 coneptsumCellSubEtaNorm = coneptsumCellSubEta/coneptsumCell;
786 }
787
788 fhConeSumPtSubvsConeSumPtTotPhiCell ->Fill(coneptsumCell,coneptsumCellSubPhi);
789 fhConeSumPtSubNormvsConeSumPtTotPhiCell->Fill(coneptsumCell,coneptsumCellSubPhiNorm);
790 fhConeSumPtSubvsConeSumPtTotEtaCell ->Fill(coneptsumCell,coneptsumCellSubEta);
791 fhConeSumPtSubNormvsConeSumPtTotEtaCell->Fill(coneptsumCell,coneptsumCellSubEtaNorm);
10a65cc6 792 }
23130491 793 }
977564f5 794
72433939 795 if( partTypeInCone==AliIsolationCut::kNeutralAndCharged )
796 {
9b01dc66 797 // --------------------------- //
798 // Tracks and clusters in cone //
799 // --------------------------- //
72433939 800
801 Double_t sumPhiUESub = coneptsumClusterSubPhi + coneptsumTrackSubPhi;
802 Double_t sumEtaUESub = coneptsumClusterSubEta + coneptsumTrackSubEta;
803
804 fhConeSumPtPhiUESub ->Fill(ptTrig , sumPhiUESub);
805 fhConeSumPtPhiUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESub);
806 fhConeSumPtEtaUESub ->Fill(ptTrig , sumEtaUESub);
807 fhConeSumPtEtaUESubTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESub);
808
9b01dc66 809 fhEtaBandClustervsTrack ->Fill(etaUEptsumCluster ,etaUEptsumTrack );
810 fhPhiBandClustervsTrack ->Fill(phiUEptsumCluster ,phiUEptsumTrack );
72433939 811 fhEtaBandNormClustervsTrack->Fill(etaUEptsumClusterNorm,etaUEptsumTrackNorm);
812 fhPhiBandNormClustervsTrack->Fill(phiUEptsumClusterNorm,phiUEptsumTrackNorm);
813
814 fhConeSumPtEtaUESubClustervsTrack->Fill(coneptsumClusterSubEta,coneptsumTrackSubEta);
815 fhConeSumPtPhiUESubClustervsTrack->Fill(coneptsumClusterSubPhi,coneptsumTrackSubPhi);
977564f5 816
9b01dc66 817 // ------------------------ //
818 // Tracks and cells in cone //
819 // ------------------------ //
820
977564f5 821 if(fFillCellHistograms)
822 {
823 Double_t sumPhiUESubTrackCell = coneptsumCellSubPhi + coneptsumTrackSubPhi;
824 Double_t sumEtaUESubTrackCell = coneptsumCellSubEta + coneptsumTrackSubEta;
825
826 fhConeSumPtPhiUESubTrackCell ->Fill(ptTrig , sumPhiUESubTrackCell);
827 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumPhiUESubTrackCell);
828 fhConeSumPtEtaUESubTrackCell ->Fill(ptTrig , sumEtaUESubTrackCell);
829 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->Fill(etaTrig, phiTrig, sumEtaUESubTrackCell);
830
831 fhEtaBandCellvsTrack ->Fill(etaUEptsumCell ,etaUEptsumTrack );
832 fhPhiBandCellvsTrack ->Fill(phiUEptsumCell ,phiUEptsumTrack );
833 fhEtaBandNormCellvsTrack->Fill(etaUEptsumCellNorm,etaUEptsumTrackNorm);
834 fhPhiBandNormCellvsTrack->Fill(phiUEptsumCellNorm,phiUEptsumTrackNorm);
835
836 fhConeSumPtEtaUESubCellvsTrack->Fill(coneptsumCellSubEta,coneptsumTrackSubEta);
837 fhConeSumPtPhiUESubCellvsTrack->Fill(coneptsumCellSubPhi,coneptsumTrackSubPhi);
838 }
9b01dc66 839
72433939 840 }
23130491 841}
842
843
844//__________________________________________________________________________________________________
845void AliAnaParticleIsolation::CalculateCaloSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
846 Float_t & coneptsumCluster)
847{
848 // Get the cluster pT or sum of pT in isolation cone
849
72433939 850 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
851
23130491 852 //Recover reference arrays with clusters and tracks
6ae3345d 853 TObjArray * refclusters = aodParticle->GetObjArray(GetAODObjArrayName()+"Clusters");
23130491 854 if(!refclusters) return ;
855
856 Float_t ptTrig = aodParticle->Pt();
6ae3345d 857
23130491 858 //Get vertex for cluster momentum calculation
859 Double_t vertex[] = {0,0,0} ; //vertex ;
860 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
861 GetReader()->GetVertex(vertex);
862
863 TLorentzVector mom ;
864 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
865 {
866 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
867 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
868
869 fhPtInCone ->Fill(ptTrig, mom.Pt());
870 fhPtClusterInCone->Fill(ptTrig, mom.Pt());
871
872 if(fFillPileUpHistograms)
873 {
874 if(GetReader()->IsPileUpFromSPD()) fhPtInConePileUp[0]->Fill(ptTrig,mom.Pt());
875 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,mom.Pt());
876 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,mom.Pt());
877 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,mom.Pt());
878 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,mom.Pt());
879 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,mom.Pt());
880 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,mom.Pt());
881 }
882
977564f5 883 if(fFillHighMultHistograms) fhPtInConeCent->Fill(GetEventCentrality(),mom.Pt());
884
23130491 885 coneptsumCluster+=mom.Pt();
72433939 886 }
6ae3345d 887
72433939 888 fhConeSumPtCluster ->Fill(ptTrig, coneptsumCluster);
23130491 889}
890
b94e038e 891//______________________________________________________________________________________________________
9b01dc66 892void AliAnaParticleIsolation::CalculateCaloCellSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
893 Float_t & coneptsumCell)
894{
b5d10017 895 // Get the cell amplityde or sum of amplitudes in isolation cone
896 // Mising: Remove signal cells in cone in case the trigger is a cluster!
9b01dc66 897
898 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyCharged ) return ;
b5d10017 899
9b01dc66 900 Float_t conesize = GetIsolationCut()->GetConeSize();
901
902 Float_t ptTrig = aodParticle->Pt();
903 Float_t phiTrig = aodParticle->Phi();
b5d10017 904 if(phiTrig<0) phiTrig += TMath::TwoPi();
9b01dc66 905 Float_t etaTrig = aodParticle->Eta();
906
b5d10017 907 if(aodParticle->GetDetector()=="EMCAL")
9b01dc66 908 {
b5d10017 909 AliEMCALGeometry* eGeom = AliEMCALGeometry::GetInstance();
910 Int_t absId = -999;
911
912 if (eGeom->GetAbsCellIdFromEtaPhi(etaTrig,phiTrig,absId))
9b01dc66 913 {
b5d10017 914 if(!eGeom->CheckAbsCellId(absId)) return ;
9b01dc66 915
b5d10017 916 // Get absolute (col,row) of trigger particle
917 Int_t nSupMod = eGeom->GetSuperModuleNumber(absId);
918 Int_t nModule = -1;
919 Int_t imEta=-1, imPhi=-1;
920 Int_t ieta =-1, iphi =-1;
6ae3345d 921
b5d10017 922 if (eGeom->GetCellIndex(absId,nSupMod,nModule,imPhi,imEta))
923 {
924 Int_t iEta=-1, iPhi=-1;
925 eGeom->GetCellPhiEtaIndexInSModule(nSupMod,nModule,imPhi,imEta,iphi,ieta);
926
927 Int_t colTrig = iEta;
928 if (nSupMod % 2) colTrig = AliEMCALGeoParams::fgkEMCALCols + iEta ;
929 Int_t rowTrig = iPhi + AliEMCALGeoParams::fgkEMCALRows*int(nSupMod/2);
930
931 Int_t sqrSize = int(conesize/0.0143);
932
933 AliVCaloCells * cells = GetEMCALCells();
934
935 // Loop on cells in cone
936 for(Int_t irow = rowTrig-sqrSize; irow < rowTrig+sqrSize; irow++)
937 {
10a65cc6 938 for(Int_t icol = colTrig-sqrSize; icol < colTrig+sqrSize; icol++)
b5d10017 939 {
940 Int_t inSector = int(irow/AliEMCALGeoParams::fgkEMCALRows);
6ae3345d 941 if(inSector==5) continue;
942
943 Int_t inSupMod = -1;
b5d10017 944 Int_t icolLoc = -1;
945 if(icol < AliEMCALGeoParams::fgkEMCALCols)
946 {
ea051413 947 inSupMod = 2*inSector + 1;
b5d10017 948 icolLoc = icol;
949 }
950 else if(icol > AliEMCALGeoParams::fgkEMCALCols - 1)
951 {
ea051413 952 inSupMod = 2*inSector;
b5d10017 953 icolLoc = icol-AliEMCALGeoParams::fgkEMCALCols;
954 }
955
b5c8089d 956 Int_t irowLoc = irow - AliEMCALGeoParams::fgkEMCALRows*inSector ;
b5d10017 957
958 Int_t iabsId = eGeom->GetAbsCellIdFromCellIndexes(inSupMod,irowLoc,icolLoc);
959 if(!eGeom->CheckAbsCellId(iabsId)) continue;
960
961 fhPtCellInCone->Fill(ptTrig, cells->GetCellAmplitude(iabsId));
962 coneptsumCell += cells->GetCellAmplitude(iabsId);
963 }
964 }
965 }
9b01dc66 966 }
967 }
968
969 fhConeSumPtCell->Fill(ptTrig,coneptsumCell);
b5d10017 970
9b01dc66 971}
972
23130491 973//___________________________________________________________________________________________________
974void AliAnaParticleIsolation::CalculateTrackSignalInCone(AliAODPWG4ParticleCorrelation * aodParticle,
975 Float_t & coneptsumTrack)
976{
977 // Get the track pT or sum of pT in isolation cone
978
72433939 979 if( GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kOnlyNeutral ) return ;
980
23130491 981 //Recover reference arrays with clusters and tracks
982 TObjArray * reftracks = aodParticle->GetObjArray(GetAODObjArrayName()+"Tracks");
983 if(!reftracks) return ;
984
985 Float_t ptTrig = aodParticle->Pt();
986 Double_t bz = GetReader()->GetInputEvent()->GetMagneticField();
6ae3345d 987
23130491 988 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
989 {
990 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
991 Float_t pTtrack = track->Pt();
992
993 fhPtInCone ->Fill(ptTrig,pTtrack);
994 fhPtTrackInCone->Fill(ptTrig,pTtrack);
995
996 if(fFillPileUpHistograms)
997 {
998 ULong_t status = track->GetStatus();
999 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1000 //Double32_t tof = track->GetTOFsignal()*1e-3;
1001 Int_t trackBC = track->GetTOFBunchCrossing(bz);
1002
1003 if ( okTOF && trackBC!=0 ) fhPtTrackInConeOtherBC->Fill(ptTrig,pTtrack);
1004 else if( okTOF && trackBC==0 ) fhPtTrackInConeBC0 ->Fill(ptTrig,pTtrack);
1005
1006 Int_t vtxBC = GetReader()->GetVertexBC();
1007 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA) fhPtTrackInConeVtxBC0->Fill(ptTrig,pTtrack);
1008
1009 if(GetReader()->IsPileUpFromSPD()) { fhPtInConePileUp[0]->Fill(ptTrig,pTtrack);
6ae3345d 1010 if(okTOF && trackBC!=0 ) fhPtTrackInConeOtherBCPileUpSPD->Fill(ptTrig,pTtrack);
1011 if(okTOF && trackBC==0 ) fhPtTrackInConeBC0PileUpSPD ->Fill(ptTrig,pTtrack); }
23130491 1012 if(GetReader()->IsPileUpFromEMCal()) fhPtInConePileUp[1]->Fill(ptTrig,pTtrack);
1013 if(GetReader()->IsPileUpFromSPDOrEMCal()) fhPtInConePileUp[2]->Fill(ptTrig,pTtrack);
1014 if(GetReader()->IsPileUpFromSPDAndEMCal()) fhPtInConePileUp[3]->Fill(ptTrig,pTtrack);
1015 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) fhPtInConePileUp[4]->Fill(ptTrig,pTtrack);
1016 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) fhPtInConePileUp[5]->Fill(ptTrig,pTtrack);
1017 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) fhPtInConePileUp[6]->Fill(ptTrig,pTtrack);
1018 }
1019
977564f5 1020 if(fFillHighMultHistograms) fhPtInConeCent->Fill(GetEventCentrality(),pTtrack);
1021
23130491 1022 coneptsumTrack+=pTtrack;
1023 }
72433939 1024
1025 fhConeSumPtTrack->Fill(ptTrig, coneptsumTrack);
6ae3345d 1026
23130491 1027}
1028
2ad19c3d 1029//_________________________________________________________________
23130491 1030void AliAnaParticleIsolation::FillPileUpHistograms(Int_t clusterID)
2ad19c3d 1031{
1032 // Fill some histograms to understand pile-up
2ad19c3d 1033
6ae3345d 1034 if(clusterID < 0 )
2ad19c3d 1035 {
1036 printf("AliAnaParticleIsolation::FillPileUpHistograms(), ID of cluster = %d, not possible! ", clusterID);
1037 return;
1038 }
1039
1040 Int_t iclus = -1;
1041 TObjArray* clusters = 0x0;
1042 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1043 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1044
1045 Float_t energy = 0;
1046 Float_t time = -1000;
6ae3345d 1047
2ad19c3d 1048 if(clusters)
1049 {
6ae3345d 1050 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
2ad19c3d 1051 energy = cluster->E();
994051fa 1052 time = cluster->GetTOF()*1e9;
6ae3345d 1053 }
2ad19c3d 1054
1055 //printf("E %f, time %f\n",energy,time);
1056 AliVEvent * event = GetReader()->GetInputEvent();
1057
1058 fhTimeENoCut->Fill(energy,time);
1059 if(GetReader()->IsPileUpFromSPD()) fhTimeESPD ->Fill(energy,time);
1060 if(event->IsPileupFromSPDInMultBins()) fhTimeESPDMulti->Fill(energy,time);
1061
de101942 1062 if(energy < 8) return; // Fill time figures for high energy clusters not too close to trigger threshold
2ad19c3d 1063
1064 AliESDEvent* esdEv = dynamic_cast<AliESDEvent*> (event);
1065 AliAODEvent* aodEv = dynamic_cast<AliAODEvent*> (event);
1066
1067 // N pile up vertices
1068 Int_t nVerticesSPD = -1;
1069 Int_t nVerticesTracks = -1;
1070
1071 if (esdEv)
1072 {
1073 nVerticesSPD = esdEv->GetNumberOfPileupVerticesSPD();
1074 nVerticesTracks = esdEv->GetNumberOfPileupVerticesTracks();
1075
1076 }//ESD
1077 else if (aodEv)
1078 {
1079 nVerticesSPD = aodEv->GetNumberOfPileupVerticesSPD();
1080 nVerticesTracks = aodEv->GetNumberOfPileupVerticesTracks();
1081 }//AOD
1082
1083 fhTimeNPileUpVertSPD ->Fill(time,nVerticesSPD);
1084 fhTimeNPileUpVertTrack->Fill(time,nVerticesTracks);
1085
6ae3345d 1086 //printf("Is SPD %d, Is SPD Multi %d, n spd %d, n track %d\n",
2ad19c3d 1087 // GetReader()->IsPileUpFromSPD(),event->IsPileupFromSPDInMultBins(),nVerticesSPD,nVerticesTracks);
1088
1089 Int_t ncont = -1;
5559f30a 1090 Float_t z1 = -1, z2 = -1;
2ad19c3d 1091 Float_t diamZ = -1;
1092 for(Int_t iVert=0; iVert<nVerticesSPD;iVert++)
1093 {
1094 if (esdEv)
1095 {
1096 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
1097 ncont=pv->GetNContributors();
1098 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
1099 z2 = pv->GetZ();
1100 diamZ = esdEv->GetDiamondZ();
1101 }//ESD
1102 else if (aodEv)
1103 {
1104 AliAODVertex *pv=aodEv->GetVertex(iVert);
1105 if(pv->GetType()!=AliAODVertex::kPileupSPD) continue;
1106 ncont=pv->GetNContributors();
1107 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
1108 z2=pv->GetZ();
1109 diamZ = aodEv->GetDiamondZ();
1110 }// AOD
1111
1112 Double_t distZ = TMath::Abs(z2-z1);
1113 diamZ = TMath::Abs(z2-diamZ);
1114
1115 fhTimeNPileUpVertContributors ->Fill(time,ncont);
1116 fhTimePileUpMainVertexZDistance->Fill(time,distZ);
1117 fhTimePileUpMainVertexZDiamond ->Fill(time,diamZ);
1118
1119 }// loop
1120}
1121
23130491 1122//_____________________________________________________________________________________________________________________
124bffb3 1123void AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation *pCandidate,
1124 Int_t mcIndex)
b5dbb99b 1125{
6ae3345d 1126 // Fill Track matching and Shower Shape control histograms
b5dbb99b 1127 if(!fFillTMHisto && !fFillSSHisto) return;
1128
23130491 1129 Int_t clusterID = pCandidate->GetCaloLabel(0) ;
1130 Int_t nMaxima = pCandidate->GetFiducialArea(); // bad name, just place holder for the moment
1131 Int_t mcTag = pCandidate->GetTag() ;
1132 Bool_t isolated = pCandidate->IsIsolated();
1133
1134 if(clusterID < 0 )
547c2f01 1135 {
81a5e27b 1136 printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeControlHistograms(), ID of cluster = %d, not possible! \n", clusterID);
547c2f01 1137 return;
1138 }
1139
b5dbb99b 1140 Int_t iclus = -1;
1141 TObjArray* clusters = 0x0;
1142 if (fCalorimeter == "EMCAL") clusters = GetEMCALClusters();
1143 else if(fCalorimeter == "PHOS" ) clusters = GetPHOSClusters();
1144
32d244b0 1145 Float_t energy = pCandidate->E();
1146 Float_t pt = pCandidate->Pt();
1147
b5dbb99b 1148 if(clusters)
1149 {
6ae3345d 1150 AliVCluster *cluster = FindCluster(clusters,clusterID,iclus);
b5dbb99b 1151
1152 if(fFillSSHisto)
1153 {
32d244b0 1154 fhELambda0 [isolated]->Fill(energy, cluster->GetM02() );
6ae3345d 1155 fhPtLambda0[isolated]->Fill(pt, cluster->GetM02() );
32d244b0 1156 fhELambda1 [isolated]->Fill(energy, cluster->GetM20() );
b5dbb99b 1157
764ab1f4 1158 if(IsDataMC())
1159 {
124bffb3 1160 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
1161 fhPtLambda0MC[kmcPhoton][isolated]->Fill(pt, cluster->GetM02());
6ae3345d 1162
1163 fhPtLambda0MC[mcIndex][isolated]->Fill(pt, cluster->GetM02());
764ab1f4 1164 }
1165
4d1d8f00 1166 if(fCalorimeter == "EMCAL" && GetFirstSMCoveredByTRD() >= 0 &&
1167 GetModuleNumber(cluster) >= GetFirstSMCoveredByTRD() )
b5dbb99b 1168 {
32d244b0 1169 fhELambda0TRD [isolated]->Fill(energy, cluster->GetM02() );
6ae3345d 1170 fhPtLambda0TRD[isolated]->Fill(pt , cluster->GetM02() );
32d244b0 1171 fhELambda1TRD [isolated]->Fill(energy, cluster->GetM20() );
b5dbb99b 1172 }
5c46c992 1173
977564f5 1174 if(fFillNLMHistograms)
1175 {
1176 fhNLocMax[isolated]->Fill(energy,nMaxima);
1177 if (nMaxima==1) { fhELambda0LocMax1[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax1[isolated]->Fill(energy,cluster->GetM20()); }
1178 else if(nMaxima==2) { fhELambda0LocMax2[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMax2[isolated]->Fill(energy,cluster->GetM20()); }
1179 else { fhELambda0LocMaxN[isolated]->Fill(energy,cluster->GetM02()); fhELambda1LocMaxN[isolated]->Fill(energy,cluster->GetM20()); }
1180 }
1181 } // SS histo fill
b5dbb99b 1182
1183
1184 if(fFillTMHisto)
1185 {
1186 Float_t dZ = cluster->GetTrackDz();
1187 Float_t dR = cluster->GetTrackDx();
1188
1189 if(cluster->IsEMCAL() && GetCaloUtils()->IsRecalculationOfClusterTrackMatchingOn())
1190 {
1191 dR = 2000., dZ = 2000.;
1192 GetCaloUtils()->GetEMCALRecoUtils()->GetMatchedResiduals(cluster->GetID(),dZ,dR);
1193 }
1194
1195 //printf("ParticleIsolation: dPhi %f, dEta %f\n",dR,dZ);
ec58c056 1196 if(fhTrackMatchedDEta[isolated] && TMath::Abs(dR) < 999)
b5dbb99b 1197 {
ca134929 1198 fhTrackMatchedDEta[isolated]->Fill(energy,dZ);
1199 fhTrackMatchedDPhi[isolated]->Fill(energy,dR);
1200 if(energy > 0.5) fhTrackMatchedDEtaDPhi[isolated]->Fill(dZ,dR);
b5dbb99b 1201 }
1202
1203 // Check dEdx and E/p of matched clusters
1204
1205 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
1206 {
db6fb352 1207
4bfeae64 1208 AliVTrack *track = GetCaloUtils()->GetMatchedTrack(cluster, GetReader()->GetInputEvent());
b5dbb99b 1209
6ae3345d 1210 if(track)
b5dbb99b 1211 {
1212 Float_t dEdx = track->GetTPCsignal();
ca134929 1213 fhdEdx[isolated]->Fill(cluster->E(), dEdx);
b5dbb99b 1214
1215 Float_t eOverp = cluster->E()/track->P();
ca134929 1216 fhEOverP[isolated]->Fill(cluster->E(), eOverp);
b5dbb99b 1217 }
6ae3345d 1218 //else
4bfeae64 1219 // printf("AliAnaParticleIsolation::FillTrackMatchingShowerShapeHistograms() - Residual OK but (dR, dZ)= (%2.4f,%2.4f) no track associated WHAT? \n", dR,dZ);
b5dbb99b 1220
db6fb352 1221
1222 if(IsDataMC())
1223 {
b5dbb99b 1224 if ( !GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCConversion) )
1225 {
1226 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
6ae3345d 1227 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 2.5 );
ca134929 1228 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 0.5 );
1229 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 1.5 );
1230 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 3.5 );
b5dbb99b 1231
1232 }
1233 else
1234 {
1235 if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0) ||
6ae3345d 1236 GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEta) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 6.5 );
ca134929 1237 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 4.5 );
1238 else if ( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron) ) fhTrackMatchedMCParticle[isolated]->Fill(energy, 5.5 );
1239 else fhTrackMatchedMCParticle[isolated]->Fill(energy, 7.5 );
6ae3345d 1240 }
b5dbb99b 1241
6ae3345d 1242 } // MC
b5dbb99b 1243
6ae3345d 1244 } // match window
b5dbb99b 1245
1246 }// TM histos fill
1247
1248 } // clusters array available
1249
1250}
1251
803d06a8 1252//______________________________________________________
1a31a9ab 1253TObjString * AliAnaParticleIsolation::GetAnalysisCuts()
6ae3345d 1254{
b0a31c92 1255 //Save parameters used for analysis
1a31a9ab 1256 TString parList ; //this will be list of parameters used for this analysis.
1257 const Int_t buffersize = 255;
1258 char onePar[buffersize] ;
1259
1260 snprintf(onePar, buffersize,"--- AliAnaParticleIsolation ---\n") ;
6ae3345d 1261 parList+=onePar ;
1a31a9ab 1262 snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
1263 parList+=onePar ;
4b6cb0f2 1264 snprintf(onePar, buffersize,"Isolation Cand Detector: %s\n",fIsoDetector.Data()) ;
1265 parList+=onePar ;
1a31a9ab 1266 snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
1267 parList+=onePar ;
1268 snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
6ae3345d 1269 parList+=onePar ;
09273901 1270 snprintf(onePar, buffersize,"fFillTMHisto=%d (Flag for track matching histograms) \n",fFillTMHisto) ;
1a31a9ab 1271 parList+=onePar ;
09273901 1272 snprintf(onePar, buffersize,"fFillSSHisto=%d (Flag for shower shape histograms) \n",fFillSSHisto) ;
1273 parList+=onePar ;
db6fb352 1274
b5dbb99b 1275 if(fMakeSeveralIC)
1276 {
1a31a9ab 1277 snprintf(onePar, buffersize,"fNCones =%d (Number of cone sizes) \n",fNCones) ;
1278 parList+=onePar ;
1279 snprintf(onePar, buffersize,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ;
1280 parList+=onePar ;
1281
b5dbb99b 1282 for(Int_t icone = 0; icone < fNCones ; icone++)
1283 {
1a31a9ab 1284 snprintf(onePar, buffersize,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ;
6ae3345d 1285 parList+=onePar ;
1a31a9ab 1286 }
b5dbb99b 1287 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1288 {
1a31a9ab 1289 snprintf(onePar, buffersize,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ;
6ae3345d 1290 parList+=onePar ;
1a31a9ab 1291 }
b5dbb99b 1292 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1293 {
1a31a9ab 1294 snprintf(onePar, buffersize,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ;
6ae3345d 1295 parList+=onePar ;
db6fb352 1296 }
1297 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
1298 {
1299 snprintf(onePar, buffersize,"fSumPtThresholds[%d]=%1.2f (isolation sum pt threshold) \n",ipt, fSumPtThresholds[ipt]) ;
6ae3345d 1300 parList+=onePar ;
1301 }
1a31a9ab 1302 }
1303
1304 //Get parameters set in base class.
1305 parList += GetBaseParametersList() ;
1306
1307 //Get parameters set in IC class.
1308 if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ;
1309
1310 return new TObjString(parList) ;
b0a31c92 1311
1a31a9ab 1312}
1313
803d06a8 1314//________________________________________________________
1a31a9ab 1315TList * AliAnaParticleIsolation::GetCreateOutputObjects()
6ae3345d 1316{
1317 // Create histograms to be saved in output file and
1a31a9ab 1318 // store them in outputContainer
6ae3345d 1319 TList * outputContainer = new TList() ;
1320 outputContainer->SetName("IsolatedParticleHistos") ;
1a31a9ab 1321
745913ae 1322 Int_t nptbins = GetHistogramRanges()->GetHistoPtBins();
1323 Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins();
1324 Int_t netabins = GetHistogramRanges()->GetHistoEtaBins();
1325 Float_t ptmax = GetHistogramRanges()->GetHistoPtMax();
1326 Float_t phimax = GetHistogramRanges()->GetHistoPhiMax();
1327 Float_t etamax = GetHistogramRanges()->GetHistoEtaMax();
1328 Float_t ptmin = GetHistogramRanges()->GetHistoPtMin();
1329 Float_t phimin = GetHistogramRanges()->GetHistoPhiMin();
6ae3345d 1330 Float_t etamin = GetHistogramRanges()->GetHistoEtaMin();
1331 Int_t ssbins = GetHistogramRanges()->GetHistoShowerShapeBins();
1332 Float_t ssmax = GetHistogramRanges()->GetHistoShowerShapeMax();
09273901 1333 Float_t ssmin = GetHistogramRanges()->GetHistoShowerShapeMin();
6ae3345d 1334 Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins();
1335 Float_t timemax = GetHistogramRanges()->GetHistoTimeMax();
1336 Float_t timemin = GetHistogramRanges()->GetHistoTimeMin();
1337
1338 Int_t nresetabins = GetHistogramRanges()->GetHistoTrackResidualEtaBins();
1339 Float_t resetamax = GetHistogramRanges()->GetHistoTrackResidualEtaMax();
09273901 1340 Float_t resetamin = GetHistogramRanges()->GetHistoTrackResidualEtaMin();
6ae3345d 1341 Int_t nresphibins = GetHistogramRanges()->GetHistoTrackResidualPhiBins();
1342 Float_t resphimax = GetHistogramRanges()->GetHistoTrackResidualPhiMax();
1343 Float_t resphimin = GetHistogramRanges()->GetHistoTrackResidualPhiMin();
803d06a8 1344
6ae3345d 1345 Int_t ndedxbins = GetHistogramRanges()->GetHistodEdxBins();
1346 Float_t dedxmax = GetHistogramRanges()->GetHistodEdxMax();
31ae6d59 1347 Float_t dedxmin = GetHistogramRanges()->GetHistodEdxMin();
6ae3345d 1348 Int_t nPoverEbins = GetHistogramRanges()->GetHistoPOverEBins();
1349 Float_t pOverEmax = GetHistogramRanges()->GetHistoPOverEMax();
31ae6d59 1350 Float_t pOverEmin = GetHistogramRanges()->GetHistoPOverEMin();
1351
98287a43 1352 Int_t nptsumbins = GetHistogramRanges()->GetHistoNPtSumBins();
1353 Float_t ptsummax = GetHistogramRanges()->GetHistoPtSumMax();
1354 Float_t ptsummin = GetHistogramRanges()->GetHistoPtSumMin();
1355 Int_t nptinconebins = GetHistogramRanges()->GetHistoNPtInConeBins();
1356 Float_t ptinconemax = GetHistogramRanges()->GetHistoPtInConeMax();
1357 Float_t ptinconemin = GetHistogramRanges()->GetHistoPtInConeMin();
1a31a9ab 1358
7726e3a3 1359 //Float_t ptthre = GetIsolationCut()->GetPtThreshold();
1360 //Float_t ptsumthre = GetIsolationCut()->GetSumPtThreshold();
1361 //Float_t ptfrac = GetIsolationCut()->GetPtFraction();
1362 Float_t r = GetIsolationCut()->GetConeSize();
1363 Int_t method = GetIsolationCut()->GetICMethod() ;
1364 Int_t particle = GetIsolationCut()->GetParticleTypeInCone() ;
1365
1366 TString sThreshold = "";
124bffb3 1367 if ( method == AliIsolationCut::kSumPtIC )
1368 {
1369 sThreshold = Form(", %2.2f < #Sigma #it{p}_{T}^{in cone} < %2.2f GeV/#it{c}",
1370 GetIsolationCut()->GetSumPtThreshold(), GetIsolationCut()->GetSumPtThresholdMax());
1371 if(GetIsolationCut()->GetSumPtThresholdMax() > 200)
1372 sThreshold = Form(", #Sigma #it{p}_{T}^{in cone} = %2.2f GeV/#it{c}",
1373 GetIsolationCut()->GetSumPtThreshold());
1374 }
1375 else if ( method == AliIsolationCut::kPtThresIC)
1376 {
1377 sThreshold = Form(", %2.2f < #it{p}_{T}^{th} < %2.2f GeV/#it{c}",
1378 GetIsolationCut()->GetPtThreshold(),GetIsolationCut()->GetPtThresholdMax());
1379 if(GetIsolationCut()->GetSumPtThreshold() > 200)
1380 sThreshold = Form(", #it{p}_{T}^{th} = %2.2f GeV/#it{c}",
1381 GetIsolationCut()->GetPtThreshold());
1382 }
1383 else if ( method == AliIsolationCut::kPtFracIC)
1384 sThreshold = Form(", #Sigma #it{p}_{T}^{in cone}/#it{p}_{T}^{trig} = %2.2f" ,
1385 GetIsolationCut()->GetPtFraction());
6ae3345d 1386
7726e3a3 1387 TString sParticle = ", x^{0,#pm}";
1388 if ( particle == AliIsolationCut::kOnlyNeutral ) sParticle = ", x^{0}";
1389 else if ( particle == AliIsolationCut::kOnlyCharged ) sParticle = ", x^{#pm}";
1390
1391 TString parTitle = Form("#it{R} = %2.2f%s%s",GetIsolationCut()->GetConeSize(), sThreshold.Data(),sParticle.Data());
db6fb352 1392
17af6e24 1393 TString pileUpName[] = {"SPD","EMCAL","SPDOrEMCAL","SPDAndEMCAL","SPDAndNotEMCAL","EMCALAndNotSPD","NotSPDAndNotEMCAL"} ;
1394
124bffb3 1395 // MC histograms title and name
1396 TString mcPartType[] = { "#gamma", "#gamma_{prompt}", "#gamma_{fragmentation}",
6ae3345d 1397 "#pi^{0} (merged #gamma)","#gamma_{#pi decay}",
1398 "#gamma_{#eta decay}","#gamma_{other decay}",
1399 "e^{#pm}","hadrons?"} ;
124bffb3 1400
1401 TString mcPartName[] = { "Photon","PhotonPrompt","PhotonFrag",
6ae3345d 1402 "Pi0","Pi0Decay","EtaDecay","OtherDecay",
1403 "Electron","Hadron"} ;
124bffb3 1404
1405 // Primary MC histograms title and name
bf8a7dac 1406 TString pptype[] = { "#gamma", "#gamma_{#pi decay}","#gamma_{other decay}",
6ae3345d 1407 "#gamma_{prompt}","#gamma_{fragmentation}","#gamma_{ISR}"} ;
124bffb3 1408
bf8a7dac 1409 TString ppname[] = { "Photon","PhotonPi0Decay","PhotonOtherDecay",
6ae3345d 1410 "PhotonPrompt","PhotonFrag","PhotonISR"} ;
1411
be703b18 1412 // Not Isolated histograms, reference histograms
1413
1414 fhENoIso = new TH1F("hENoIso",
1415 Form("Number of not isolated leading particles vs #it{p}_{T}, %s",parTitle.Data()),
1416 nptbins,ptmin,ptmax);
1417 fhENoIso->SetYTitle("#it{counts}");
1418 fhENoIso->SetXTitle("E (GeV/#it{c})");
1419 outputContainer->Add(fhENoIso) ;
1420
1421 fhPtNoIso = new TH1F("hPtNoIso",
1422 Form("Number of not isolated leading particles vs #it{p}_{T}, %s",parTitle.Data()),
1423 nptbins,ptmin,ptmax);
1424 fhPtNoIso->SetYTitle("#it{counts}");
1425 fhPtNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1426 outputContainer->Add(fhPtNoIso) ;
1427
1428 fhEtaPhiNoIso = new TH2F("hEtaPhiNoIso",
1429 Form("Number of not isolated leading particles #eta vs #phi, %s",parTitle.Data()),
1430 netabins,etamin,etamax,nphibins,phimin,phimax);
1431 fhEtaPhiNoIso->SetXTitle("#eta");
1432 fhEtaPhiNoIso->SetYTitle("#phi");
1433 outputContainer->Add(fhEtaPhiNoIso) ;
6ae3345d 1434
be703b18 1435 if(IsDataMC())
1436 {
1437 // For histograms in arrays, index in the array, corresponding to any particle origin
1438
1439 for(Int_t imc = 0; imc < 9; imc++)
1440 {
1441
1442 fhPtNoIsoMC[imc] = new TH1F(Form("hPtNoIsoMC%s",mcPartName[imc].Data()),
1443 Form("#it{p}_{T} of NOT isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()),
1444 nptbins,ptmin,ptmax);
1445 fhPtNoIsoMC[imc]->SetYTitle("#it{counts}");
1446 fhPtNoIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1447 outputContainer->Add(fhPtNoIsoMC[imc]) ;
1448
1449 fhPtIsoMC[imc] = new TH1F(Form("hPtMC%s",mcPartName[imc].Data()),
1450 Form("#it{p}_{T} of isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()),
1451 nptbins,ptmin,ptmax);
1452 fhPtIsoMC[imc]->SetYTitle("#it{counts}");
1453 fhPtIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1454 outputContainer->Add(fhPtIsoMC[imc]) ;
1455
1456 fhPhiIsoMC[imc] = new TH2F(Form("hPhiMC%s",mcPartName[imc].Data()),
1457 Form("#phi vs #it{p}_{T} of isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()),
1458 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1459 fhPhiIsoMC[imc]->SetYTitle("#phi");
1460 fhPhiIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1461 outputContainer->Add(fhPhiIsoMC[imc]) ;
1462
1463 fhEtaIsoMC[imc] = new TH2F(Form("hEtaMC%s",mcPartName[imc].Data()),
1464 Form("#phi vs #it{p}_{T} of isolated %s, %s",mcPartType[imc].Data(),parTitle.Data()),
1465 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1466 fhEtaIsoMC[imc]->SetYTitle("#eta");
1467 fhEtaIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1468 outputContainer->Add(fhEtaIsoMC[imc]) ;
1469 }
1470 }
1471
1472 // Histograms for tagged candidates as decay
1473 if(fFillTaggedDecayHistograms)
1474 {
1475 fhPtDecayNoIso = new TH1F("hPtDecayNoIso",
1476 Form("Number of not isolated leading pi0 decay particles vs #it{p}_{T}, %s",parTitle.Data()),
1477 nptbins,ptmin,ptmax);
1478 fhPtDecayNoIso->SetYTitle("#it{counts}");
1479 fhPtDecayNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1480 outputContainer->Add(fhPtDecayNoIso) ;
1481
1482 fhEtaPhiDecayNoIso = new TH2F("hEtaPhiDecayNoIso",
1483 Form("Number of not isolated leading Pi0 decay particles #eta vs #phi, %s",parTitle.Data()),
1484 netabins,etamin,etamax,nphibins,phimin,phimax);
1485 fhEtaPhiDecayNoIso->SetXTitle("#eta");
1486 fhEtaPhiDecayNoIso->SetYTitle("#phi");
1487 outputContainer->Add(fhEtaPhiDecayNoIso) ;
1488
1489 if(!fMakeSeveralIC)
1490 {
1491 fhPtDecayIso = new TH1F("hPtDecayIso",
1492 Form("Number of isolated #pi^{0} decay particles vs #it{p}_{T}, %s",parTitle.Data()),
1493 nptbins,ptmin,ptmax);
1494 fhPtDecayIso->SetYTitle("#it{counts}");
1495 fhPtDecayIso->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1496 outputContainer->Add(fhPtDecayIso) ;
aa2e58e4 1497
be703b18 1498 fhEtaPhiDecayIso = new TH2F("hEtaPhiDecayIso",
1499 Form("Number of isolated Pi0 decay particles #eta vs #phi, %s",parTitle.Data()),
1500 netabins,etamin,etamax,nphibins,phimin,phimax);
1501 fhEtaPhiDecayIso->SetXTitle("#eta");
1502 fhEtaPhiDecayIso->SetYTitle("#phi");
1503 outputContainer->Add(fhEtaPhiDecayIso) ;
1504 }
aa2e58e4 1505
1506
1507 if(IsDataMC())
1508 {
1509 for(Int_t imc = 0; imc < 9; imc++)
1510 {
1511
1512 fhPtDecayNoIsoMC[imc] = new TH1F(Form("hPtDecayNoIsoMC%s",mcPartName[imc].Data()),
1513 Form("#it{p}_{T} of NOT isolated, decay tag, %s, %s",mcPartType[imc].Data(),parTitle.Data()),
1514 nptbins,ptmin,ptmax);
1515 fhPtDecayNoIsoMC[imc]->SetYTitle("#it{counts}");
1516 fhPtDecayNoIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1517 outputContainer->Add(fhPtDecayNoIsoMC[imc]) ;
1518
1519 if(!fMakeSeveralIC)
1520 {
1521 fhPtDecayIsoMC[imc] = new TH1F(Form("hPtDecayMC%s",mcPartName[imc].Data()),
1522 Form("#it{p}_{T} of isolated %s, decay tag, %s",mcPartType[imc].Data(),parTitle.Data()),
1523 nptbins,ptmin,ptmax);
1524 fhPtDecayIsoMC[imc]->SetYTitle("#it{counts}");
1525 fhPtDecayIsoMC[imc]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1526 outputContainer->Add(fhPtDecayIsoMC[imc]) ;
1527 }
1528 }// loop
1529 }// MC
1530 }// decay
be703b18 1531
b5dbb99b 1532 if(!fMakeSeveralIC)
1533 {
7726e3a3 1534 TString isoName [] = {"NoIso",""};
1535 TString isoTitle[] = {"Not isolated" ,"isolated"};
c8710850 1536
72433939 1537 fhEIso = new TH1F("hE",
7726e3a3 1538 Form("Number of isolated particles vs E, %s",parTitle.Data()),
72433939 1539 nptbins,ptmin,ptmax);
977564f5 1540 fhEIso->SetYTitle("d#it{N} / d#it{E}");
9a97f32f 1541 fhEIso->SetXTitle("#it{E} (GeV/#it{c})");
72433939 1542 outputContainer->Add(fhEIso) ;
1543
1544 fhPtIso = new TH1F("hPt",
7726e3a3 1545 Form("Number of isolated particles vs #it{p}_{T}, %s",parTitle.Data()),
72433939 1546 nptbins,ptmin,ptmax);
9a97f32f 1547 fhPtIso->SetYTitle("d#it{N} / #it{p}_{T}");
dc9c6e78 1548 fhPtIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
72433939 1549 outputContainer->Add(fhPtIso) ;
1550
124bffb3 1551 fhPhiIso = new TH2F("hPhi",
1552 Form("Number of isolated particles vs #phi, %s",parTitle.Data()),
1553 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1554 fhPhiIso->SetYTitle("#phi");
1555 fhPhiIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1556 outputContainer->Add(fhPhiIso) ;
1557
1558 fhEtaIso = new TH2F("hEta",
1559 Form("Number of isolated particles vs #eta, %s",parTitle.Data()),
1560 nptbins,ptmin,ptmax,netabins,etamin,etamax);
1561 fhEtaIso->SetYTitle("#eta");
1562 fhEtaIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1563 outputContainer->Add(fhEtaIso) ;
1564
1565 fhEtaPhiIso = new TH2F("hEtaPhiIso",
1566 Form("Number of isolated particles #eta vs #phi, %s",parTitle.Data()),
1567 netabins,etamin,etamax,nphibins,phimin,phimax);
1568 fhEtaPhiIso->SetXTitle("#eta");
1569 fhEtaPhiIso->SetYTitle("#phi");
1570 outputContainer->Add(fhEtaPhiIso) ;
1571
977564f5 1572 if(fFillHighMultHistograms)
1573 {
1574 fhPtCentralityIso = new TH2F("hPtCentrality",
1575 Form("centrality vs #it{p}_{T} for isolated particles, %s",parTitle.Data()),
1576 nptbins,ptmin,ptmax, 100,0,100);
1577 fhPtCentralityIso->SetYTitle("centrality");
1578 fhPtCentralityIso->SetXTitle("#it{p}_{T}(GeV/#it{c})");
1579 outputContainer->Add(fhPtCentralityIso) ;
1580
1581 fhPtEventPlaneIso = new TH2F("hPtEventPlane",
1582 Form("event plane angle vs #it{p}_{T} for isolated particles, %s",parTitle.Data()),
1583 nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1584 fhPtEventPlaneIso->SetYTitle("Event plane angle (rad)");
1585 fhPtEventPlaneIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1586 outputContainer->Add(fhPtEventPlaneIso) ;
1587 }
72433939 1588
977564f5 1589 if(fFillNLMHistograms)
1590 {
1591 fhPtNLocMaxIso = new TH2F("hPtNLocMax",
1592 Form("Number of isolated particles vs #it{p}_{T}, %s",parTitle.Data()),
1593 nptbins,ptmin,ptmax,10,0,10);
1594 fhPtNLocMaxIso->SetYTitle("#it{NLM}");
1595 fhPtNLocMaxIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
6ae3345d 1596
124bffb3 1597 fhPtNLocMaxNoIso = new TH2F("hPtNLocMaxNoIso",
1598 Form("Number of not isolated particles vs #it{p}_{T}, %s",parTitle.Data()),
1599 nptbins,ptmin,ptmax,10,0,10);
1600 fhPtNLocMaxNoIso->SetYTitle("#it{NLM}");
1601 fhPtNLocMaxNoIso->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1602 outputContainer->Add(fhPtNLocMaxNoIso) ;
977564f5 1603 }
72433939 1604
72433939 1605 fhConeSumPt = new TH2F("hConePtSum",
9a97f32f 1606 Form("Track and Cluster #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
72433939 1607 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
dc9c6e78 1608 fhConeSumPt->SetYTitle("#Sigma #it{p}_{T}");
9a97f32f 1609 fhConeSumPt->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
72433939 1610 outputContainer->Add(fhConeSumPt) ;
1611
1612 fhConeSumPtTrigEtaPhi = new TH2F("hConePtSumTrigEtaPhi",
6ae3345d 1613 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
1614 netabins,etamin,etamax,nphibins,phimin,phimax);
dc9c6e78 1615 fhConeSumPtTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
72433939 1616 fhConeSumPtTrigEtaPhi->SetXTitle("#eta_{trigger}");
1617 fhConeSumPtTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1618 outputContainer->Add(fhConeSumPtTrigEtaPhi) ;
1619
1620 fhPtInCone = new TH2F("hPtInCone",
9a97f32f 1621 Form("#it{p}_{T} of clusters and tracks in isolation cone for #it{R} = %2.2f",r),
72433939 1622 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 1623 fhPtInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 1624 fhPtInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
72433939 1625 outputContainer->Add(fhPtInCone) ;
1626
977564f5 1627 if(fFillHighMultHistograms)
1628 {
1629 fhPtInConeCent = new TH2F("hPtInConeCent",
1630 Form("#it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
1631 100,0,100,nptinconebins,ptinconemin,ptinconemax);
1632 fhPtInConeCent->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
1633 fhPtInConeCent->SetXTitle("centrality");
1634 outputContainer->Add(fhPtInConeCent) ;
1635 }
72433939 1636
1637 // Cluster only histograms
1638 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyCharged)
1639 {
1640 fhConeSumPtCluster = new TH2F("hConePtSumCluster",
9a97f32f 1641 Form("Cluster #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
72433939 1642 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
dc9c6e78 1643 fhConeSumPtCluster->SetYTitle("#Sigma #it{p}_{T}");
9a97f32f 1644 fhConeSumPtCluster->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
72433939 1645 outputContainer->Add(fhConeSumPtCluster) ;
1646
977564f5 1647 if(fFillCellHistograms)
1648 {
1649 fhConeSumPtCell = new TH2F("hConePtSumCell",
1650 Form("Cell #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
1651 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1652 fhConeSumPtCell->SetYTitle("#Sigma #it{p}_{T}");
1653 fhConeSumPtCell->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
1654 outputContainer->Add(fhConeSumPtCell) ;
1655 }
72433939 1656
977564f5 1657 if(fFillUEBandSubtractHistograms)
1658 {
1659 fhConeSumPtEtaBandUECluster = new TH2F("hConePtSumEtaBandUECluster",
1660 "#Sigma cluster #it{p}_{T} in UE Eta Band",
1661 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1662 fhConeSumPtEtaBandUECluster->SetYTitle("#Sigma #it{p}_{T}");
1663 fhConeSumPtEtaBandUECluster->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
1664 outputContainer->Add(fhConeSumPtEtaBandUECluster) ;
1665
1666 fhConeSumPtPhiBandUECluster = new TH2F("hConePtSumPhiBandUECluster",
1667 "#Sigma cluster #it{p}_{T} UE Phi Band",
1668 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1669 fhConeSumPtPhiBandUECluster->SetYTitle("#Sigma #it{p}_{T}");
1670 fhConeSumPtPhiBandUECluster->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
1671 outputContainer->Add(fhConeSumPtPhiBandUECluster) ;
1672
1673 fhConeSumPtEtaBandUEClusterTrigEtaPhi = new TH2F("hConePtSumEtaBandUEClusterTrigEtaPhi",
1674 "Trigger #eta vs #phi, #Sigma cluster #it{p}_{T} in UE Eta Band",
1675 netabins,etamin,etamax,nphibins,phimin,phimax);
1676 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1677 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1678 fhConeSumPtEtaBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1679 outputContainer->Add(fhConeSumPtEtaBandUEClusterTrigEtaPhi) ;
1680
1681 fhConeSumPtPhiBandUEClusterTrigEtaPhi = new TH2F("hConePtSumPhiBandUEClusterTrigEtaPhi",
1682 "Trigger #eta vs #phi, #Sigma cluster #it{p}_{T} UE Phi Band",
1683 netabins,etamin,etamax,nphibins,phimin,phimax);
1684 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1685 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1686 fhConeSumPtPhiBandUEClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1687 outputContainer->Add(fhConeSumPtPhiBandUEClusterTrigEtaPhi) ;
1688 if(fFillCellHistograms)
1689 {
1690
1691 fhConeSumPtEtaBandUECell = new TH2F("hConePtSumEtaBandUECell",
1692 "#Sigma cell #it{p}_{T} in UE Eta Band",
1693 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1694 fhConeSumPtEtaBandUECell->SetYTitle("#Sigma #it{p}_{T}");
1695 fhConeSumPtEtaBandUECell->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
1696 outputContainer->Add(fhConeSumPtEtaBandUECell) ;
1697
1698 fhConeSumPtPhiBandUECell = new TH2F("hConePtSumPhiBandUECell",
1699 "#Sigma cell #it{p}_{T} UE Phi Band",
1700 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
1701 fhConeSumPtPhiBandUECell->SetYTitle("#Sigma #it{p}_{T}");
1702 fhConeSumPtPhiBandUECell->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
1703 outputContainer->Add(fhConeSumPtPhiBandUECell) ;
1704
1705 fhConeSumPtEtaBandUECellTrigEtaPhi = new TH2F("hConePtSumEtaBandUECellTrigEtaPhi",
1706 "Trigger #eta vs #phi, #Sigma cell #it{p}_{T} in UE Eta Band",
1707 netabins,etamin,etamax,nphibins,phimin,phimax);
1708 fhConeSumPtEtaBandUECellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1709 fhConeSumPtEtaBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1710 fhConeSumPtEtaBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1711 outputContainer->Add(fhConeSumPtEtaBandUECellTrigEtaPhi) ;
1712
1713 fhConeSumPtPhiBandUECellTrigEtaPhi = new TH2F("hConePtSumPhiBandUECellTrigEtaPhi",
1714 "Trigger #eta vs #phi, #Sigma cell #it{p}_{T} UE Phi Band",
1715 netabins,etamin,etamax,nphibins,phimin,phimax);
1716 fhConeSumPtPhiBandUECellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1717 fhConeSumPtPhiBandUECellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1718 fhConeSumPtPhiBandUECellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1719 outputContainer->Add(fhConeSumPtPhiBandUECellTrigEtaPhi) ;
1720 }
124bffb3 1721
977564f5 1722 fhEtaBandCluster = new TH2F("hEtaBandCluster",
1723 Form("#eta vs #phi of clusters in #eta band isolation cone for #it{R} = %2.2f",r),
1724 netabins,-1,1,nphibins,0,TMath::TwoPi());
1725 fhEtaBandCluster->SetXTitle("#eta");
1726 fhEtaBandCluster->SetYTitle("#phi");
1727 outputContainer->Add(fhEtaBandCluster) ;
1728
1729 fhPhiBandCluster = new TH2F("hPhiBandCluster",
1730 Form("#eta vs #phi of clusters in #phi band isolation cone for #it{R} = %2.2f",r),
1731 netabins,-1,1,nphibins,0,TMath::TwoPi());
1732 fhPhiBandCluster->SetXTitle("#eta");
1733 fhPhiBandCluster->SetYTitle("#phi");
1734 outputContainer->Add(fhPhiBandCluster) ;
1735
1736 fhEtaPhiInConeCluster= new TH2F("hEtaPhiInConeCluster",
1737 Form("#eta vs #phi of clusters in cone for #it{R} = %2.2f",r),
1738 netabins,-1,1,nphibins,0,TMath::TwoPi());
1739 fhEtaPhiInConeCluster->SetXTitle("#eta");
1740 fhEtaPhiInConeCluster->SetYTitle("#phi");
1741 outputContainer->Add(fhEtaPhiInConeCluster) ;
1742
1743 fhEtaPhiCluster= new TH2F("hEtaPhiCluster",
1744 Form("#eta vs #phi of all clusters"),
1745 netabins,-1,1,nphibins,0,TMath::TwoPi());
1746 fhEtaPhiCluster->SetXTitle("#eta");
1747 fhEtaPhiCluster->SetYTitle("#phi");
1748 outputContainer->Add(fhEtaPhiCluster) ;
6ae3345d 1749
977564f5 1750 }
9b01dc66 1751
72433939 1752 fhPtClusterInCone = new TH2F("hPtClusterInCone",
9a97f32f 1753 Form("#it{p}_{T} of clusters in isolation cone for #it{R} = %2.2f",r),
72433939 1754 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 1755 fhPtClusterInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 1756 fhPtClusterInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
72433939 1757 outputContainer->Add(fhPtClusterInCone) ;
1758
977564f5 1759 if(fFillCellHistograms)
1760 {
1761 fhPtCellInCone = new TH2F("hPtCellInCone",
1762 Form("#it{p}_{T} of cells in isolation cone for #it{R} = %2.2f",r),
1763 nptbins,ptmin,ptmax,1000,0,50);
1764 fhPtCellInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
1765 fhPtCellInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1766 outputContainer->Add(fhPtCellInCone) ;
1767
1768 fhEtaBandCell = new TH2F("hEtaBandCell",
1769 Form("#col vs #row of cells in #eta band isolation cone for #it{R} = %2.2f",r),
1770 96,0,95,128,0,127);
1771 fhEtaBandCell->SetXTitle("#col");
1772 fhEtaBandCell->SetYTitle("#row");
1773 outputContainer->Add(fhEtaBandCell) ;
1774
1775 fhPhiBandCell = new TH2F("hPhiBandCell",
1776 Form("#col vs #row of cells in #phi band isolation cone for #it{R} = %2.2f",r),
1777 96,0,95,128,0,127);
1778 fhPhiBandCell->SetXTitle("#col");
1779 fhPhiBandCell->SetYTitle("#row");
1780 outputContainer->Add(fhPhiBandCell) ;
1781 }
72433939 1782
977564f5 1783 if(fFillUEBandSubtractHistograms)
1784 {
1785 fhConeSumPtEtaUESubCluster = new TH2F("hConeSumPtEtaUESubCluster",
1786 Form("Clusters #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
1787 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1788 fhConeSumPtEtaUESubCluster->SetYTitle("#Sigma #it{p}_{T}");
1789 fhConeSumPtEtaUESubCluster->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1790 outputContainer->Add(fhConeSumPtEtaUESubCluster) ;
1791
1792 fhConeSumPtPhiUESubCluster = new TH2F("hConeSumPtPhiUESubCluster",
1793 Form("Clusters #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
1794 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1795 fhConeSumPtPhiUESubCluster->SetYTitle("#Sigma #it{p}_{T}");
1796 fhConeSumPtPhiUESubCluster->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1797 outputContainer->Add(fhConeSumPtPhiUESubCluster) ;
1798
1799 fhConeSumPtEtaUESubClusterTrigEtaPhi = new TH2F("hConeSumPtEtaUESubClusterTrigEtaPhi",
1800 Form("Trigger #eta vs #phi, Clusters #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
1801 netabins,etamin,etamax,nphibins,phimin,phimax);
1802 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1803 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1804 fhConeSumPtEtaUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1805 outputContainer->Add(fhConeSumPtEtaUESubClusterTrigEtaPhi) ;
1806
1807 fhConeSumPtPhiUESubClusterTrigEtaPhi = new TH2F("hConeSumPtPhiUESubClusterTrigEtaPhi",
1808 Form("Trigger #eta vs #phi, Clusters #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
1809 netabins,etamin,etamax,nphibins,phimin,phimax);
1810 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1811 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetXTitle("#eta_{trigger}");
1812 fhConeSumPtPhiUESubClusterTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1813 outputContainer->Add(fhConeSumPtPhiUESubClusterTrigEtaPhi) ;
1814
1815 if(fFillCellHistograms)
1816 {
1817 fhConeSumPtEtaUESubCell = new TH2F("hConeSumPtEtaUESubCell",
1818 Form("Cells #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
1819 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1820 fhConeSumPtEtaUESubCell->SetYTitle("#Sigma #it{p}_{T}");
1821 fhConeSumPtEtaUESubCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1822 outputContainer->Add(fhConeSumPtEtaUESubCell) ;
1823
1824 fhConeSumPtPhiUESubCell = new TH2F("hConeSumPtPhiUESubCell",
1825 Form("Cells #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
1826 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
1827 fhConeSumPtPhiUESubCell->SetYTitle("#Sigma #it{p}_{T}");
1828 fhConeSumPtPhiUESubCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
1829 outputContainer->Add(fhConeSumPtPhiUESubCell) ;
1830
1831 fhConeSumPtEtaUESubCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubCellTrigEtaPhi",
1832 Form("Trigger #eta vs #phi, Cells #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
72433939 1833 netabins,etamin,etamax,nphibins,phimin,phimax);
977564f5 1834 fhConeSumPtEtaUESubCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1835 fhConeSumPtEtaUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1836 fhConeSumPtEtaUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1837 outputContainer->Add(fhConeSumPtEtaUESubCellTrigEtaPhi) ;
1838
1839 fhConeSumPtPhiUESubCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubCellTrigEtaPhi",
1840 Form("Trigger #eta vs #phi, Cells #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
72433939 1841 netabins,etamin,etamax,nphibins,phimin,phimax);
977564f5 1842 fhConeSumPtPhiUESubCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
1843 fhConeSumPtPhiUESubCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
1844 fhConeSumPtPhiUESubCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1845 outputContainer->Add(fhConeSumPtPhiUESubCellTrigEtaPhi) ;
1846 }
1847
1848 fhFractionClusterOutConeEta = new TH2F("hFractionClusterOutConeEta",
1849 Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #eta acceptance",r),
1850 nptbins,ptmin,ptmax,100,0,1);
1851 fhFractionClusterOutConeEta->SetYTitle("#it{fraction}");
1852 fhFractionClusterOutConeEta->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})");
1853 outputContainer->Add(fhFractionClusterOutConeEta) ;
1854
1855 fhFractionClusterOutConeEtaTrigEtaPhi = new TH2F("hFractionClusterOutConeEtaTrigEtaPhi",
1856 Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #eta acceptance, in trigger #eta-#phi ",r),
1857 netabins,etamin,etamax,nphibins,phimin,phimax);
1858 fhFractionClusterOutConeEtaTrigEtaPhi->SetZTitle("#it{fraction}");
1859 fhFractionClusterOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1860 fhFractionClusterOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1861 outputContainer->Add(fhFractionClusterOutConeEtaTrigEtaPhi) ;
1862
1863 fhFractionClusterOutConePhi = new TH2F("hFractionClusterOutConePhi",
1864 Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #phi acceptance",r),
1865 nptbins,ptmin,ptmax,100,0,1);
1866 fhFractionClusterOutConePhi->SetYTitle("#it{fraction}");
1867 fhFractionClusterOutConePhi->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})");
1868 outputContainer->Add(fhFractionClusterOutConePhi) ;
1869
1870 fhFractionClusterOutConePhiTrigEtaPhi = new TH2F("hFractionClusterOutConePhiTrigEtaPhi",
1871 Form("Fraction of the isolation cone #it{R} = %2.2f, out of clusters #phi acceptance, in trigger #eta-#phi ",r),
1872 netabins,etamin,etamax,nphibins,phimin,phimax);
1873 fhFractionClusterOutConePhiTrigEtaPhi->SetZTitle("#it{fraction}");
1874 fhFractionClusterOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1875 fhFractionClusterOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1876 outputContainer->Add(fhFractionClusterOutConePhiTrigEtaPhi) ;
1877
1878 fhConeSumPtSubvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCluster",
1879 Form("#Sigma #it{p}_{T} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
1880 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1881 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1882 fhConeSumPtSubvsConeSumPtTotPhiCluster->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})");
1883 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCluster);
1884
1885 fhConeSumPtSubNormvsConeSumPtTotPhiCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCluster",
1886 Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
1887 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1888 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1889 fhConeSumPtSubNormvsConeSumPtTotPhiCluster->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})");
1890 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCluster);
1891
1892 fhConeSumPtSubvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCluster",
1893 Form("#Sigma #it{p}_{T} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
1894 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1895 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1896 fhConeSumPtSubvsConeSumPtTotEtaCluster->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})");
1897 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCluster);
1898
1899 fhConeSumPtSubNormvsConeSumPtTotEtaCluster = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCluster",
1900 Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
1901 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1902 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1903 fhConeSumPtSubNormvsConeSumPtTotEtaCluster->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})");
1904 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCluster);
1905
1906 fhConeSumPtVSUEClusterEtaBand = new TH2F("hConeSumPtVSUEClusterEtaBand",
1907 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in eta band for cluster (before normalization), R=%2.2f",r),
1908 nptsumbins,ptsummin,ptsummax,2*nptsumbins,ptsummin,2*ptsummax);
1909 fhConeSumPtVSUEClusterEtaBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
1910 fhConeSumPtVSUEClusterEtaBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
1911 outputContainer->Add(fhConeSumPtVSUEClusterEtaBand);
1912
1913 fhConeSumPtVSUEClusterPhiBand = new TH2F("hConeSumPtVSUEClusterPhiBand",
1914 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in phi band for cluster (before normalization), R=%2.2f",r),
1915 nptsumbins,ptsummin,ptsummax,8*nptsumbins,ptsummin,8*ptsummax);
1916 fhConeSumPtVSUEClusterPhiBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
1917 fhConeSumPtVSUEClusterPhiBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
1918 outputContainer->Add(fhConeSumPtVSUEClusterPhiBand);
6ae3345d 1919
977564f5 1920 if(fFillCellHistograms)
1921 {
1922 fhFractionCellOutConeEta = new TH2F("hFractionCellOutConeEta",
1923 Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #eta acceptance",r),
1924 nptbins,ptmin,ptmax,100,0,1);
1925 fhFractionCellOutConeEta->SetYTitle("#it{fraction}");
1926 fhFractionCellOutConeEta->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})");
1927 outputContainer->Add(fhFractionCellOutConeEta) ;
1928
1929 fhFractionCellOutConeEtaTrigEtaPhi = new TH2F("hFractionCellOutConeEtaTrigEtaPhi",
1930 Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #eta acceptance, in trigger #eta-#phi ",r),
1931 netabins,etamin,etamax,nphibins,phimin,phimax);
1932 fhFractionCellOutConeEtaTrigEtaPhi->SetZTitle("#it{fraction}");
1933 fhFractionCellOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
1934 fhFractionCellOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1935 outputContainer->Add(fhFractionCellOutConeEtaTrigEtaPhi) ;
1936
1937 fhFractionCellOutConePhi = new TH2F("hFractionCellOutConePhi",
1938 Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #phi acceptance",r),
1939 nptbins,ptmin,ptmax,100,0,1);
1940 fhFractionCellOutConePhi->SetYTitle("#it{fraction}");
1941 fhFractionCellOutConePhi->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})");
1942 outputContainer->Add(fhFractionCellOutConePhi) ;
1943
1944 fhFractionCellOutConePhiTrigEtaPhi = new TH2F("hFractionCellOutConePhiTrigEtaPhi",
1945 Form("Fraction of the isolation cone #it{R} = %2.2f, out of cells #phi acceptance, in trigger #eta-#phi ",r),
1946 netabins,etamin,etamax,nphibins,phimin,phimax);
1947 fhFractionCellOutConePhiTrigEtaPhi->SetZTitle("#it{fraction}");
1948 fhFractionCellOutConePhiTrigEtaPhi->SetXTitle("#eta_{trigger}");
1949 fhFractionCellOutConePhiTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
1950 outputContainer->Add(fhFractionCellOutConePhiTrigEtaPhi) ;
1951
1952
1953 fhConeSumPtSubvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubvsConeSumPtTotPhiCell",
1954 Form("#Sigma #it{p}_{T} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
b5d10017 1955 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
977564f5 1956 fhConeSumPtSubvsConeSumPtTotPhiCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1957 fhConeSumPtSubvsConeSumPtTotPhiCell->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})");
1958 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiCell);
1959
1960 fhConeSumPtSubNormvsConeSumPtTotPhiCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiCell",
1961 Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
1962 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1963 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1964 fhConeSumPtSubNormvsConeSumPtTotPhiCell->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})");
1965 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiCell);
1966
1967 fhConeSumPtSubvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubvsConeSumPtTotEtaCell",
1968 Form("#Sigma #it{p}_{T} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
b5d10017 1969 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
977564f5 1970 fhConeSumPtSubvsConeSumPtTotEtaCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1971 fhConeSumPtSubvsConeSumPtTotEtaCell->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})");
1972 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaCell);
1973
1974 fhConeSumPtSubNormvsConeSumPtTotEtaCell = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaCell",
1975 Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
1976 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
1977 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
1978 fhConeSumPtSubNormvsConeSumPtTotEtaCell->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})");
1979 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaCell);
1980 }
1981 }
72433939 1982 }
1983
1984 // Track only histograms
1985 if(GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
1986 {
1987 fhConeSumPtTrack = new TH2F("hConePtSumTrack",
9a97f32f 1988 Form("Track #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
72433939 1989 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
dc9c6e78 1990 fhConeSumPtTrack->SetYTitle("#Sigma #it{p}_{T}");
9a97f32f 1991 fhConeSumPtTrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
72433939 1992 outputContainer->Add(fhConeSumPtTrack) ;
1993
72433939 1994 fhPtTrackInCone = new TH2F("hPtTrackInCone",
9a97f32f 1995 Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f",r),
72433939 1996 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 1997 fhPtTrackInCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 1998 fhPtTrackInCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
72433939 1999 outputContainer->Add(fhPtTrackInCone) ;
6ae3345d 2000
72433939 2001
977564f5 2002 if(fFillUEBandSubtractHistograms)
2003 {
2004 fhConeSumPtEtaBandUETrack = new TH2F("hConePtSumEtaBandUETrack",
2005 "#Sigma track #it{p}_{T} in UE Eta Band",
2006 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2007 fhConeSumPtEtaBandUETrack->SetYTitle("#Sigma #it{p}_{T}");
2008 fhConeSumPtEtaBandUETrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
2009 outputContainer->Add(fhConeSumPtEtaBandUETrack) ;
2010
2011 fhConeSumPtPhiBandUETrack = new TH2F("hConePtSumPhiBandUETrack",
2012 "#Sigma track #it{p}_{T} in UE Phi Band",
2013 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax*8);
2014 fhConeSumPtPhiBandUETrack->SetYTitle("#Sigma #it{p}_{T}");
2015 fhConeSumPtPhiBandUETrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
2016 outputContainer->Add(fhConeSumPtPhiBandUETrack) ;
2017
2018
2019 fhConeSumPtEtaBandUETrackTrigEtaPhi = new TH2F("hConePtSumEtaBandUETrackTrigEtaPhi",
2020 "Trigger #eta vs #phi, #Sigma track #it{p}_{T} in UE Eta Band",
2021 netabins,etamin,etamax,nphibins,phimin,phimax);
2022 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2023 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2024 fhConeSumPtEtaBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2025 outputContainer->Add(fhConeSumPtEtaBandUETrackTrigEtaPhi) ;
2026
2027 fhConeSumPtPhiBandUETrackTrigEtaPhi = new TH2F("hConePtSumPhiBandUETrackTrigEtaPhi",
2028 "Trigger #eta vs #phi, #Sigma track #it{p}_{T} in UE Phi Band",
2029 netabins,etamin,etamax,nphibins,phimin,phimax);
2030 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2031 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2032 fhConeSumPtPhiBandUETrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2033 outputContainer->Add(fhConeSumPtPhiBandUETrackTrigEtaPhi) ;
2034
2035 fhEtaBandTrack = new TH2F("hEtaBandTrack",
2036 Form("#eta vs #phi of tracks in #eta band isolation cone for #it{R} = %2.2f",r),
2037 netabins,-1,1,nphibins,0,TMath::TwoPi());
2038 fhEtaBandTrack->SetXTitle("#eta");
2039 fhEtaBandTrack->SetYTitle("#phi");
2040 outputContainer->Add(fhEtaBandTrack) ;
2041
2042 fhPhiBandTrack = new TH2F("hPhiBandTrack",
2043 Form("#eta vs #phi of tracks in #phi band isolation cone for #it{R} = %2.2f",r),
2044 netabins,-1,1,nphibins,0,TMath::TwoPi());
2045 fhPhiBandTrack->SetXTitle("#eta");
2046 fhPhiBandTrack->SetYTitle("#phi");
2047 outputContainer->Add(fhPhiBandTrack) ;
2048
2049 fhConeSumPtEtaUESubTrack = new TH2F("hConeSumPtEtaUESubTrack",
2050 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
2051 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2052 fhConeSumPtEtaUESubTrack->SetYTitle("#Sigma #it{p}_{T}");
2053 fhConeSumPtEtaUESubTrack->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2054 outputContainer->Add(fhConeSumPtEtaUESubTrack) ;
2055
2056 fhConeSumPtPhiUESubTrack = new TH2F("hConeSumPtPhiUESubTrack",
2057 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
2058 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2059 fhConeSumPtPhiUESubTrack->SetYTitle("#Sigma #it{p}_{T}");
2060 fhConeSumPtPhiUESubTrack->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2061 outputContainer->Add(fhConeSumPtPhiUESubTrack) ;
2062
2063 fhConeSumPtEtaUESubTrackTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackTrigEtaPhi",
2064 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
2065 netabins,etamin,etamax,nphibins,phimin,phimax);
2066 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2067 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2068 fhConeSumPtEtaUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2069 outputContainer->Add(fhConeSumPtEtaUESubTrackTrigEtaPhi) ;
2070
2071 fhConeSumPtPhiUESubTrackTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackTrigEtaPhi",
2072 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
2073 netabins,etamin,etamax,nphibins,phimin,phimax);
2074 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2075 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2076 fhConeSumPtPhiUESubTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2077 outputContainer->Add(fhConeSumPtPhiUESubTrackTrigEtaPhi) ;
2078
2079 fhFractionTrackOutConeEta = new TH2F("hFractionTrackOutConeEta",
2080 Form("Fraction of the isolation cone #it{R} = %2.2f, out of tracks #eta acceptance",r),
2081 nptbins,ptmin,ptmax,100,0,1);
2082 fhFractionTrackOutConeEta->SetYTitle("#it{fraction}");
2083 fhFractionTrackOutConeEta->SetXTitle("#it{p}_{T,trigger} (GeV/#it{c})");
2084 outputContainer->Add(fhFractionTrackOutConeEta) ;
2085
2086 fhFractionTrackOutConeEtaTrigEtaPhi = new TH2F("hFractionTrackOutConeEtaTrigEtaPhi",
2087 Form("Fraction of the isolation cone #it{R} = %2.2f, out of tracks #eta acceptance, in trigger #eta-#phi ",r),
2088 netabins,etamin,etamax,nphibins,phimin,phimax);
2089 fhFractionTrackOutConeEtaTrigEtaPhi->SetZTitle("#it{fraction}");
2090 fhFractionTrackOutConeEtaTrigEtaPhi->SetXTitle("#eta_{trigger}");
2091 fhFractionTrackOutConeEtaTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2092 outputContainer->Add(fhFractionTrackOutConeEtaTrigEtaPhi) ;
2093
2094 fhConeSumPtSubvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubvsConeSumPtTotPhiTrack",
2095 Form("#Sigma #it{p}_{T} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
2096 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2097 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
2098 fhConeSumPtSubvsConeSumPtTotPhiTrack->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})");
2099 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotPhiTrack);
2100
2101 fhConeSumPtSubNormvsConeSumPtTotPhiTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotPhiTrack",
2102 Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #phi band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
2103 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2104 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
2105 fhConeSumPtSubNormvsConeSumPtTotPhiTrack->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})");
2106 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotPhiTrack);
2107
2108 fhConeSumPtSubvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubvsConeSumPtTotEtaTrack",
2109 Form("#Sigma #it{p}_{T} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
2110 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2111 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
2112 fhConeSumPtSubvsConeSumPtTotEtaTrack->SetYTitle("#Sigma #it{p}_{T, sub} (GeV/#it{c})");
2113 outputContainer->Add(fhConeSumPtSubvsConeSumPtTotEtaTrack);
2114
2115 fhConeSumPtSubNormvsConeSumPtTotEtaTrack = new TH2F("hConeSumPtSubNormvsConeSumPtTotEtaTrack",
2116 Form("#Sigma #it{p}_{T, norm} in cone after bkg sub from #eta band vs #Sigma #it{p}_{T} in cone before bkg sub, R=%2.2f",r),
2117 nptsumbins,ptsummin,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2118 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetXTitle("#Sigma #it{p}_{T, tot} (GeV/#it{c})");
2119 fhConeSumPtSubNormvsConeSumPtTotEtaTrack->SetYTitle("#Sigma #it{p}_{T, sub norm} (GeV/#it{c})");
2120 outputContainer->Add(fhConeSumPtSubNormvsConeSumPtTotEtaTrack);
2121
2122
2123 // UE in perpendicular cone
2124 fhPerpConeSumPt = new TH2F("hPerpConePtSum",
2125 Form("#Sigma #it{p}_{T} in isolation cone at #pm 45 degree phi from trigger particle, #it{R} = %2.2f",r),
2126 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2127 fhPerpConeSumPt->SetYTitle("#Sigma #it{p}_{T}");
2128 fhPerpConeSumPt->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2129 outputContainer->Add(fhPerpConeSumPt) ;
2130
2131 fhPtInPerpCone = new TH2F("hPtInPerpCone",
2132 Form("#it{p}_{T} in isolation cone at #pm 45 degree phi from trigger particle, #it{R} = %2.2f",r),
2133 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
2134 fhPtInPerpCone->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
2135 fhPtInPerpCone->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2136 outputContainer->Add(fhPtInPerpCone) ;
2137
2138 fhEtaPhiTrack= new TH2F("hEtaPhiTrack",
2139 Form("#eta vs #phi of all Tracks"),
2140 netabins,-1,1,nphibins,0,TMath::TwoPi());
2141 fhEtaPhiTrack->SetXTitle("#eta");
2142 fhEtaPhiTrack->SetYTitle("#phi");
2143 outputContainer->Add(fhEtaPhiTrack) ;
2144
2145 fhEtaPhiInConeTrack= new TH2F("hEtaPhiInConeTrack",
2146 Form("#eta vs #phi of Tracks in cone for #it{R} = %2.2f",r),
2147 netabins,-1,1,nphibins,0,TMath::TwoPi());
2148 fhEtaPhiInConeTrack->SetXTitle("#eta");
2149 fhEtaPhiInConeTrack->SetYTitle("#phi");
2150 outputContainer->Add(fhEtaPhiInConeTrack) ;
2151
2152 fhConeSumPtVSUETracksEtaBand = new TH2F("hConeSumPtVSUETracksEtaBand",
2153 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in eta band for tracks (before normalization), R=%2.2f",r),
2154 nptsumbins,ptsummin,ptsummax,2*nptsumbins,ptsummin,2*ptsummax);
2155 fhConeSumPtVSUETracksEtaBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
2156 fhConeSumPtVSUETracksEtaBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
2157 outputContainer->Add(fhConeSumPtVSUETracksEtaBand);
2158
2159 fhConeSumPtVSUETracksPhiBand = new TH2F("hConeSumPtVSUETracksPhiBand",
2160 Form("#Sigma #it{p}_{T} in cone versus #Sigma #it{p}_{T} in phi band for tracks (before normalization), R=%2.2f",r),
2161 nptsumbins,ptsummin,ptsummax,8*nptsumbins,ptsummin,8*ptsummax);
2162 fhConeSumPtVSUETracksPhiBand->SetXTitle("#Sigma #it{p}_{T} cone (GeV/#it{c})");
2163 fhConeSumPtVSUETracksPhiBand->SetYTitle("#Sigma #it{p}_{T} UE (GeV/#it{c})");
2164 outputContainer->Add(fhConeSumPtVSUETracksPhiBand);
2165 }
72433939 2166 }
2167
977564f5 2168 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged )
72433939 2169 {
72433939 2170 fhConeSumPtClustervsTrack = new TH2F("hConePtSumClustervsTrack",
9a97f32f 2171 Form("Track vs Cluster #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
72433939 2172 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
dc9c6e78 2173 fhConeSumPtClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2174 fhConeSumPtClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
72433939 2175 outputContainer->Add(fhConeSumPtClustervsTrack) ;
2176
977564f5 2177 if(fFillCellHistograms)
2178 {
2179 fhConeSumPtCellvsTrack = new TH2F("hConePtSumCellvsTrack",
2180 Form("Track vs cell #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
2181 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2182 fhConeSumPtCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2183 fhConeSumPtCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2184 outputContainer->Add(fhConeSumPtCellvsTrack) ;
2185
2186 fhConeSumPtCellTrack = new TH2F("hConePtSumCellTrack",
2187 Form("Track and Cell #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
2188 nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2189 fhConeSumPtCellTrack->SetYTitle("#Sigma #it{p}_{T}");
2190 fhConeSumPtCellTrack->SetXTitle("#it{p}_{T, trigger} (GeV/#it{c})");
2191 outputContainer->Add(fhConeSumPtCellTrack) ;
2192
2193 fhConeSumPtCellTrackTrigEtaPhi = new TH2F("hConePtSumCellTrackTrigEtaPhi",
2194 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",r),
2195 netabins,etamin,etamax,nphibins,phimin,phimax);
2196 fhConeSumPtCellTrackTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2197 fhConeSumPtCellTrackTrigEtaPhi->SetXTitle("#eta_{trigger}");
2198 fhConeSumPtCellTrackTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2199 outputContainer->Add(fhConeSumPtCellTrackTrigEtaPhi) ;
2200
2201 }
9b01dc66 2202
977564f5 2203 if(fFillUEBandSubtractHistograms)
2204 {
2205 fhConeSumPtEtaUESub = new TH2F("hConeSumPtEtaUESub",
2206 Form("#Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
2207 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2208 fhConeSumPtEtaUESub->SetYTitle("#Sigma #it{p}_{T}");
2209 fhConeSumPtEtaUESub->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2210 outputContainer->Add(fhConeSumPtEtaUESub) ;
2211
2212 fhConeSumPtPhiUESub = new TH2F("hConeSumPtPhiUESub",
2213 Form("#Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
2214 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2215 fhConeSumPtPhiUESub->SetYTitle("#Sigma #it{p}_{T}");
2216 fhConeSumPtPhiUESub->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2217 outputContainer->Add(fhConeSumPtPhiUESub) ;
2218
2219 fhConeSumPtEtaUESubTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrigEtaPhi",
2220 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
2221 netabins,etamin,etamax,nphibins,phimin,phimax);
2222 fhConeSumPtEtaUESubTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2223 fhConeSumPtEtaUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
2224 fhConeSumPtEtaUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2225 outputContainer->Add(fhConeSumPtEtaUESubTrigEtaPhi) ;
2226
2227 fhConeSumPtPhiUESubTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrigEtaPhi",
2228 Form("Trigger #eta vs #phi, #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
2229 netabins,etamin,etamax,nphibins,phimin,phimax);
2230 fhConeSumPtPhiUESubTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2231 fhConeSumPtPhiUESubTrigEtaPhi->SetXTitle("#eta_{trigger}");
2232 fhConeSumPtPhiUESubTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2233 outputContainer->Add(fhConeSumPtPhiUESubTrigEtaPhi) ;
2234
2235 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2236 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub eta band in isolation cone for #it{R} = %2.2f",r),
2237 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2238 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2239 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2240 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2241
2242 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2243 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub phi band in isolation cone for #it{R} = %2.2f",r),
2244 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2245 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2246 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2247 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2248
2249 fhEtaBandClustervsTrack = new TH2F("hEtaBandClustervsTrack",
2250 Form("Track vs Cluster #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r),
9b01dc66 2251 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
977564f5 2252 fhEtaBandClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2253 fhEtaBandClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2254 outputContainer->Add(fhEtaBandClustervsTrack) ;
2255
2256 fhPhiBandClustervsTrack = new TH2F("hPhiBandClustervsTrack",
2257 Form("Track vs Cluster #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r),
2258 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2259 fhPhiBandClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2260 fhPhiBandClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2261 outputContainer->Add(fhPhiBandClustervsTrack) ;
2262
2263 fhEtaBandNormClustervsTrack = new TH2F("hEtaBandNormClustervsTrack",
2264 Form("Track vs Cluster #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r),
2265 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2266 fhEtaBandNormClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2267 fhEtaBandNormClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2268 outputContainer->Add(fhEtaBandNormClustervsTrack) ;
2269
2270 fhPhiBandNormClustervsTrack = new TH2F("hPhiBandNormClustervsTrack",
2271 Form("Track vs Cluster #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r),
2272 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2273 fhPhiBandNormClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2274 fhPhiBandNormClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2275 outputContainer->Add(fhPhiBandNormClustervsTrack) ;
2276
2277 fhConeSumPtEtaUESubClustervsTrack = new TH2F("hConePtSumEtaUESubClustervsTrack",
2278 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub eta band in isolation cone for #it{R} = %2.2f",r),
2279 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2280 fhConeSumPtEtaUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2281 fhConeSumPtEtaUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2282 outputContainer->Add(fhConeSumPtEtaUESubClustervsTrack) ;
2283
2284 fhConeSumPtPhiUESubClustervsTrack = new TH2F("hConePhiUESubPtSumClustervsTrack",
2285 Form("Track vs Cluster #Sigma #it{p}_{T} UE sub phi band in isolation cone for #it{R} = %2.2f",r),
2286 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2287 fhConeSumPtPhiUESubClustervsTrack->SetXTitle("#Sigma #it{p}_{T} cluster");
2288 fhConeSumPtPhiUESubClustervsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2289 outputContainer->Add(fhConeSumPtPhiUESubClustervsTrack) ;
2290
2291 if(fFillCellHistograms)
2292 {
2293
2294 fhConeSumPtEtaUESubCellvsTrack = new TH2F("hConePtSumEtaUESubCellvsTrack",
2295 Form("Track vs Cell #Sigma #it{p}_{T} UE sub eta band in isolation cone for #it{R} = %2.2f",r),
2296 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2297 fhConeSumPtEtaUESubCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2298 fhConeSumPtEtaUESubCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2299 outputContainer->Add(fhConeSumPtEtaUESubCellvsTrack) ;
2300
2301 fhConeSumPtPhiUESubCellvsTrack = new TH2F("hConePhiUESubPtSumCellvsTrack",
2302 Form("Track vs Cell #Sigma #it{p}_{T} UE sub phi band in isolation cone for #it{R} = %2.2f",r),
2303 2*nptsumbins,-ptsummax,ptsummax,2*nptsumbins,-ptsummax,ptsummax);
2304 fhConeSumPtPhiUESubCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2305 fhConeSumPtPhiUESubCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2306 outputContainer->Add(fhConeSumPtPhiUESubCellvsTrack) ;
2307
2308 fhEtaBandCellvsTrack = new TH2F("hEtaBandCellvsTrack",
7726e3a3 2309 Form("Track vs Cell #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r),
9b01dc66 2310 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
977564f5 2311 fhEtaBandCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2312 fhEtaBandCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2313 outputContainer->Add(fhEtaBandCellvsTrack) ;
2314
2315 fhPhiBandCellvsTrack = new TH2F("hPhiBandCellvsTrack",
7726e3a3 2316 Form("Track vs Cell #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r),
977564f5 2317 nptsumbins,ptsummin,ptsummax*4,nptsumbins,ptsummin,ptsummax*8);
2318 fhPhiBandCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2319 fhPhiBandCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2320 outputContainer->Add(fhPhiBandCellvsTrack) ;
2321
2322 fhEtaBandNormCellvsTrack = new TH2F("hEtaBandNormCellvsTrack",
2323 Form("Track vs Cell #Sigma #it{p}_{T} in Eta band in isolation cone for #it{R} = %2.2f",r),
2324 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2325 fhEtaBandNormCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2326 fhEtaBandNormCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2327 outputContainer->Add(fhEtaBandNormCellvsTrack) ;
2328
2329 fhPhiBandNormCellvsTrack = new TH2F("hPhiBandNormCellvsTrack",
2330 Form("Track vs Cell #Sigma #it{p}_{T} in Phi band in isolation cone for #it{R} = %2.2f",r),
2331 nptsumbins,ptsummin,ptsummax,nptsumbins,ptsummin,ptsummax);
2332 fhPhiBandNormCellvsTrack->SetXTitle("#Sigma #it{p}_{T} cell");
2333 fhPhiBandNormCellvsTrack->SetYTitle("#Sigma #it{p}_{T} track");
2334 outputContainer->Add(fhPhiBandNormCellvsTrack) ;
2335
2336 fhConeSumPtEtaUESubTrackCell = new TH2F("hConeSumPtEtaUESubTrackCell",
2337 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
2338 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2339 fhConeSumPtEtaUESubTrackCell->SetYTitle("#Sigma #it{p}_{T}");
2340 fhConeSumPtEtaUESubTrackCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2341 outputContainer->Add(fhConeSumPtEtaUESubTrackCell) ;
2342
2343 fhConeSumPtPhiUESubTrackCell = new TH2F("hConeSumPtPhiUESubTrackCell",
2344 Form("Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
2345 nptbins,ptmin,ptmax,2*nptsumbins,-ptsummax,ptsummax);
2346 fhConeSumPtPhiUESubTrackCell->SetYTitle("#Sigma #it{p}_{T}");
2347 fhConeSumPtPhiUESubTrackCell->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2348 outputContainer->Add(fhConeSumPtPhiUESubTrackCell) ;
2349
2350 fhConeSumPtEtaUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtEtaUESubTrackCellTrigEtaPhi",
2351 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from eta band in the isolation cone for #it{R} = %2.2f",r),
2352 netabins,etamin,etamax,nphibins,phimin,phimax);
2353 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2354 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2355 fhConeSumPtEtaUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2356 outputContainer->Add(fhConeSumPtEtaUESubTrackCellTrigEtaPhi) ;
2357
2358 fhConeSumPtPhiUESubTrackCellTrigEtaPhi = new TH2F("hConeSumPtPhiUESubTrackCellTrigEtaPhi",
2359 Form("Trigger #eta vs #phi, Tracks #Sigma #it{p}_{T} after bkg subtraction from phi band in the isolation cone for #it{R} = %2.2f",r),
2360 netabins,etamin,etamax,nphibins,phimin,phimax);
2361 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetZTitle("#Sigma #it{p}_{T}");
2362 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetXTitle("#eta_{trigger}");
2363 fhConeSumPtPhiUESubTrackCellTrigEtaPhi->SetYTitle("#phi_{trigger} (rad)");
2364 outputContainer->Add(fhConeSumPtPhiUESubTrackCellTrigEtaPhi) ;
2365 }
2366 }
72433939 2367 }
977564f5 2368
ca134929 2369 for(Int_t iso = 0; iso < 2; iso++)
b5dbb99b 2370 {
ca134929 2371 if(fFillTMHisto)
31ae6d59 2372 {
ca134929 2373 fhTrackMatchedDEta[iso] = new TH2F
7726e3a3 2374 (Form("hTrackMatchedDEta%s",isoName[iso].Data()),
2375 Form("%s - d#eta of cluster-track vs cluster energy, %s",isoTitle[iso].Data(),parTitle.Data()),
72433939 2376 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
ca134929 2377 fhTrackMatchedDEta[iso]->SetYTitle("d#eta");
2378 fhTrackMatchedDEta[iso]->SetXTitle("E_{cluster} (GeV)");
2379
2380 fhTrackMatchedDPhi[iso] = new TH2F
7726e3a3 2381 (Form("hTrackMatchedDPhi%s",isoName[iso].Data()),
2382 Form("%s - d#phi of cluster-track vs cluster energy, %s",isoTitle[iso].Data(),parTitle.Data()),
72433939 2383 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
ca134929 2384 fhTrackMatchedDPhi[iso]->SetYTitle("d#phi (rad)");
2385 fhTrackMatchedDPhi[iso]->SetXTitle("E_{cluster} (GeV)");
2386
2387 fhTrackMatchedDEtaDPhi[iso] = new TH2F
7726e3a3 2388 (Form("hTrackMatchedDEtaDPhi%s",isoName[iso].Data()),
2389 Form("%s - d#eta vs d#phi of cluster-track, %s",isoTitle[iso].Data(),parTitle.Data()),
72433939 2390 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
ca134929 2391 fhTrackMatchedDEtaDPhi[iso]->SetYTitle("d#phi (rad)");
72433939 2392 fhTrackMatchedDEtaDPhi[iso]->SetXTitle("d#eta");
ca134929 2393
72433939 2394 outputContainer->Add(fhTrackMatchedDEta[iso]) ;
ca134929 2395 outputContainer->Add(fhTrackMatchedDPhi[iso]) ;
2396 outputContainer->Add(fhTrackMatchedDEtaDPhi[iso]) ;
31ae6d59 2397
ca134929 2398 fhdEdx[iso] = new TH2F
7726e3a3 2399 (Form("hdEdx%s",isoName[iso].Data()),
2400 Form("%s - Matched track <d#it{E}/d#it{x}> vs cluster #it{E}, %s",isoTitle[iso].Data(),parTitle.Data()),
72433939 2401 nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
dc9c6e78 2402 fhdEdx[iso]->SetXTitle("#it{E} (GeV)");
9a97f32f 2403 fhdEdx[iso]->SetYTitle("<d#it{E}/d#it{x}>");
72433939 2404 outputContainer->Add(fhdEdx[iso]);
31ae6d59 2405
ca134929 2406 fhEOverP[iso] = new TH2F
7726e3a3 2407 (Form("hEOverP%s",isoName[iso].Data()),
2408 Form("%s - Matched track #it{E}/#it{p} vs cluster, %s",isoTitle[iso].Data(),parTitle.Data()),
72433939 2409 nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
dc9c6e78 2410 fhEOverP[iso]->SetXTitle("#it{E} (GeV)");
9a97f32f 2411 fhEOverP[iso]->SetYTitle("#it{E}/#it{p}");
72433939 2412 outputContainer->Add(fhEOverP[iso]);
ca134929 2413
2414 if(IsDataMC())
2415 {
2416 fhTrackMatchedMCParticle[iso] = new TH2F
7726e3a3 2417 (Form("hTrackMatchedMCParticle%s",isoName[iso].Data()),
2418 Form("%s - Origin of particle vs cluster #it{E}, %s",isoTitle[iso].Data(),parTitle.Data()),
72433939 2419 nptbins,ptmin,ptmax,8,0,8);
dc9c6e78 2420 fhTrackMatchedMCParticle[iso]->SetXTitle("#it{E} (GeV)");
ca134929 2421 //fhTrackMatchedMCParticle[iso]->SetYTitle("Particle type");
2422
2423 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(1 ,"Photon");
2424 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(2 ,"Electron");
2425 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(3 ,"Meson Merged");
2426 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(4 ,"Rest");
2427 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(5 ,"Conv. Photon");
2428 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(6 ,"Conv. Electron");
2429 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(7 ,"Conv. Merged");
2430 fhTrackMatchedMCParticle[iso]->GetYaxis()->SetBinLabel(8 ,"Conv. Rest");
2431
72433939 2432 outputContainer->Add(fhTrackMatchedMCParticle[iso]);
ca134929 2433 }
31ae6d59 2434 }
b5dbb99b 2435
ca134929 2436 if(fFillSSHisto)
b5dbb99b 2437 {
ca134929 2438 fhELambda0[iso] = new TH2F
7726e3a3 2439 (Form("hELambda0%s",isoName[iso].Data()),
2440 Form("%s cluster : #it{E} vs #lambda_{0}, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
ca134929 2441 fhELambda0[iso]->SetYTitle("#lambda_{0}^{2}");
dc9c6e78 2442 fhELambda0[iso]->SetXTitle("#it{E} (GeV)");
72433939 2443 outputContainer->Add(fhELambda0[iso]) ;
6ae3345d 2444
124bffb3 2445 fhELambda1[iso] = new TH2F
2446 (Form("hELambda1%s",isoName[iso].Data()),
2447 Form("%s cluster: #it{E} vs #lambda_{1}, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2448 fhELambda1[iso]->SetYTitle("#lambda_{1}^{2}");
2449 fhELambda1[iso]->SetXTitle("#it{E} (GeV)");
2450 outputContainer->Add(fhELambda1[iso]) ;
6ae3345d 2451
32d244b0 2452 fhPtLambda0[iso] = new TH2F
7726e3a3 2453 (Form("hPtLambda0%s",isoName[iso].Data()),
2454 Form("%s cluster : #it{p}_{T} vs #lambda_{0}, %s",isoTitle[iso].Data(), parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
32d244b0 2455 fhPtLambda0[iso]->SetYTitle("#lambda_{0}^{2}");
dc9c6e78 2456 fhPtLambda0[iso]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
32d244b0 2457 outputContainer->Add(fhPtLambda0[iso]) ;
ca134929 2458
764ab1f4 2459 if(IsDataMC())
2460 {
124bffb3 2461 for(Int_t imc = 0; imc < 9; imc++)
2462 {
2463 fhPtLambda0MC[imc][iso] = new TH2F(Form("hPtLambda0%s_MC%s",isoName[iso].Data(),mcPartName[imc].Data()),
6ae3345d 2464 Form("%s cluster : #it{p}_{T} vs #lambda_{0}: %s %s",isoTitle[iso].Data(),mcPartType[imc].Data(),parTitle.Data()),
2465 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
124bffb3 2466 fhPtLambda0MC[imc][iso]->SetYTitle("#lambda_{0}^{2}");
2467 fhPtLambda0MC[imc][iso]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
2468 outputContainer->Add( fhPtLambda0MC[imc][iso]) ;
2469 }
6ae3345d 2470 }
ca134929 2471
4d1d8f00 2472 if(fIsoDetector=="EMCAL" && GetFirstSMCoveredByTRD() >= 0)
7726e3a3 2473 {
32d244b0 2474 fhPtLambda0TRD[iso] = new TH2F
7726e3a3 2475 (Form("hPtLambda0TRD%s",isoName[iso].Data()),
2476 Form("%s cluster: #it{p}_{T} vs #lambda_{0}, SM behind TRD, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
32d244b0 2477 fhPtLambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
dc9c6e78 2478 fhPtLambda0TRD[iso]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
32d244b0 2479 outputContainer->Add(fhPtLambda0TRD[iso]) ;
6ae3345d 2480
ca134929 2481 fhELambda0TRD[iso] = new TH2F
7726e3a3 2482 (Form("hELambda0TRD%s",isoName[iso].Data()),
2483 Form("%s cluster: #it{E} vs #lambda_{0}, SM behind TRD, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
ca134929 2484 fhELambda0TRD[iso]->SetYTitle("#lambda_{0}^{2}");
dc9c6e78 2485 fhELambda0TRD[iso]->SetXTitle("#it{E} (GeV)");
72433939 2486 outputContainer->Add(fhELambda0TRD[iso]) ;
ca134929 2487
2488 fhELambda1TRD[iso] = new TH2F
7726e3a3 2489 (Form("hELambda1TRD%s",isoName[iso].Data()),
2490 Form("%s cluster: #it{E} vs #lambda_{1}, SM behind TRD, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
ca134929 2491 fhELambda1TRD[iso]->SetYTitle("#lambda_{1}^{2}");
dc9c6e78 2492 fhELambda1TRD[iso]->SetXTitle("#it{E} (GeV)");
72433939 2493 outputContainer->Add(fhELambda1TRD[iso]) ;
ca134929 2494 }
2495
977564f5 2496 if(fFillNLMHistograms)
2497 {
2498 fhNLocMax[iso] = new TH2F
2499 (Form("hNLocMax%s",isoName[iso].Data()),
2500 Form("%s - Number of local maxima in cluster, %s",isoTitle[iso].Data(),parTitle.Data()),
2501 nptbins,ptmin,ptmax,10,0,10);
2502 fhNLocMax[iso]->SetYTitle("#it{NLM}");
2503 fhNLocMax[iso]->SetXTitle("#it{E} (GeV)");
2504 outputContainer->Add(fhNLocMax[iso]) ;
2505
2506 fhELambda0LocMax1[iso] = new TH2F
2507 (Form("hELambda0LocMax1%s",isoName[iso].Data()),
2508 Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{0}, #it{NLM}=1, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2509 fhELambda0LocMax1[iso]->SetYTitle("#lambda_{0}^{2}");
2510 fhELambda0LocMax1[iso]->SetXTitle("#it{E} (GeV)");
2511 outputContainer->Add(fhELambda0LocMax1[iso]) ;
2512
2513 fhELambda1LocMax1[iso] = new TH2F
2514 (Form("hELambda1LocMax1%s",isoName[iso].Data()),
2515 Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{1}, #it{NLM}=1, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2516 fhELambda1LocMax1[iso]->SetYTitle("#lambda_{1}^{2}");
2517 fhELambda1LocMax1[iso]->SetXTitle("#it{E} (GeV)");
2518 outputContainer->Add(fhELambda1LocMax1[iso]) ;
2519
2520 fhELambda0LocMax2[iso] = new TH2F
2521 (Form("hELambda0LocMax2%s",isoName[iso].Data()),
2522 Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{0}, #it{NLM}=2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2523 fhELambda0LocMax2[iso]->SetYTitle("#lambda_{0}^{2}");
2524 fhELambda0LocMax2[iso]->SetXTitle("#it{E} (GeV)");
2525 outputContainer->Add(fhELambda0LocMax2[iso]) ;
2526
2527 fhELambda1LocMax2[iso] = new TH2F
2528 (Form("hELambda1LocMax2%s",isoName[iso].Data()),
2529 Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{1}, #it{NLM}=2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2530 fhELambda1LocMax2[iso]->SetYTitle("#lambda_{1}^{2}");
2531 fhELambda1LocMax2[iso]->SetXTitle("#it{E} (GeV)");
2532 outputContainer->Add(fhELambda1LocMax2[iso]) ;
2533
2534 fhELambda0LocMaxN[iso] = new TH2F
2535 ( Form("hELambda0LocMaxN%s",isoName[iso].Data()),
2536 Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{0}, #it{NLM}>2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2537 fhELambda0LocMaxN[iso]->SetYTitle("#lambda_{0}^{2}");
2538 fhELambda0LocMaxN[iso]->SetXTitle("#it{E} (GeV)");
2539 outputContainer->Add(fhELambda0LocMaxN[iso]) ;
2540
2541 fhELambda1LocMaxN[iso] = new TH2F
2542 (Form("hELambda1LocMaxN%s",isoName[iso].Data()),
2543 Form("%s cluster (#eta) pairs: #it{E} vs #lambda_{1}, #it{NLM}>2, %s",isoTitle[iso].Data(),parTitle.Data()),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2544 fhELambda1LocMaxN[iso]->SetYTitle("#lambda_{1}^{2}");
2545 fhELambda1LocMaxN[iso]->SetXTitle("#it{E} (GeV)");
2546 outputContainer->Add(fhELambda1LocMaxN[iso]) ;
2547 } // NLM
2548 } // SS histo
ca134929 2549 } // control histograms for isolated and non isolated objects
764ab1f4 2550
fedea415 2551
6c80c1bf 2552 if(fFillPileUpHistograms)
2553 {
fedea415 2554 fhPtTrackInConeOtherBC = new TH2F("hPtTrackInConeOtherBC",
9a97f32f 2555 Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC!=0",r),
fedea415 2556 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 2557 fhPtTrackInConeOtherBC->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 2558 fhPtTrackInConeOtherBC->SetXTitle("#it{p}_{T} (GeV/#it{c})");
fedea415 2559 outputContainer->Add(fhPtTrackInConeOtherBC) ;
2560
2561 fhPtTrackInConeOtherBCPileUpSPD = new TH2F("hPtTrackInConeOtherBCPileUpSPD",
9a97f32f 2562 Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC!=0, pile-up from SPD",r),
72433939 2563 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 2564 fhPtTrackInConeOtherBCPileUpSPD->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 2565 fhPtTrackInConeOtherBCPileUpSPD->SetXTitle("#it{p}_{T} (GeV/#it{c})");
fedea415 2566 outputContainer->Add(fhPtTrackInConeOtherBCPileUpSPD) ;
72433939 2567
2a9171b5 2568 fhPtTrackInConeBC0 = new TH2F("hPtTrackInConeBC0",
9a97f32f 2569 Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC==0",r),
72433939 2570 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 2571 fhPtTrackInConeBC0->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 2572 fhPtTrackInConeBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2a9171b5 2573 outputContainer->Add(fhPtTrackInConeBC0) ;
2574
cc944149 2575 fhPtTrackInConeVtxBC0 = new TH2F("hPtTrackInConeVtxBC0",
9a97f32f 2576 Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC==0",r),
72433939 2577 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 2578 fhPtTrackInConeVtxBC0->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 2579 fhPtTrackInConeVtxBC0->SetXTitle("#it{p}_{T} (GeV/#it{c})");
cc944149 2580 outputContainer->Add(fhPtTrackInConeVtxBC0) ;
72433939 2581
cc944149 2582
2a9171b5 2583 fhPtTrackInConeBC0PileUpSPD = new TH2F("hPtTrackInConeBC0PileUpSPD",
9a97f32f 2584 Form("#it{p}_{T} of tracks in isolation cone for #it{R} = %2.2f, TOF from BC==0, pile-up from SPD",r),
72433939 2585 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 2586 fhPtTrackInConeBC0PileUpSPD->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 2587 fhPtTrackInConeBC0PileUpSPD->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2a9171b5 2588 outputContainer->Add(fhPtTrackInConeBC0PileUpSPD) ;
72433939 2589
fedea415 2590
17af6e24 2591 for (Int_t i = 0; i < 7 ; i++)
2592 {
2593 fhPtInConePileUp[i] = new TH2F(Form("hPtInConePileUp%s",pileUpName[i].Data()),
9a97f32f 2594 Form("#it{p}_{T} in isolation cone for #it{R} = %2.2f, from pile-up (%s)",r,pileUpName[i].Data()),
17af6e24 2595 nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
9a97f32f 2596 fhPtInConePileUp[i]->SetYTitle("#it{p}_{T in cone} (GeV/#it{c})");
dc9c6e78 2597 fhPtInConePileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
17af6e24 2598 outputContainer->Add(fhPtInConePileUp[i]) ;
2599 }
6c80c1bf 2600 }
2601
b5dbb99b 2602 if(IsDataMC())
2603 {
124bffb3 2604 // For histograms in arrays, index in the array, corresponding to any particle origin
6ae3345d 2605
bf8a7dac 2606 for(Int_t i = 0; i < 6; i++)
dc9c6e78 2607 {
2608 fhEPrimMC[i] = new TH1F(Form("hEPrim_MC%s",ppname[i].Data()),
7726e3a3 2609 Form("primary photon %s : #it{E}, %s",pptype[i].Data(),parTitle.Data()),
dc9c6e78 2610 nptbins,ptmin,ptmax);
2611 fhEPrimMC[i]->SetXTitle("#it{E} (GeV)");
2612 outputContainer->Add(fhEPrimMC[i]) ;
2613
2614 fhPtPrimMCiso[i] = new TH1F(Form("hPtPrim_MCiso%s",ppname[i].Data()),
7726e3a3 2615 Form("primary isolated photon %s : #it{p}_{T}, %s",pptype[i].Data(),parTitle.Data()),
dc9c6e78 2616 nptbins,ptmin,ptmax);
2617 fhPtPrimMCiso[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2618 outputContainer->Add(fhPtPrimMCiso[i]) ;
2619
2620 fhEtaPrimMC[i] = new TH2F(Form("hEtaPrim_MC%s",ppname[i].Data()),
7726e3a3 2621 Form("primary photon %s : #eta vs #it{p}_{T}, %s",pptype[i].Data(),parTitle.Data()),
dc9c6e78 2622 nptbins,ptmin,ptmax,200,-2,2);
2623 fhEtaPrimMC[i]->SetYTitle("#eta");
2624 fhEtaPrimMC[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2625 outputContainer->Add(fhEtaPrimMC[i]) ;
db4ffddf 2626
2627 fhPhiPrimMC[i] = new TH2F(Form("hPhiPrim_MC%s",ppname[i].Data()),
7726e3a3 2628 Form("primary photon %s : #phi vs #it{p}_{T}, %s",pptype[i].Data(),parTitle.Data()),
db4ffddf 2629 nptbins,ptmin,ptmax,200,0.,TMath::TwoPi());
2630 fhPhiPrimMC[i]->SetYTitle("#phi");
2631 fhPhiPrimMC[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2632 outputContainer->Add(fhPhiPrimMC[i]) ;
dc9c6e78 2633 }
1a31a9ab 2634
1a31a9ab 2635 }//Histos with MC
2636
2637 }
2638
b5dbb99b 2639 if(fMakeSeveralIC)
2640 {
1a31a9ab 2641 const Int_t buffersize = 255;
e4ef72be 2642 char name[buffersize];
2643 char title[buffersize];
2644 for(Int_t icone = 0; icone<fNCones; icone++)
6ae3345d 2645 {
44e48e82 2646 // sum pt in cone vs. pt leading
2647 snprintf(name, buffersize,"hSumPtLeadingPt_Cone_%d",icone);
9a97f32f 2648 snprintf(title, buffersize,"#Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]);
44e48e82 2649 fhSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
dc9c6e78 2650 fhSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}#it{p}_{T} (GeV/#it{c})");//#Sigma #it{p}_{T}
2651 fhSumPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
44e48e82 2652 outputContainer->Add(fhSumPtLeadingPt[icone]) ;
6ae3345d 2653
2654 // pt in cone vs. pt leading
44e48e82 2655 snprintf(name, buffersize,"hPtLeadingPt_Cone_%d",icone);
9a97f32f 2656 snprintf(title, buffersize,"#it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]);
6ae3345d 2657 fhPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
dc9c6e78 2658 fhPtLeadingPt[icone] ->SetYTitle("#it{p}_{T}^{cone} (GeV/#it{c})");
2659 fhPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
6ae3345d 2660 outputContainer->Add(fhPtLeadingPt[icone]) ;
2661
2662 // sum pt in cone vs. pt leading in the forward region (for background subtraction studies)
2663 snprintf(name, buffersize,"hPerpSumPtLeadingPt_Cone_%d",icone);
9a97f32f 2664 snprintf(title, buffersize,"#Sigma #it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]);
23130491 2665 fhPerpSumPtLeadingPt[icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
dc9c6e78 2666 fhPerpSumPtLeadingPt[icone] ->SetYTitle("#sum_{cone}#it{p}_{T} (GeV/#it{c})");//#Sigma #it{p}_{T}
2667 fhPerpSumPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
23130491 2668 outputContainer->Add(fhPerpSumPtLeadingPt[icone]) ;
44e48e82 2669
6ae3345d 2670 // pt in cone vs. pt leading in the forward region (for background subtraction studies)
2671 snprintf(name, buffersize,"hPerpPtLeadingPt_Cone_%d",icone);
9a97f32f 2672 snprintf(title, buffersize,"#it{p}_{T} in isolation cone for #it{R} = %2.2f",fConeSizes[icone]);
6ae3345d 2673 fhPerpPtLeadingPt[icone] = new TH2F(name, title, nptbins,ptmin,ptmax,nptinconebins,ptinconemin,ptinconemax);
dc9c6e78 2674 fhPerpPtLeadingPt[icone] ->SetYTitle("#it{p}_{T}^{cone} (GeV/#it{c})");
2675 fhPerpPtLeadingPt[icone] ->SetXTitle("#it{p}_{T}^{leading} (GeV/#it{c})");
6ae3345d 2676 outputContainer->Add(fhPerpPtLeadingPt[icone]) ;
2677
e4ef72be 2678 if(IsDataMC())
db6fb352 2679 {
124bffb3 2680 for(Int_t imc = 0; imc < 9; imc++)
2681 {
f5b702a0 2682 snprintf(name , buffersize,"hSumPtLeadingPt_MC%s_Cone_%d",mcPartName[imc].Data(),icone);
124bffb3 2683 snprintf(title, buffersize,"Candidate %s #it{p}_{T} vs cone #Sigma #it{p}_{T} for #it{R}=%2.2f",mcPartType[imc].Data(),fConeSizes[icone]);
f5b702a0 2684 fhSumPtLeadingPtMC[imc][icone] = new TH2F(name, title,nptbins,ptmin,ptmax,nptsumbins,ptsummin,ptsummax);
2685 fhSumPtLeadingPtMC[imc][icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2686 fhSumPtLeadingPtMC[imc][icone]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
2687 outputContainer->Add(fhSumPtLeadingPtMC[imc][icone]) ;
124bffb3 2688 }
e4ef72be 2689 }//Histos with MC
2690
2691 for(Int_t ipt = 0; ipt<fNPtThresFrac;ipt++)
124bffb3 2692 {
b0a31c92 2693 snprintf(name, buffersize,"hPtThres_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2694 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
b0a31c92 2695 fhPtThresIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
dc9c6e78 2696 fhPtThresIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
6ae3345d 2697 outputContainer->Add(fhPtThresIsolated[icone][ipt]) ;
b0a31c92 2698
2699 snprintf(name, buffersize,"hPtFrac_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2700 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
b0a31c92 2701 fhPtFracIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
dc9c6e78 2702 fhPtFracIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
6ae3345d 2703 outputContainer->Add(fhPtFracIsolated[icone][ipt]) ;
b0a31c92 2704
f5b702a0 2705 snprintf(name, buffersize,"hSumPt_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2706 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
f5b702a0 2707 fhSumPtIsolated[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2708 // fhSumPtIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2709 fhSumPtIsolated[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2710 outputContainer->Add(fhSumPtIsolated[icone][ipt]) ;
b0a31c92 2711
2712 snprintf(name, buffersize,"hPtSumDensity_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2713 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for density in #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
b0a31c92 2714 fhPtSumDensityIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
dc9c6e78 2715 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2716 fhPtSumDensityIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
b0a31c92 2717 outputContainer->Add(fhPtSumDensityIso[icone][ipt]) ;
2718
2719 snprintf(name, buffersize,"hPtFracPtSum_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2720 snprintf(title, buffersize,"Isolated candidate #it{p}_{T} distribution for PtFracPtSum in #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
b0a31c92 2721 fhPtFracPtSumIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
dc9c6e78 2722 //fhPtSumIsolated[icone][ipt]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2723 fhPtFracPtSumIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
b0a31c92 2724 outputContainer->Add(fhPtFracPtSumIso[icone][ipt]) ;
2725
b0a31c92 2726 // eta:phi
2727 snprintf(name, buffersize,"hEtaPhiPtThres_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2728 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
b0a31c92 2729 fhEtaPhiPtThresIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2730 fhEtaPhiPtThresIso[icone][ipt]->SetXTitle("#eta");
2731 fhEtaPhiPtThresIso[icone][ipt]->SetYTitle("#phi");
2732 outputContainer->Add(fhEtaPhiPtThresIso[icone][ipt]) ;
2733
2734 snprintf(name, buffersize,"hEtaPhiPtFrac_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2735 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
b0a31c92 2736 fhEtaPhiPtFracIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2737 fhEtaPhiPtFracIso[icone][ipt]->SetXTitle("#eta");
2738 fhEtaPhiPtFracIso[icone][ipt]->SetYTitle("#phi");
2739 outputContainer->Add(fhEtaPhiPtFracIso[icone][ipt]) ;
2740
2741 snprintf(name, buffersize,"hEtaPhiPtSum_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2742 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
b0a31c92 2743 fhEtaPhiPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2744 fhEtaPhiPtSumIso[icone][ipt]->SetXTitle("#eta");
2745 fhEtaPhiPtSumIso[icone][ipt]->SetYTitle("#phi");
2746 outputContainer->Add(fhEtaPhiPtSumIso[icone][ipt]) ;
2747
2748 snprintf(name, buffersize,"hEtaPhiSumDensity_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2749 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for density #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
b0a31c92 2750 fhEtaPhiSumDensityIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2751 fhEtaPhiSumDensityIso[icone][ipt]->SetXTitle("#eta");
2752 fhEtaPhiSumDensityIso[icone][ipt]->SetYTitle("#phi");
2753 outputContainer->Add(fhEtaPhiSumDensityIso[icone][ipt]) ;
2754
2755 snprintf(name, buffersize,"hEtaPhiFracPtSum_Cone_%d_Pt%d",icone,ipt);
9a97f32f 2756 snprintf(title, buffersize,"Isolated candidate #eta:#phi distribution for FracPtSum #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
b0a31c92 2757 fhEtaPhiFracPtSumIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2758 fhEtaPhiFracPtSumIso[icone][ipt]->SetXTitle("#eta");
2759 fhEtaPhiFracPtSumIso[icone][ipt]->SetYTitle("#phi");
2760 outputContainer->Add(fhEtaPhiFracPtSumIso[icone][ipt]) ;
2761
be703b18 2762 if(fFillTaggedDecayHistograms)
2763 {
2764 // pt decays isolated
2765 snprintf(name, buffersize,"hPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2766 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
2767 fhPtPtThresDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2768 fhPtPtThresDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2769 outputContainer->Add(fhPtPtThresDecayIso[icone][ipt]) ;
2770
2771 snprintf(name, buffersize,"hPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2772 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2773 fhPtPtFracDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2774 fhPtPtFracDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2775 outputContainer->Add(fhPtPtFracDecayIso[icone][ipt]) ;
2776
2777 snprintf(name, buffersize,"hPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2778 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2779 fhPtPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2780 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2781 fhPtPtSumDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2782 outputContainer->Add(fhPtPtSumDecayIso[icone][ipt]) ;
2783
2784 snprintf(name, buffersize,"hPtSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2785 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for density in #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2786 fhPtSumDensityDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2787 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2788 fhPtSumDensityDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2789 outputContainer->Add(fhPtSumDensityDecayIso[icone][ipt]) ;
2790
2791 snprintf(name, buffersize,"hPtFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2792 snprintf(title, buffersize,"Isolated decay candidate #it{p}_{T} distribution for PtFracPtSum in #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2793 fhPtFracPtSumDecayIso[icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);//,nptsumbins,ptsummin,ptsummax);
2794 // fhPtPtSumDecayIso[icone]->SetYTitle("#Sigma #it{p}_{T} (GeV/#it{c})");
2795 fhPtFracPtSumDecayIso[icone][ipt]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
2796 outputContainer->Add(fhPtFracPtSumDecayIso[icone][ipt]) ;
2797
2798 // eta:phi decays
2799 snprintf(name, buffersize,"hEtaPhiPtThres_Decay_Cone_%d_Pt%d",icone,ipt);
2800 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{th} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtThresholds[ipt]);
2801 fhEtaPhiPtThresDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2802 fhEtaPhiPtThresDecayIso[icone][ipt]->SetXTitle("#eta");
2803 fhEtaPhiPtThresDecayIso[icone][ipt]->SetYTitle("#phi");
2804 outputContainer->Add(fhEtaPhiPtThresDecayIso[icone][ipt]) ;
2805
2806 snprintf(name, buffersize,"hEtaPhiPtFrac_Decay_Cone_%d_Pt%d",icone,ipt);
2807 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2808 fhEtaPhiPtFracDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2809 fhEtaPhiPtFracDecayIso[icone][ipt]->SetXTitle("#eta");
2810 fhEtaPhiPtFracDecayIso[icone][ipt]->SetYTitle("#phi");
2811 outputContainer->Add(fhEtaPhiPtFracDecayIso[icone][ipt]) ;
2812
2813
2814 snprintf(name, buffersize,"hEtaPhiPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2815 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2816 fhEtaPhiPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2817 fhEtaPhiPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2818 fhEtaPhiPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2819 outputContainer->Add(fhEtaPhiPtSumDecayIso[icone][ipt]) ;
2820
2821 snprintf(name, buffersize,"hEtaPhiSumDensity_Decay_Cone_%d_Pt%d",icone,ipt);
2822 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for density #it{R} = %2.2f and #it{p}_{T}^{sum} = %2.2f GeV/#it{c}",fConeSizes[icone],fSumPtThresholds[ipt]);
2823 fhEtaPhiSumDensityDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2824 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetXTitle("#eta");
2825 fhEtaPhiSumDensityDecayIso[icone][ipt]->SetYTitle("#phi");
2826 outputContainer->Add(fhEtaPhiSumDensityDecayIso[icone][ipt]) ;
2827
2828 snprintf(name, buffersize,"hEtaPhiFracPtSum_Decay_Cone_%d_Pt%d",icone,ipt);
2829 snprintf(title, buffersize,"Isolated decay candidate #eta:#phi distribution for FracPtSum #it{R} = %2.2f and #it{p}_{T}^{fr} = %2.2f GeV/#it{c}",fConeSizes[icone],fPtFractions[ipt]);
2830 fhEtaPhiFracPtSumDecayIso[icone][ipt] = new TH2F(name, title,netabins,etamin,etamax,nphibins,phimin,phimax);
2831 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetXTitle("#eta");
2832 fhEtaPhiFracPtSumDecayIso[icone][ipt]->SetYTitle("#phi");
2833 outputContainer->Add(fhEtaPhiFracPtSumDecayIso[icone][ipt]) ;
6ae3345d 2834
be703b18 2835 }
b0a31c92 2836
2837 if(IsDataMC())
2838 {
124bffb3 2839 for(Int_t imc = 0; imc < 9; imc++)
2840 {
2841 snprintf(name , buffersize,"hPtThreshMC%s_Cone_%d_Pt%d",mcPartName[imc].Data(),icone,ipt);
2842 snprintf(title, buffersize,"Isolated %s #it{p}_{T} for #it{R}=%2.2f and #it{p}_{T}^{th}=%2.2f",
2843 mcPartType[imc].Data(),fConeSizes[icone], fPtThresholds[ipt]);
2844 fhPtThresIsolatedMC[imc][icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2845 fhPtThresIsolatedMC[imc][icone][ipt]->SetYTitle("#it{counts}");
2846 fhPtThresIsolatedMC[imc][icone][ipt]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
2847 outputContainer->Add(fhPtThresIsolatedMC[imc][icone][ipt]) ;
2848
2849
2850 snprintf(name , buffersize,"hPtFracMC%s_Cone_%d_Pt%d",mcPartName[imc].Data(),icone,ipt);
2851 snprintf(title, buffersize,"Isolated %s #it{p}_{T} for #it{R}=%2.2f and #Sigma #it{p}_{T}^{in cone}/#it{p}_{T}^{trig}=%2.2f",
2852 mcPartType[imc].Data(),fConeSizes[icone], fPtFractions[ipt]);
2853 fhPtFracIsolatedMC[imc][icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2854 fhPtFracIsolatedMC[imc][icone][ipt]->SetYTitle("#it{counts}");
2855 fhPtFracIsolatedMC[imc][icone][ipt]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
2856 outputContainer->Add(fhPtFracIsolatedMC[imc][icone][ipt]) ;
f5b702a0 2857
2858 snprintf(name , buffersize,"hSumPtMC%s_Cone_%d_Pt%d",mcPartName[imc].Data(),icone,ipt);
2859 snprintf(title, buffersize,"Isolated %s #it{p}_{T} for #it{R}=%2.2f and #Sigma #it{p}_{T}^{in cone}=%2.2f",
2860 mcPartType[imc].Data(),fConeSizes[icone], fSumPtThresholds[ipt]);
2861 fhSumPtIsolatedMC[imc][icone][ipt] = new TH1F(name, title,nptbins,ptmin,ptmax);
2862 fhSumPtIsolatedMC[imc][icone][ipt]->SetYTitle("#it{counts}");
2863 fhSumPtIsolatedMC[imc][icone][ipt]->SetXTitle("#it{p}_{T}(GeV/#it{c})");
2864 outputContainer->Add(fhSumPtIsolatedMC[imc][icone][ipt]) ;
124bffb3 2865 }
e4ef72be 2866 }//Histos with MC
2867 }//icone loop
2868 }//ipt loop
1a31a9ab 2869 }
2870
2ad19c3d 2871 if(fFillPileUpHistograms)
2872 {
17af6e24 2873 for (Int_t i = 0; i < 7 ; i++)
2874 {
2875 fhEIsoPileUp[i] = new TH1F(Form("hEPileUp%s",pileUpName[i].Data()),
6ae3345d 2876 Form("Number of isolated particles vs E, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()),
2877 nptbins,ptmin,ptmax);
03b86424 2878 fhEIsoPileUp[i]->SetYTitle("d#it{N} / d#it{E}");
dc9c6e78 2879 fhEIsoPileUp[i]->SetXTitle("#it{E} (GeV)");
6ae3345d 2880 outputContainer->Add(fhEIsoPileUp[i]) ;
17af6e24 2881
2882 fhPtIsoPileUp[i] = new TH1F(Form("hPtPileUp%s",pileUpName[i].Data()),
6ae3345d 2883 Form("Number of isolated particles vs #it{p}_{T}, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()),
2884 nptbins,ptmin,ptmax);
03b86424 2885 fhPtIsoPileUp[i]->SetYTitle("d#it{N} / #it{p}_{T}");
dc9c6e78 2886 fhPtIsoPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
6ae3345d 2887 outputContainer->Add(fhPtIsoPileUp[i]) ;
17af6e24 2888
2889 fhENoIsoPileUp[i] = new TH1F(Form("hENoIsoPileUp%s",pileUpName[i].Data()),
6ae3345d 2890 Form("Number of not isolated particles vs E, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()),
2891 nptbins,ptmin,ptmax);
03b86424 2892 fhENoIsoPileUp[i]->SetYTitle("d#it{N} / dE");
dc9c6e78 2893 fhENoIsoPileUp[i]->SetXTitle("#it{E} (GeV)");
6ae3345d 2894 outputContainer->Add(fhENoIsoPileUp[i]) ;
17af6e24 2895
2896 fhPtNoIsoPileUp[i] = new TH1F(Form("hPtNoIsoPileUp%s",pileUpName[i].Data()),
6ae3345d 2897 Form("Number of not isolated particles vs #it{p}_{T}, %s, pile-up event by %s",parTitle.Data(),pileUpName[i].Data()),
2898 nptbins,ptmin,ptmax);
03b86424 2899 fhPtNoIsoPileUp[i]->SetYTitle("d#it{N} / #it{p}_{T}");
dc9c6e78 2900 fhPtNoIsoPileUp[i]->SetXTitle("#it{p}_{T} (GeV/#it{c})");
6ae3345d 2901 outputContainer->Add(fhPtNoIsoPileUp[i]) ;
17af6e24 2902 }
b1f720a7 2903
6ae3345d 2904 fhTimeENoCut = new TH2F ("hTimeE_NoCut","time of cluster vs E of clusters, no cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
dc9c6e78 2905 fhTimeENoCut->SetXTitle("#it{E} (GeV)");
03b86424 2906 fhTimeENoCut->SetYTitle("#it{time} (ns)");
6ae3345d 2907 outputContainer->Add(fhTimeENoCut);
2ad19c3d 2908
6ae3345d 2909 fhTimeESPD = new TH2F ("hTimeE_SPD","time of cluster vs E of clusters, SPD cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
dc9c6e78 2910 fhTimeESPD->SetXTitle("#it{E} (GeV)");
03b86424 2911 fhTimeESPD->SetYTitle("#it{time} (ns)");
6ae3345d 2912 outputContainer->Add(fhTimeESPD);
2ad19c3d 2913
6ae3345d 2914 fhTimeESPDMulti = new TH2F ("hTimeE_SPDMulti","time of cluster vs E of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimebins,timemin,timemax);
dc9c6e78 2915 fhTimeESPDMulti->SetXTitle("#it{E} (GeV)");
03b86424 2916 fhTimeESPDMulti->SetYTitle("#it{time} (ns)");
6ae3345d 2917 outputContainer->Add(fhTimeESPDMulti);
2ad19c3d 2918
6ae3345d 2919 fhTimeNPileUpVertSPD = new TH2F ("hTime_NPileUpVertSPD","time of cluster vs N pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
2ad19c3d 2920 fhTimeNPileUpVertSPD->SetYTitle("# vertex ");
03b86424 2921 fhTimeNPileUpVertSPD->SetXTitle("#it{time} (ns)");
6ae3345d 2922 outputContainer->Add(fhTimeNPileUpVertSPD);
2ad19c3d 2923
6ae3345d 2924 fhTimeNPileUpVertTrack = new TH2F ("hTime_NPileUpVertTracks","time of cluster vs N pile-up Tracks vertex", ntimebins,timemin,timemax, 50,0,50 );
2ad19c3d 2925 fhTimeNPileUpVertTrack->SetYTitle("# vertex ");
03b86424 2926 fhTimeNPileUpVertTrack->SetXTitle("#it{time} (ns)");
6ae3345d 2927 outputContainer->Add(fhTimeNPileUpVertTrack);
2ad19c3d 2928
6ae3345d 2929 fhTimeNPileUpVertContributors = new TH2F ("hTime_NPileUpVertContributors","time of cluster vs N constributors to pile-up SPD vertex", ntimebins,timemin,timemax,50,0,50);
2ad19c3d 2930 fhTimeNPileUpVertContributors->SetYTitle("# vertex ");
03b86424 2931 fhTimeNPileUpVertContributors->SetXTitle("#it{time} (ns)");
6ae3345d 2932 outputContainer->Add(fhTimeNPileUpVertContributors);
2ad19c3d 2933
6ae3345d 2934 fhTimePileUpMainVertexZDistance = new TH2F ("hTime_PileUpMainVertexZDistance","time of cluster vs distance in Z pile-up SPD vertex - main SPD vertex",ntimebins,timemin,timemax,100,0,50);
03b86424 2935 fhTimePileUpMainVertexZDistance->SetYTitle("distance #it{z} (cm) ");
2936 fhTimePileUpMainVertexZDistance->SetXTitle("#it{time} (ns)");
6ae3345d 2937 outputContainer->Add(fhTimePileUpMainVertexZDistance);
2ad19c3d 2938
6ae3345d 2939 fhTimePileUpMainVertexZDiamond = new TH2F ("hTime_PileUpMainVertexZDiamond","time of cluster vs distance in Z pile-up SPD vertex - z diamond",ntimebins,timemin,timemax,100,0,50);
03b86424 2940 fhTimePileUpMainVertexZDiamond->SetYTitle("diamond distance #it{z} (cm) ");
2941 fhTimePileUpMainVertexZDiamond->SetXTitle("#it{time} (ns)");
6ae3345d 2942 outputContainer->Add(fhTimePileUpMainVertexZDiamond);
2ad19c3d 2943 }
2944
1a31a9ab 2945 return outputContainer ;
2946
2947}
2948
124bffb3 2949//____________________________________________________
2950Int_t AliAnaParticleIsolation::GetMCIndex(Int_t mcTag)
2951{
6ae3345d 2952 // Histogram index depending on origin of candidate
124bffb3 2953
2954 if(!IsDataMC()) return -1;
2955
2956 if (GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPrompt))
2957 {
2958 return kmcPrompt;
2959 }
2960 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCFragmentation))
2961 {
2962 return kmcFragment;
2963 }
2964 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0))
2965 {
2966 return kmcPi0;
2967 }
2968 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPi0Decay))
2969 {
2970 return kmcPi0Decay;
2971 }
2972 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCEtaDecay))
2973 {
2974 return kmcEtaDecay;
2975 }
2976 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCOtherDecay))
2977 {
2978 return kmcOtherDecay;
2979 }
2980 else if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCElectron))
2981 {
2982 return kmcElectron;
2983 }
2984 else // anything else
2985 {
bf8a7dac 2986 // careful can contain also other decays, to be checked.
124bffb3 2987 return kmcHadron;
2988 }
2989}
2990
03bae431 2991//__________________________________
2992void AliAnaParticleIsolation::Init()
2993{
2994 // Do some checks and init stuff
2995
124bffb3 2996 // In case of several cone and thresholds analysis, open the cuts for the filling of the
6ae3345d 2997 // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD().
03bae431 2998 // The different cones, thresholds are tested for this list of tracks, clusters.
2999 if(fMakeSeveralIC)
3000 {
3001 printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
3002 GetIsolationCut()->SetPtThreshold(100);
3003 GetIsolationCut()->SetPtFraction(100);
3004 GetIsolationCut()->SetConeSize(1);
3005 }
373ffbac 3006
3007 if(!GetReader()->IsCTSSwitchedOn() && GetIsolationCut()->GetParticleTypeInCone()!=AliIsolationCut::kOnlyNeutral)
3008 AliFatal("STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!\n");
3009
6ae3345d 3010
03bae431 3011}
3012
803d06a8 3013//____________________________________________
3014void AliAnaParticleIsolation::InitParameters()
3015{
3016
3017 //Initialize the parameters of the analysis.
3018 SetInputAODName("PWG4Particle");
6ae3345d 3019 SetAODObjArrayName("IsolationCone");
803d06a8 3020 AddToHistogramsName("AnaIsolation_");
3021
4b6cb0f2 3022 fCalorimeter = "EMCAL" ;
3023 fIsoDetector = "EMCAL" ;
3024
803d06a8 3025 fReMakeIC = kFALSE ;
3026 fMakeSeveralIC = kFALSE ;
3027
3028 //----------- Several IC-----------------
6ae3345d 3029 fNCones = 5 ;
3030 fNPtThresFrac = 5 ;
db6fb352 3031 fConeSizes [0] = 0.1; fConeSizes [1] = 0.2; fConeSizes [2] = 0.3; fConeSizes [3] = 0.4; fConeSizes [4] = 0.5;
6ae3345d 3032 fPtThresholds [0] = 1.; fPtThresholds [1] = 2.; fPtThresholds [2] = 3.; fPtThresholds [3] = 4.; fPtThresholds [4] = 5.;
3033 fPtFractions [0] = 0.05; fPtFractions [1] = 0.075; fPtFractions [2] = 0.1; fPtFractions [3] = 1.25; fPtFractions [4] = 1.5;
3034 fSumPtThresholds[0] = 1.; fSumPtThresholds[1] = 2.; fSumPtThresholds[2] = 3.; fSumPtThresholds[3] = 4.; fSumPtThresholds[4] = 5.;
803d06a8 3035
803d06a8 3036}
3037
3038//__________________________________________________
6ae3345d 3039void AliAnaParticleIsolation::MakeAnalysisFillAOD()
1a31a9ab 3040{
3041 //Do analysis and fill aods
3042 //Search for the isolated photon in fCalorimeter with pt > GetMinPt()
3043
b5dbb99b 3044 if(!GetInputAODBranch())
373ffbac 3045 AliFatal(Form("No input particles in AOD with name branch < %s >, STOP",GetInputAODName().Data()));
3046
b5dbb99b 3047 if(strcmp(GetInputAODBranch()->GetClass()->GetName(), "AliAODPWG4ParticleCorrelation"))
373ffbac 3048 AliFatal(Form("Wrong type of AOD object, change AOD class name in input AOD: It should be <AliAODPWG4ParticleCorrelation> and not <%s> \n",GetInputAODBranch()->GetClass()->GetName()));
b0a31c92 3049
1a31a9ab 3050 Int_t n = 0, nfrac = 0;
3051 Bool_t isolated = kFALSE ;
1a31a9ab 3052 Float_t coneptsum = 0 ;
6ae3345d 3053 TObjArray * pl = 0x0; ;
1a31a9ab 3054
3055 //Select the calorimeter for candidate isolation with neutral particles
b5dbb99b 3056 if (fCalorimeter == "PHOS" )
1a31a9ab 3057 pl = GetPHOSClusters();
3058 else if (fCalorimeter == "EMCAL")
3059 pl = GetEMCALClusters();
3060
3061 //Loop on AOD branch, filled previously in AliAnaPhoton, find leading particle to do isolation only with it
3062 Double_t ptLeading = 0. ;
3063 Int_t idLeading = -1 ;
3064 TLorentzVector mom ;
3065 Int_t naod = GetInputAODBranch()->GetEntriesFast();
be703b18 3066 if(GetDebug() > 0)
3067 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
1a31a9ab 3068
b5dbb99b 3069 for(Int_t iaod = 0; iaod < naod; iaod++)
3070 {
1a31a9ab 3071 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
6ae3345d 3072
1a31a9ab 3073 //If too small or too large pt, skip
6ae3345d 3074 if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ;
1a31a9ab 3075
03bae431 3076 //check if it is low pt trigger particle
6ae3345d 3077 if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() ||
3078 aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) &&
03bae431 3079 !fMakeSeveralIC)
b5dbb99b 3080 {
1a31a9ab 3081 continue ; //trigger should not come from underlying event
b5dbb99b 3082 }
1a31a9ab 3083
3084 //vertex cut in case of mixing
04f7a616 3085 Int_t check = CheckMixedEventVertex(aodinput->GetCaloLabel(0), aodinput->GetTrackLabel(0));
3086 if(check == 0) continue;
3087 if(check == -1) return;
1a31a9ab 3088
3089 //find the leading particles with highest momentum
6ae3345d 3090 if ( aodinput->Pt() > ptLeading )
b5dbb99b 3091 {
1a31a9ab 3092 ptLeading = aodinput->Pt() ;
226b95ba 3093 idLeading = iaod ;
1a31a9ab 3094 }
b5dbb99b 3095
226b95ba 3096 aodinput->SetLeadingParticle(kFALSE);
b5dbb99b 3097
1a31a9ab 3098 }//finish searching for leading trigger particle
3099
3100 // Check isolation of leading particle
3101 if(idLeading < 0) return;
226b95ba 3102
1a31a9ab 3103 AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(idLeading));
db6fb352 3104 aodinput->SetLeadingParticle(kTRUE);
547c2f01 3105
3106 // Check isolation only of clusters in fiducial region
3107 if(IsFiducialCutOn())
3108 {
050ad675 3109 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aodinput->Momentum(),aodinput->GetDetector()) ;
547c2f01 3110 if(! in ) return ;
3111 }
3112
1a31a9ab 3113 //After cuts, study isolation
3114 n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
ac5111f9 3115 GetIsolationCut()->MakeIsolationCut(GetCTSTracks(),pl,
3116 GetReader(), GetCaloPID(),
727a309a 3117 kTRUE, aodinput, GetAODObjArrayName(),
b5dbb99b 3118 n,nfrac,coneptsum, isolated);
3d187b6c 3119
3120 if(!fMakeSeveralIC) aodinput->SetIsolated(isolated);
6ae3345d 3121
be703b18 3122 if(GetDebug() > 1)
b5dbb99b 3123 {
1a31a9ab 3124 if(isolated)printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",idLeading);
6ae3345d 3125 printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
1a31a9ab 3126 }
3127
3128}
3129
803d06a8 3130//_________________________________________________________
6ae3345d 3131void AliAnaParticleIsolation::MakeAnalysisFillHistograms()
1a31a9ab 3132{
3133 //Do analysis and fill histograms
6ae3345d 3134
be703b18 3135 // In case of simulated data, fill acceptance histograms
3136 // Not ready for multiple case analysis.
3137 if(IsDataMC() && !fMakeSeveralIC) FillAcceptanceHistograms();
6ae3345d 3138
23130491 3139 //Loop on stored AOD
1a31a9ab 3140 Int_t naod = GetInputAODBranch()->GetEntriesFast();
be703b18 3141 if(GetDebug() > 0)
3142 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
6ae3345d 3143
b5dbb99b 3144 for(Int_t iaod = 0; iaod < naod ; iaod++)
3145 {
1a31a9ab 3146 AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
3147
3148 if(!aod->IsLeadingParticle()) continue; // Try to isolate only leading cluster or track
3149
547c2f01 3150 // Check isolation only of clusters in fiducial region
3151 if(IsFiducialCutOn())
3152 {
050ad675 3153 Bool_t in = GetFiducialCut()->IsInFiducialCut(*aod->Momentum(),aod->GetDetector()) ;
547c2f01 3154 if(! in ) continue ;
3155 }
3156
23130491 3157 Float_t pt = aod->Pt();
124bffb3 3158
23130491 3159 //If too small or too large pt, skip
3160 if(pt < GetMinPt() || pt > GetMaxPt() ) continue ;
3161
124bffb3 3162 Int_t mcTag = aod->GetTag() ;
3163 Int_t mcIndex = GetMCIndex(mcTag);
db6fb352 3164
124bffb3 3165 // --- In case of redoing isolation from delta AOD ----
3166 // Not standard case, not used since its implementation
3167 if(fMakeSeveralIC)
03bae431 3168 {
1a31a9ab 3169 //Analysis of multiple IC at same time
124bffb3 3170 MakeSeveralICAnalysis(aod,mcIndex);
03bae431 3171 continue;
1a31a9ab 3172 }
6ae3345d 3173
124bffb3 3174 // --- In case of redoing isolation multiple cuts ----
6ae3345d 3175
124bffb3 3176 if(fReMakeIC)
b5dbb99b 3177 {
1a31a9ab 3178 //In case a more strict IC is needed in the produced AOD
124bffb3 3179 Bool_t isolated = kFALSE;
23130491 3180 Int_t n = 0, nfrac = 0;
3181 Float_t coneptsum = 0 ;
727a309a 3182
23130491 3183 //Recover reference arrays with clusters and tracks
3184 TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
3185 TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
6ae3345d 3186
3187 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
ac5111f9 3188 GetReader(), GetCaloPID(),
6ae3345d 3189 kFALSE, aod, "",
b5dbb99b 3190 n,nfrac,coneptsum, isolated);
1a31a9ab 3191 }
124bffb3 3192
3193 Bool_t isolated = aod->IsIsolated();
3194 Bool_t decay = aod->IsTagged();
3195 Float_t energy = aod->E();
3196 Float_t phi = aod->Phi();
3197 Float_t eta = aod->Eta();
3198
3199 if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - pt %1.1f, eta %1.1f, phi %1.1f, Isolated %d\n",
3200 pt, eta, phi, isolated);
3201
3202 //---------------------------------------------------------------
3203 // Fill Shower shape and track matching histograms
3204 //---------------------------------------------------------------
6ae3345d 3205
124bffb3 3206 FillTrackMatchingShowerShapeControlHistograms(aod,mcIndex);
3207
3208 //---------------------------------------------------------------
3209 // Fill pt/sum pT distribution of particles in cone or in UE band
3210 //---------------------------------------------------------------
3211
3212 Float_t coneptsumCluster = 0;
3213 Float_t coneptsumTrack = 0;
3214 Float_t coneptsumCell = 0;
3215 Float_t etaBandptsumClusterNorm = 0;
3216 Float_t etaBandptsumTrackNorm = 0;
3217
3218 CalculateTrackSignalInCone (aod,coneptsumTrack );
3219 CalculateCaloSignalInCone (aod,coneptsumCluster);
3220 if(fFillCellHistograms)
3221 CalculateCaloCellSignalInCone(aod,coneptsumCell );
3222
3223 if(GetIsolationCut()->GetParticleTypeInCone()==AliIsolationCut::kNeutralAndCharged)
3224 {
3225 fhConeSumPtClustervsTrack ->Fill(coneptsumCluster,coneptsumTrack);
977564f5 3226 if(fFillCellHistograms)
9b01dc66 3227 {
124bffb3 3228 fhConeSumPtCellvsTrack ->Fill(coneptsumCell, coneptsumTrack);
3229 fhConeSumPtCellTrack ->Fill(pt, coneptsumTrack+coneptsumCell);
3230 fhConeSumPtCellTrackTrigEtaPhi->Fill(eta,phi,coneptsumTrack+coneptsumCell);
977564f5 3231 }
1a31a9ab 3232 }
6c80c1bf 3233
124bffb3 3234 fhConeSumPt ->Fill(pt, coneptsumTrack+coneptsumCluster);
3235 fhConeSumPtTrigEtaPhi ->Fill(eta,phi,coneptsumTrack+coneptsumCluster);
3236
3237 if(GetDebug() > 1)
3238 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsumTrack+coneptsumCluster);
3239
3240 //normalize phi/eta band per area unit
3241 if(fFillUEBandSubtractHistograms)
3242 CalculateNormalizeUEBandPerUnitArea(aod, coneptsumCluster, coneptsumCell, coneptsumTrack, etaBandptsumTrackNorm, etaBandptsumClusterNorm) ;
3243
3244 // printf("Histograms analysis : cluster pt = %f, etaBandTrack = %f, etaBandCluster = %f, isolation = %d\n",aod->Pt(),etaBandptsumTrackNorm,etaBandptsumClusterNorm,aod->IsIsolated());
3245
3246
3247 //---------------------------------------------------------------
3248 // Isolated/ Non isolated histograms
3249 //---------------------------------------------------------------
3250
23130491 3251 if(isolated)
3252 {
aa2e58e4 3253 if(GetDebug() > 1)
3254 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED: fill histograms\n", iaod);
2ad19c3d 3255
b5dbb99b 3256 fhEIso ->Fill(energy);
3257 fhPtIso ->Fill(pt);
3258 fhPhiIso ->Fill(pt,phi);
3259 fhEtaIso ->Fill(pt,eta);
0fb69ade 3260 fhEtaPhiIso ->Fill(eta,phi);
c8710850 3261
aa2e58e4 3262 if(IsDataMC())
977564f5 3263 {
aa2e58e4 3264 // For histograms in arrays, index in the array, corresponding to any particle origin
3265 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
3266 {
3267 fhPtIsoMC [kmcPhoton]->Fill(pt);
3268 fhPhiIsoMC[kmcPhoton]->Fill(pt,phi);
3269 fhEtaIsoMC[kmcPhoton]->Fill(pt,eta);
3270 }
3271
3272 fhPtIsoMC [mcIndex]->Fill(pt);
3273 fhPhiIsoMC[mcIndex]->Fill(pt,phi);
3274 fhEtaIsoMC[mcIndex]->Fill(pt,eta);
3275 }//Histograms with MC
977564f5 3276
aa2e58e4 3277 // Candidates tagged as decay in another analysis (AliAnaPi0EbE)
977564f5 3278 if(decay && fFillTaggedDecayHistograms)
3f150b4b 3279 {
23130491 3280 fhPtDecayIso ->Fill(pt);
3f150b4b 3281 fhEtaPhiDecayIso->Fill(eta,phi);
aa2e58e4 3282
3283 if(IsDataMC())
3284 {
3285 if(GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton))
3286 fhPtDecayIsoMC[kmcPhoton]->Fill(pt);
3287
3288 fhPtDecayIsoMC[mcIndex]->Fill(pt);
3289 }
3f150b4b 3290 }
aa2e58e4 3291
3292 if(fFillNLMHistograms)
3293 fhPtNLocMaxIso ->Fill(pt,aod->GetFiducialArea()) ; // remember to change method name
1a31a9ab 3294
aa2e58e4 3295 if(fFillHighMultHistograms)
3296 {
3297 fhPtCentralityIso ->Fill(pt,GetEventCentrality()) ;
3298 fhPtEventPlaneIso ->Fill(pt,GetEventPlaneAngle() ) ;
3299 }
3300
17af6e24 3301 if(fFillPileUpHistograms)
b1f720a7 3302 {
17af6e24 3303 if(GetReader()->IsPileUpFromSPD()) { fhEIsoPileUp[0] ->Fill(energy) ; fhPtIsoPileUp[0]->Fill(pt) ; }
3304 if(GetReader()->IsPileUpFromEMCal()) { fhEIsoPileUp[1] ->Fill(energy) ; fhPtIsoPileUp[1]->Fill(pt) ; }
3305 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhEIsoPileUp[2] ->Fill(energy) ; fhPtIsoPileUp[2]->Fill(pt) ; }
3306 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhEIsoPileUp[3] ->Fill(energy) ; fhPtIsoPileUp[3]->Fill(pt) ; }
3307 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhEIsoPileUp[4] ->Fill(energy) ; fhPtIsoPileUp[4]->Fill(pt) ; }
3308 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhEIsoPileUp[5] ->Fill(energy) ; fhPtIsoPileUp[5]->Fill(pt) ; }
3309 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhEIsoPileUp[6] ->Fill(energy) ; fhPtIsoPileUp[6]->Fill(pt) ; }
124bffb3 3310
aa2e58e4 3311 // Fill histograms to undertand pile-up before other cuts applied
3312 // Remember to relax time cuts in the reader
3313 FillPileUpHistograms(aod->GetCaloLabel(0));
3314 }
3315
1a31a9ab 3316 }//Isolated histograms
ca134929 3317 else // NON isolated
1a31a9ab 3318 {
aa2e58e4 3319 if(GetDebug() > 1)
3320 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d NOT ISOLATED, fill histograms\n", iaod);
db6fb352 3321
b1f720a7 3322 fhENoIso ->Fill(energy);
3323 fhPtNoIso ->Fill(pt);
3324 fhEtaPhiNoIso ->Fill(eta,phi);
977564f5 3325
aa2e58e4 3326 if(IsDataMC())
3327 {
3328 if( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) )
3329 fhPtNoIsoMC[kmcPhoton]->Fill(pt);
3330
3331 fhPtNoIsoMC[mcIndex]->Fill(pt);
3332 }
3333
3334 // Candidates tagged as decay in another analysis (AliAnaPi0EbE)
3335 if(decay && fFillTaggedDecayHistograms)
3336 {
3337 fhPtDecayNoIso ->Fill(pt);
3338 fhEtaPhiDecayNoIso->Fill(eta,phi);
3339
3340 if(IsDataMC())
3341 {
3342 if( GetMCAnalysisUtils()->CheckTagBit(mcTag,AliMCAnalysisUtils::kMCPhoton) )
3343 fhPtDecayNoIsoMC[kmcPhoton]->Fill(pt);
3344
3345 fhPtDecayNoIsoMC[mcIndex]->Fill(pt);
3346 }
3347 }// decay
3348
3349 if(fFillNLMHistograms)
3350 fhPtNLocMaxNoIso ->Fill(pt,aod->GetFiducialArea()); // remember to change method name
23130491 3351
17af6e24 3352 if(fFillPileUpHistograms)
b1f720a7 3353 {
17af6e24 3354 if(GetReader()->IsPileUpFromSPD()) { fhENoIsoPileUp[0] ->Fill(energy) ; fhPtNoIsoPileUp[0]->Fill(pt) ; }
3355 if(GetReader()->IsPileUpFromEMCal()) { fhENoIsoPileUp[1] ->Fill(energy) ; fhPtNoIsoPileUp[1]->Fill(pt) ; }
3356 if(GetReader()->IsPileUpFromSPDOrEMCal()) { fhENoIsoPileUp[2] ->Fill(energy) ; fhPtNoIsoPileUp[2]->Fill(pt) ; }
3357 if(GetReader()->IsPileUpFromSPDAndEMCal()) { fhENoIsoPileUp[3] ->Fill(energy) ; fhPtNoIsoPileUp[3]->Fill(pt) ; }
3358 if(GetReader()->IsPileUpFromSPDAndNotEMCal()) { fhENoIsoPileUp[4] ->Fill(energy) ; fhPtNoIsoPileUp[4]->Fill(pt) ; }
3359 if(GetReader()->IsPileUpFromEMCalAndNotSPD()) { fhENoIsoPileUp[5] ->Fill(energy) ; fhPtNoIsoPileUp[5]->Fill(pt) ; }
3360 if(GetReader()->IsPileUpFromNotSPDAndNotEMCal()) { fhENoIsoPileUp[6] ->Fill(energy) ; fhPtNoIsoPileUp[6]->Fill(pt) ; }
b1f720a7 3361 }
aa2e58e4 3362 } // non iso
1a31a9ab 3363 }// aod loop
aa2e58e4 3364
1a31a9ab 3365}
3366
4b6cb0f2 3367//______________________________________________________________________
dc9c6e78 3368void AliAnaParticleIsolation::FillAcceptanceHistograms()
3369{
4b6cb0f2 3370 // Fill acceptance histograms if MC data is available
3371 // Only when particle is in the calorimeter. Rethink if CTS is used.
dc9c6e78 3372
be703b18 3373 if(GetDebug() > 0) printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - Start \n");
3374
6aac3409 3375 //Double_t photonY = -100 ;
dc9c6e78 3376 Double_t photonE = -1 ;
3377 Double_t photonPt = -1 ;
3378 Double_t photonPhi = 100 ;
3379 Double_t photonEta = -1 ;
3380
3381 Int_t pdg = 0 ;
d2d42179 3382 Int_t status = 0 ;
dc9c6e78 3383 Int_t tag = 0 ;
3384 Int_t mcIndex = 0 ;
d2d42179 3385 Int_t nprim = 0;
3386
3387 TParticle * primStack = 0;
3388 AliAODMCParticle * primAOD = 0;
3389 TLorentzVector lv;
dc9c6e78 3390
d2d42179 3391 // Get the ESD MC particles container
3392 AliStack * stack = 0;
3393 if( GetReader()->ReadStack() )
dc9c6e78 3394 {
d2d42179 3395 stack = GetMCStack();
3396 if(!stack ) return;
3397 nprim = stack->GetNtrack();
3398 }
dc9c6e78 3399
d2d42179 3400 // Get the AOD MC particles container
3401 TClonesArray * mcparticles = 0;
3402 if( GetReader()->ReadAODMCParticles() )
dc9c6e78 3403 {
d2d42179 3404 mcparticles = GetReader()->GetAODMCParticles();
3405 if( !mcparticles ) return;
3406 nprim = mcparticles->GetEntriesFast();
3407 }
3408
3409 for(Int_t i=0 ; i < nprim; i++)
3410 {
3411 if(GetReader()->AcceptOnlyHIJINGLabels() && !GetReader()->IsHIJINGLabel(i)) continue ;
3412
3413 if(GetReader()->ReadStack())
3414 {
3415 primStack = stack->Particle(i) ;
ddaa6315 3416 if(!primStack)
3417 {
3418 printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - ESD primaries pointer not available!!\n");
3419 continue;
3420 }
3421
d2d42179 3422 pdg = primStack->GetPdgCode();
3423 status = primStack->GetStatusCode();
3424
3425 if(primStack->Energy() == TMath::Abs(primStack->Pz())) continue ; //Protection against floating point exception
3426
3427 //printf("i %d, %s %d %s %d \n",i, stack->Particle(i)->GetName(), stack->Particle(i)->GetPdgCode(),
3428 // prim->GetName(), prim->GetPdgCode());
3429
3430 //photonY = 0.5*TMath::Log((prim->Energy()-prim->Pz())/(prim->Energy()+prim->Pz())) ;
3431
3432 //Photon kinematics
3433 primStack->Momentum(lv);
3434
3435 }
3436 else
3437 {
3438 primAOD = (AliAODMCParticle *) mcparticles->At(i);
ddaa6315 3439 if(!primAOD)
3440 {
3441 printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - AOD primaries pointer not available!!\n");
3442 continue;
3443 }
3444
d2d42179 3445 pdg = primAOD->GetPdgCode();
3446 status = primAOD->GetStatus();
3447
3448 if(primAOD->E() == TMath::Abs(primAOD->Pz())) continue ; //Protection against floating point exception
3449
3450 //photonY = 0.5*TMath::Log((prim->Energy()-prim->Pz())/(prim->Energy()+prim->Pz())) ;
3451
3452 //Photon kinematics
3453 lv.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
3454 }
3455
3456 // Select only photons in the final state
4b6cb0f2 3457 if(pdg != 22 ) continue ;
d2d42179 3458
4b6cb0f2 3459 // Consider only final state particles, but this depends on generator,
3460 // status 1 is the usual one, in case of not being ok, leave the possibility
3461 // to not consider this.
3462 if(status != 1 && GetMCAnalysisUtils()->GetMCGenerator()!="" ) continue ;
d2d42179 3463
3464 // If too small or too large pt, skip, same cut as for data analysis
3465 photonPt = lv.Pt () ;
3466
3467 if(photonPt < GetMinPt() || photonPt > GetMaxPt() ) continue ;
3468
3469 photonE = lv.E () ;
3470 photonEta = lv.Eta() ;
3471 photonPhi = lv.Phi() ;
3472
3473 if(photonPhi < 0) photonPhi+=TMath::TwoPi();
3474
bf8a7dac 3475 // Check if photons hit the Calorimeter acceptance
4b6cb0f2 3476 if(IsRealCaloAcceptanceOn() && fIsoDetector!="CTS") // defined on base class
3477 {
3478 if(GetReader()->ReadStack() &&
3479 !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(fIsoDetector, primStack)) continue ;
3480 if(GetReader()->ReadAODMCParticles() &&
3481 !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(fIsoDetector, primAOD )) continue ;
3482 }
6ae3345d 3483
4b6cb0f2 3484 // Check same fidutial borders as in data analysis on top of real acceptance if real was requested.
3485 if(!GetFiducialCut()->IsInFiducialCut(lv,fIsoDetector)) continue ;
6ae3345d 3486
d2d42179 3487 // Get tag of this particle photon from fragmentation, decay, prompt ...
3488 // Set the origin of the photon.
3489 tag = GetMCAnalysisUtils()->CheckOrigin(i,GetReader());
3490
3491 if(!GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3492 {
3493 // A conversion photon from a hadron, skip this kind of photon
3494 // printf("AliAnaPhoton::FillAcceptanceHistograms() - not a photon, weird!\n ");
3495 // GetMCAnalysisUtils()->PrintMCTag(tag);
3496
3497 continue;
3498 }
3499
3500 //
3501 if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPrompt) )
3502 {
3503 mcIndex = kmcPrimPrompt;
3504 }
3505 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCFragmentation) )
3506 {
3507 mcIndex = kmcPrimFrag ;
3508 }
3509 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCISR))
3510 {
3511 mcIndex = kmcPrimISR;
3512 }
3513 else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay))
3514 {
3515 mcIndex = kmcPrimPi0Decay;
3516 }
3517 else if( (GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay) ||
3518 GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCOtherDecay)))
3519 {
3520 mcIndex = kmcPrimOtherDecay;
3521 }
3522 else
3523 {
bf8a7dac 3524 // Other decay but from non final state particle
3525 mcIndex = kmcPrimOtherDecay;
d2d42179 3526 }//Other origin
3527
3528 // ////////////////////ISO MC/////////////////////////
3529 Double_t sumPtInCone = 0; Double_t dR=0. ;
3530 TParticle * mcisopStack = 0;
3531 AliAODMCParticle * mcisopAOD = 0;
3532 Int_t partInConeStatus = -1, partInConeMother = -1;
3533 Double_t partInConePt = 0, partInConeEta = 0, partInConePhi = 0;
3534 Int_t npart = 0;
3535 for(Int_t ip = 0; ip < nprim ; ip++)
dc9c6e78 3536 {
d2d42179 3537 if(ip==i) continue;
dc9c6e78 3538
d2d42179 3539 if( GetReader()->ReadStack() )
dc9c6e78 3540 {
d2d42179 3541 mcisopStack = static_cast<TParticle*>(stack->Particle(ip));
3542 if( !mcisopStack ) continue;
3543 partInConeStatus = mcisopStack->GetStatusCode();
3544 partInConeMother = mcisopStack->GetMother(0);
3545 partInConePt = mcisopStack->Pt();
3546 partInConeEta = mcisopStack->Eta();
3547 partInConePhi = mcisopStack->Phi();
3548 }
3549 else
3550 {
3551 mcisopAOD = (AliAODMCParticle *) mcparticles->At(ip);
3552 if( !mcisopAOD ) continue;
3553 partInConeStatus = mcisopAOD->GetStatus();
3554 partInConeMother = mcisopAOD->GetMother();
3555 partInConePt = mcisopAOD->Pt();
3556 partInConeEta = mcisopAOD->Eta();
3557 partInConePhi = mcisopAOD->Phi();
3558 }
dc9c6e78 3559
4b6cb0f2 3560 // Consider only final state particles, but this depends on generator,
3561 // status 1 is the usual one, in case of not being ok, leave the possibility
3562 // to not consider this.
3563 if( partInConeStatus != 1 && GetMCAnalysisUtils()->GetMCGenerator()!="" ) continue ;
d2d42179 3564
3565 if( partInConeMother == i ) continue;
3566
3567 if( partInConePt < GetReader()->GetCTSPtMin() ) continue;
3568 // Careful!!!, cut for TPC tracks and calorimeter clusters in cone can be different
3569
3570 // TVector3 vmcv(mcisop->Px(),mcisop->Py(), mcisop->Pz());
3571 // if(vmcv.Perp()>1)
3572 // continue;
3573
4b6cb0f2 3574 //
3575 // Add here Acceptance cut???, charged particles CTS fid cut, neutral Calo real acceptance.
3576 //
3577
d2d42179 3578 dR = GetIsolationCut()->Radius(photonEta, photonPhi, partInConeEta, partInConePhi);
3579
3580 if(dR > GetIsolationCut()->GetConeSize())
3581 continue;
3582
3583 sumPtInCone += partInConePt;
3584 if(partInConePt > GetIsolationCut()->GetPtThreshold() &&
3585 partInConePt < GetIsolationCut()->GetPtThresholdMax()) npart++;
3586 }
3587
3588 ///////END ISO MC/////////////////////////
3589
3590 // Fill the histograms, only those in the defined calorimeter acceptance
3591
3592 fhEtaPrimMC[kmcPrimPhoton]->Fill(photonPt , photonEta) ;
3593 fhPhiPrimMC[kmcPrimPhoton]->Fill(photonPt , photonPhi) ;
3594 fhEPrimMC [kmcPrimPhoton]->Fill(photonE) ;
3595
3596 fhEtaPrimMC[mcIndex]->Fill(photonPt , photonEta) ;
3597 fhPhiPrimMC[mcIndex]->Fill(photonPt , photonPhi) ;
3598 fhEPrimMC [mcIndex]->Fill(photonE ) ;
3599
3600 // Isolated?
3601 Bool_t isolated = kFALSE;
3602 if(GetIsolationCut()->GetICMethod() == AliIsolationCut::kSumPtIC &&
3603 (sumPtInCone < GetIsolationCut()->GetSumPtThreshold() ||
3604 sumPtInCone > GetIsolationCut()->GetSumPtThresholdMax()))
3605 isolated = kTRUE;
3606
3607 if(GetIsolationCut()->GetICMethod() == AliIsolationCut::kPtThresIC &&
3608 npart == 0)
3609 isolated = kTRUE;
3610
3611 if(isolated)
3612 {
3613 fhPtPrimMCiso [mcIndex] ->Fill(photonPt) ;
3614 fhPtPrimMCiso [kmcPrimPhoton]->Fill(photonPt) ;
3615 }
3616
3617 }//loop on primaries
be703b18 3618
3619 if(GetDebug() > 0) printf("AliAnaParticleIsolation::FillAcceptanceHistograms() - End \n");
6ae3345d 3620
dc9c6e78 3621}
3622
3623
803d06a8 3624//_____________________________________________________________________________________
124bffb3 3625void AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelation* ph,
3626 Int_t mcIndex)
1a31a9ab 3627{
1a31a9ab 3628
db6fb352 3629 //Isolation Cut Analysis for both methods and different pt cuts and cones
d2d42179 3630 Float_t ptC = ph->Pt();
db6fb352 3631 Float_t etaC = ph->Eta();
3632 Float_t phiC = ph->Phi();
d2d42179 3633 Int_t tag = ph->GetTag();
db6fb352 3634 Bool_t decay = ph->IsTagged();
b0a31c92 3635
be703b18 3636 if(GetDebug() > 0)
3637 printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f, decay? %d\n",ptC, decay);
03bae431 3638
124bffb3 3639 //Keep original setting used when filling AODs, reset at end of analysis
1a31a9ab 3640 Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
3641 Float_t ptfracorg = GetIsolationCut()->GetPtFraction();
f5b702a0 3642 Float_t ptsumcorg = GetIsolationCut()->GetSumPtThreshold();
1a31a9ab 3643 Float_t rorg = GetIsolationCut()->GetConeSize();
3644
124bffb3 3645 Float_t coneptsum = 0 ;
db6fb352 3646 Int_t n [10][10];//[fNCones][fNPtThresFrac];
3647 Int_t nfrac[10][10];//[fNCones][fNPtThresFrac];
ca134929 3648 Bool_t isolated = kFALSE;
6ae3345d 3649
727a309a 3650 // Fill hist with all particles before isolation criteria
be703b18 3651 fhENoIso ->Fill(ph->E());
db6fb352 3652 fhPtNoIso ->Fill(ptC);
3653 fhEtaPhiNoIso->Fill(etaC,phiC);
3654
3655 if(IsDataMC())
3656 {
124bffb3 3657 if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3658 fhPtNoIsoMC[kmcPhoton]->Fill(ptC);
3659
3660 fhPtNoIsoMC[mcIndex]->Fill(ptC);
db6fb352 3661 }
3662
aa2e58e4 3663 // Candidates tagged as decay in another analysis (AliAnaPi0EbE)
be703b18 3664 if(decay && fFillTaggedDecayHistograms)
db6fb352 3665 {
3666 fhPtDecayNoIso ->Fill(ptC);
3667 fhEtaPhiDecayNoIso->Fill(etaC,phiC);
aa2e58e4 3668
3669 if(IsDataMC())
3670 {
3671 if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3672 fhPtDecayNoIsoMC[kmcPhoton]->Fill(ptC);
3673
3674 fhPtDecayNoIsoMC[mcIndex]->Fill(ptC);
3675 }
db6fb352 3676 }
be703b18 3677
44e48e82 3678 //Get vertex for photon momentum calculation
3679 Double_t vertex[] = {0,0,0} ; //vertex ;
124bffb3 3680 if(GetReader()->GetDataType() != AliCaloTrackReader::kMC)
3681 GetReader()->GetVertex(vertex);
6ae3345d 3682
1a31a9ab 3683 //Loop on cone sizes
b5dbb99b 3684 for(Int_t icone = 0; icone<fNCones; icone++)
3685 {
44e48e82 3686 //Recover reference arrays with clusters and tracks
3687 TObjArray * refclusters = ph->GetObjArray(GetAODObjArrayName()+"Clusters");
3688 TObjArray * reftracks = ph->GetObjArray(GetAODObjArrayName()+"Tracks");
3689
3690 //If too small or too large pt, skip
124bffb3 3691 if(ptC < GetMinPt() || ptC > GetMaxPt() ) continue ;
3692
3693 //In case a more strict IC is needed in the produced AOD
3694
398e2e8f 3695 isolated = kFALSE; coneptsum = 0;
124bffb3 3696
3697 GetIsolationCut()->SetSumPtThreshold(100);
3698 GetIsolationCut()->SetPtThreshold(100);
3699 GetIsolationCut()->SetPtFraction(100);
3700 GetIsolationCut()->SetConeSize(fConeSizes[icone]);
db6fb352 3701
44e48e82 3702 // retreive pt tracks to fill histo vs. pt leading
3703 //Fill pt distribution of particles in cone
23130491 3704 //fhPtLeadingPt(),fhPerpSumPtLeadingPt(),fhPerpPtLeadingPt(),
44e48e82 3705
be703b18 3706 // Tracks in perpendicular cones
23130491 3707 Double_t sumptPerp = 0. ;
44e48e82 3708 TObjArray * trackList = GetCTSTracks() ;
3709 for(Int_t itrack=0; itrack < trackList->GetEntriesFast(); itrack++)
3710 {
3711 AliVTrack* track = (AliVTrack *) trackList->At(itrack);
3712 //fill the histograms at forward range
3713 if(!track)
3714 {
3715 printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Track not available?");
3716 continue;
3717 }
3718
3719 Double_t dPhi = phiC - track->Phi() + TMath::PiOver2();
3720 Double_t dEta = etaC - track->Eta();
3721 Double_t arg = dPhi*dPhi + dEta*dEta;
3722 if(TMath::Sqrt(arg) < fConeSizes[icone])
3723 {
23130491 3724 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3725 sumptPerp+=track->Pt();
44e48e82 3726 }
3727
3728 dPhi = phiC - track->Phi() - TMath::PiOver2();
3729 arg = dPhi*dPhi + dEta*dEta;
3730 if(TMath::Sqrt(arg) < fConeSizes[icone])
3731 {
23130491 3732 fhPerpPtLeadingPt[icone]->Fill(ptC,TMath::Sqrt(track->Px()*track->Px()+track->Py()*track->Py()));
3733 sumptPerp+=track->Pt();
124bffb3 3734 }
44e48e82 3735 }
23130491 3736
3737 fhPerpSumPtLeadingPt[icone]->Fill(ptC,sumptPerp);
3738
be703b18 3739 // Tracks in isolation cone, pT distribution and sum
3740 if(reftracks && GetIsolationCut()->GetParticleTypeInCone()!= AliIsolationCut::kOnlyNeutral)
124bffb3 3741 {
44e48e82 3742 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
3743 {
3744 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
be703b18 3745
3746 Float_t rad = GetIsolationCut()->Radius(etaC, phiC, track->Eta(), track->Phi());
3747
3748 if(rad > fConeSizes[icone]) continue ;
3749
3750 fhPtLeadingPt[icone]->Fill(ptC, track->Pt());
3751 coneptsum += track->Pt();
44e48e82 3752 }
23130491 3753 }
3754
be703b18 3755 // Clusters in isolation cone, pT distribution and sum
3756 if(refclusters && GetIsolationCut()->GetParticleTypeInCone()!= AliIsolationCut::kOnlyCharged)
124bffb3 3757 {
44e48e82 3758 TLorentzVector mom ;
3759 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
3760 {
3761 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
6ae3345d 3762
44e48e82 3763 calo->GetMomentum(mom,vertex) ;//Assume that come from vertex in straight line
6ae3345d 3764
be703b18 3765 Float_t rad = GetIsolationCut()->Radius(etaC, phiC, mom.Eta(), mom.Phi());
6ae3345d 3766
be703b18 3767 if(rad > fConeSizes[icone]) continue ;
44e48e82 3768
3769 fhPtLeadingPt[icone]->Fill(ptC, mom.Pt());
be703b18 3770 coneptsum += mom.Pt();
44e48e82 3771 }
3772 }
124bffb3 3773
be703b18 3774 fhSumPtLeadingPt[icone]->Fill(ptC,coneptsum);
f5b702a0 3775
3776 if(IsDataMC())
3777 {
3778 if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3779 fhSumPtLeadingPtMC[kmcPhoton][icone]->Fill(ptC,coneptsum) ;
3780
3781 fhSumPtLeadingPtMC[mcIndex][icone]->Fill(ptC,coneptsum) ;
3782 }
6ae3345d 3783
be703b18 3784 ///////////////////
124bffb3 3785
be703b18 3786 //Loop on pt thresholds
3787 for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++)
b5dbb99b 3788 {
db6fb352 3789 n [icone][ipt]=0;
1a31a9ab 3790 nfrac[icone][ipt]=0;
3791 GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
db6fb352 3792 GetIsolationCut()->SetPtFraction(fPtFractions[ipt]) ;
3793 GetIsolationCut()->SetSumPtThreshold(fSumPtThresholds[ipt]);
3794
44e48e82 3795 GetIsolationCut()->MakeIsolationCut(reftracks, refclusters,
ac5111f9 3796 GetReader(), GetCaloPID(),
b5dbb99b 3797 kFALSE, ph, "",
3798 n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
1a31a9ab 3799
be703b18 3800 // Normal pT threshold cut
3801
3802 if(GetDebug() > 0)
3803 {
3804 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - cone size %1.1f, ptThres %1.1f, sumptThresh %1.1f\n",
3805 fConeSizes[icone],fPtThresholds[ipt],fSumPtThresholds[ipt]);
f5b702a0 3806 printf("\t n %d, nfrac %d, coneptsum %2.2f\n",
3807 n[icone][ipt],nfrac[icone][ipt],coneptsum);
be703b18 3808
3809 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - pt %1.1f, eta %1.1f, phi %1.1f\n",ptC, etaC, phiC);
3810 }
db6fb352 3811
124bffb3 3812 if(n[icone][ipt] == 0)
b5dbb99b 3813 {
be703b18 3814 if(GetDebug() > 0)
3815 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling pt threshold loop\n");
3816
3817 fhPtThresIsolated [icone][ipt]->Fill(ptC);
db6fb352 3818 fhEtaPhiPtThresIso[icone][ipt]->Fill(etaC,phiC);
3819
be703b18 3820 if( decay && fFillTaggedDecayHistograms )
db6fb352 3821 {
be703b18 3822 fhPtPtThresDecayIso [icone][ipt]->Fill(ptC);
3823 fhEtaPhiPtThresDecayIso[icone][ipt]->Fill(etaC,phiC);
db6fb352 3824 }
3825
b5dbb99b 3826 if(IsDataMC())
3827 {
124bffb3 3828 if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton) )
3829 fhPtThresIsolatedMC[kmcPhoton][icone][ipt]->Fill(ptC) ;
3830
3831 fhPtThresIsolatedMC[mcIndex][icone][ipt]->Fill(ptC) ;
3832
1a31a9ab 3833 }
3834 }
3835
db6fb352 3836 // pt in cone fraction
b5dbb99b 3837 if(nfrac[icone][ipt] == 0)
3838 {
be703b18 3839 if(GetDebug() > 0)
3840 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling frac loop\n");
3841
3842 fhPtFracIsolated [icone][ipt]->Fill(ptC);
db6fb352 3843 fhEtaPhiPtFracIso[icone][ipt]->Fill(etaC,phiC);
3844
be703b18 3845 if( decay && fFillTaggedDecayHistograms )
db6fb352 3846 {
be703b18 3847 fhPtPtFracDecayIso [icone][ipt]->Fill(ptC);
b0a31c92 3848 fhEtaPhiPtFracDecayIso[icone][ipt]->Fill(etaC,phiC);
db6fb352 3849 }
3850
b5dbb99b 3851 if(IsDataMC())
3852 {
124bffb3 3853 if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3854 fhPtFracIsolatedMC[kmcPhoton][icone][ipt]->Fill(ptC) ;
3855
3856 fhPtFracIsolatedMC[mcIndex][icone][ipt]->Fill(ptC) ;
1a31a9ab 3857 }
3858 }
db6fb352 3859
be703b18 3860 if(GetDebug()>0)
3861 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - checking IC method : %i\n",GetIsolationCut()->GetICMethod());
db6fb352 3862
3863 //Pt threshold on pt cand/ sum in cone histograms
be703b18 3864 if(coneptsum < fSumPtThresholds[ipt])
3865 {
3866 if(GetDebug() > 0 )
3867 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling sum loop\n");
6ae3345d 3868
f5b702a0 3869 fhSumPtIsolated [icone][ipt]->Fill(ptC) ;
b0a31c92 3870 fhEtaPhiPtSumIso[icone][ipt]->Fill(etaC, phiC) ;
be703b18 3871
3872 if( decay && fFillTaggedDecayHistograms )
db6fb352 3873 {
3874 fhPtPtSumDecayIso[icone][ipt]->Fill(ptC);
b0a31c92 3875 fhEtaPhiPtSumDecayIso[icone][ipt]->Fill(etaC, phiC) ;
db6fb352 3876 }
f5b702a0 3877
3878 if(IsDataMC())
3879 {
3880 if( GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPhoton))
3881 fhSumPtIsolatedMC[kmcPhoton][icone][ipt]->Fill(ptC) ;
3882
3883 fhSumPtIsolatedMC[mcIndex][icone][ipt]->Fill(ptC) ;
3884 }
db6fb352 3885 }
3886
124bffb3 3887 // pt sum pt frac method
3888 // if( ((fPtFractions[ipt]*ptC < fSumPtThresholds[ipt]) && (coneptsum < fSumPtThresholds[ipt])) || ((fPtFractions[ipt]*ptC > fSumPtThresholds[ipt]) && (coneptsum < fPtFractions[ipt]*ptC)) )
3889
bb5fc123 3890 if(coneptsum < fPtFractions[ipt]*ptC)
124bffb3 3891 {
be703b18 3892 if(GetDebug() > 0)
3893 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling PtFrac PtSum loop\n");
3894
3895 fhPtFracPtSumIso [icone][ipt]->Fill(ptC) ;
b0a31c92 3896 fhEtaPhiFracPtSumIso[icone][ipt]->Fill(etaC,phiC) ;
3897
be703b18 3898 if( decay && fFillTaggedDecayHistograms )
b0a31c92 3899 {
be703b18 3900 fhPtFracPtSumDecayIso [icone][ipt]->Fill(ptC);
b0a31c92 3901 fhEtaPhiFracPtSumDecayIso[icone][ipt]->Fill(etaC,phiC);
3902 }
3903 }
3904
3905 // density method
db6fb352 3906 Float_t cellDensity = GetIsolationCut()->GetCellDensity( ph, GetReader());
be703b18 3907 if(coneptsum < fSumPtThresholds[ipt]*cellDensity)
3908 {
3909 if(GetDebug() > 0)
3910 printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - filling density loop\n");
3911
3912 fhPtSumDensityIso [icone][ipt]->Fill(ptC) ;
b0a31c92 3913 fhEtaPhiSumDensityIso[icone][ipt]->Fill(etaC,phiC) ;
3914
be703b18 3915 if( decay && fFillTaggedDecayHistograms )
db6fb352 3916 {
be703b18 3917 fhPtSumDensityDecayIso [icone][ipt]->Fill(ptC);
b0a31c92 3918 fhEtaPhiSumDensityDecayIso[icone][ipt]->Fill(etaC, phiC);
db6fb352 3919 }
3920
3921 }
1a31a9ab 3922 }//pt thresh loop
3923
1a31a9ab 3924
3925 }//cone size loop
3926
3927 //Reset original parameters for AOD analysis
3928 GetIsolationCut()->SetPtThreshold(ptthresorg);
3929 GetIsolationCut()->SetPtFraction(ptfracorg);
f5b702a0 3930 GetIsolationCut()->SetSumPtThreshold(ptsumcorg);
1a31a9ab 3931 GetIsolationCut()->SetConeSize(rorg);
3932
3933}
3934
803d06a8 3935//_____________________________________________________________
1a31a9ab 3936void AliAnaParticleIsolation::Print(const Option_t * opt) const
3937{
3938
3939 //Print some relevant parameters set for the analysis
3940 if(! opt)
3941 return;
3942
3943 printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
745913ae 3944 AliAnaCaloTrackCorrBaseClass::Print(" ");
1a31a9ab 3945
3946 printf("ReMake Isolation = %d \n", fReMakeIC) ;
3947 printf("Make Several Isolation = %d \n", fMakeSeveralIC) ;
3948 printf("Calorimeter for isolation = %s \n", fCalorimeter.Data()) ;
4b6cb0f2 3949 printf("Detector for candidate isolation = %s \n", fIsoDetector.Data()) ;
1a31a9ab 3950
b5dbb99b 3951 if(fMakeSeveralIC)
3952 {
6ae3345d 3953 printf("N Cone Sizes = %d\n", fNCones) ;
1a31a9ab 3954 printf("Cone Sizes = \n") ;
3955 for(Int_t i = 0; i < fNCones; i++)
3956 printf(" %1.2f;", fConeSizes[i]) ;
3957 printf(" \n") ;
3958
3959 printf("N pT thresholds/fractions = %d\n", fNPtThresFrac) ;
3960 printf(" pT thresholds = \n") ;
3961 for(Int_t i = 0; i < fNPtThresFrac; i++)
3962 printf(" %2.2f;", fPtThresholds[i]) ;
3963
3964 printf(" \n") ;
3965
3966 printf(" pT fractions = \n") ;
3967 for(Int_t i = 0; i < fNPtThresFrac; i++)
3968 printf(" %2.2f;", fPtFractions[i]) ;
3969
db6fb352 3970 printf(" \n") ;
3971
3972 printf("sum pT thresholds = \n") ;
3973 for(Int_t i = 0; i < fNPtThresFrac; i++)
3974 printf(" %2.2f;", fSumPtThresholds[i]) ;
3975
3976
6ae3345d 3977 }
1a31a9ab 3978
1a31a9ab 3979 printf(" \n") ;
3980
3981}
3982