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