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