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