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