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