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