1 #ifndef ALIANALYSISTASKSE_H
9 #include <TProfile2D.h>
14 #include <TClonesArray.h>
18 #include <TInterpreter.h>
20 #include "AliAnalysisTask.h"
21 #include "AliCentrality.h"
23 #include "AliESDEvent.h"
24 #include "AliESDInputHandler.h"
25 #include "AliAODEvent.h"
26 #include "AliAODHandler.h"
27 #include "AliAnalysisManager.h"
28 #include "AliAnalysisTaskSE.h"
31 #include "AliAnalysisDataContainer.h"
34 #include "AliESDtrackCuts.h"
37 #include "AliGenPythiaEventHeader.h"
38 #include "AliAODMCHeader.h"
39 #include "AliMCEvent.h"
43 #include "AliVEventHandler.h"
44 #include "AliVParticle.h"
45 #include "AliAODMCParticle.h"
46 #include "AliAnalysisUtils.h"
64 AliInfo(
"Creating histograms.");
67 SetCurrentOutputList(0);
69 TH1* tmpHisto = AddHistogram1D<TH1D>(
"hVertexAcceptance",
"Accepted vertices for different conditions",
"", 4, 0, 4,
"stage",
"N^{Events}/cut");
70 tmpHisto->GetXaxis()->SetBinLabel(1,
"Triggered all");
71 tmpHisto->GetXaxis()->SetBinLabel(2,
"Triggered w/ vertex");
72 tmpHisto->GetXaxis()->SetBinLabel(3,
"Pile-up corrected all");
73 tmpHisto->GetXaxis()->SetBinLabel(4,
"Pile-up corrected w vertex");
75 TH2* tmpHisto2D = AddHistogram2D<TH2D>(
"hCentrality", Form(
"Accepted events in centrality (%s)", fCentralityType.Data()),
"COLZ", 102, 0., 102., 4, 0,4,
"Centrality",
"Cut stage",
"dN^{Events}");
76 tmpHisto2D->GetYaxis()->SetBinLabel(1,
"Before cuts");
77 tmpHisto2D->GetYaxis()->SetBinLabel(2,
"After pile up");
78 tmpHisto2D->GetYaxis()->SetBinLabel(3,
"After vertex demand");
79 tmpHisto2D->GetYaxis()->SetBinLabel(4,
"After vertex cuts");
81 tmpHisto = AddHistogram1D<TH1D>(
"hTrackAcceptance",
"Accepted tracks (0 = before cuts, 1 = after eta, 2 = after pT)",
"", 3, 0, 3,
"stage",
"N^{Tracks}/cut");
82 tmpHisto->GetXaxis()->SetBinLabel(1,
"Before cuts");
83 tmpHisto->GetXaxis()->SetBinLabel(2,
"After eta");
84 tmpHisto->GetXaxis()->SetBinLabel(3,
"After p_{T}");
86 tmpHisto = AddHistogram1D<TH1D>(
"hJetAcceptance",
"Accepted jets (0 = before cuts, 1 = after eta, 2 = after pT, 3 = after area)",
"", 4, 0, 4,
"stage",
"N^{Jets}/cut");
87 tmpHisto->GetXaxis()->SetBinLabel(1,
"Before cuts");
88 tmpHisto->GetXaxis()->SetBinLabel(2,
"After eta");
89 tmpHisto->GetXaxis()->SetBinLabel(3,
"After p_{T}");
90 tmpHisto->GetXaxis()->SetBinLabel(4,
"After area");
92 tmpHisto2D = AddHistogram2D<TH2D>(
"hJetPtCutStages",
"Jets p_{T} distribution",
"", 500, -50., 200., 4, 0, 4,
"p_{T} (GeV/c)",
"Cut stage",
"dN^{Jets}/dp_{T}");
93 tmpHisto2D->GetYaxis()->SetBinLabel(1,
"Before cuts");
94 tmpHisto2D->GetYaxis()->SetBinLabel(2,
"After eta");
95 tmpHisto2D->GetYaxis()->SetBinLabel(3,
"After p_{T}");
96 tmpHisto2D->GetYaxis()->SetBinLabel(4,
"After area");
98 AddHistogram1D<TH1D>(
"hVertexX",
"X distribution of the vertex",
"", 2000, -1., 1.,
"#Delta x(cm)",
"dN^{Events}/dx");
99 AddHistogram1D<TH1D>(
"hVertexY",
"Y distribution of the vertex",
"", 2000, -1., 1.,
"#Delta y(cm)",
"dN^{Events}/dy");
100 AddHistogram2D<TH2D>(
"hVertexXY",
"XY distribution of the vertex",
"COLZ", 500, -1., 1., 500, -1., 1.,
"#Delta x(cm)",
"#Delta y(cm)",
"dN^{Events}/dxdy");
101 AddHistogram1D<TH1D>(
"hVertexZ",
"Z distribution of the vertex (after std. vertex cut)",
"", 200, -20., 20.,
"#Delta z(cm)",
"dN^{Events}/dz");
102 AddHistogram1D<TH1D>(
"hVertexR",
"R distribution of the vertex",
"", 100, 0., 1.,
"#Delta r(cm)",
"dN^{Events}/dr");
103 AddHistogram1D<TH1D>(
"hCentralityV0M",
"Centrality distribution V0M",
"", fNumberOfCentralityBins, 0., 100.,
"Centrality",
"dN^{Events}");
104 AddHistogram1D<TH1D>(
"hCentralityCL1",
"Centrality distribution CL1",
"", fNumberOfCentralityBins, 0., 100.,
"Centrality",
"dN^{Events}");
105 AddHistogram1D<TH1D>(
"hCentralityV0A",
"Centrality distribution V0A",
"", fNumberOfCentralityBins, 0., 100.,
"Centrality",
"dN^{Events}");
106 AddHistogram1D<TH1D>(
"hCentralityV0C",
"Centrality distribution V0C",
"", fNumberOfCentralityBins, 0., 100.,
"Centrality",
"dN^{Events}");
107 AddHistogram1D<TH1D>(
"hCentralityZNA",
"Centrality distribution ZNA",
"", fNumberOfCentralityBins, 0., 100.,
"Centrality",
"dN^{Events}");
112 AddHistogram2D<TH2D>(
"hJetPtNoBgrdSubtracted",
"Jets p_{T} distribution, no bgrd. subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
113 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedExternal",
"Jets p_{T} distribution, external bgrd. subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
114 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedPP",
"Jets p_{T} distribution, pp background subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
115 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedExternal_Phi1",
"Jets p_{T} distribution, external background (Improved CMS) subtracted (1st part of azimuth)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
116 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedExternal_Phi2",
"Jets p_{T} distribution, external background (Improved CMS) subtracted (2nd part of azimuth)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
117 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTImprovedCMS",
"Jets p_{T} distribution, KT background (Improved CMS) subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
118 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTImprovedCMS_Biased_10GeV",
"Jets p_{T} distribution, KT background (Improved CMS) subtracted, leading track bias 10 GeV",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
119 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTImprovedCMS_Biased_5GeV",
"Jets p_{T} distribution, KT background (Improved CMS) subtracted, leading track bias 5 GeV",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
120 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTImprovedCMS_Biased_2GeV",
"Jets p_{T} distribution, KT background (Improved CMS) subtracted, leading track bias 2 GeV",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
121 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedTR",
"Jets p_{T} distribution, TR background (Cone R=0.6 around jets excluded) subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
122 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTPbPb",
"Jets p_{T} distribution, KT background (PbPb w/o ghosts) subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
123 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTPbPbWithGhosts",
"Jets p_{T} distribution, KT background (PbPb w/ ghosts) subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
124 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTCMS",
"Jets p_{T} distribution, KT background (CMS) subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
125 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTMean",
"Jets p_{T} distribution, KT background (Mean) subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
126 AddHistogram2D<TH2D>(
"hJetPtBgrdSubtractedKTTrackLike",
"Jets p_{T} distribution, KT background (track-like) subtracted",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
128 AddHistogram2D<TProfile2D>(
"hJetPtSubtractedRhoExternal",
"Mean subtracted KT (External) background from jets",
"COLZ", 600, 0, 150, fNumberOfCentralityBins, 0, 100,
"Jet p_{T}",
"Centrality",
"#rho mean");
129 AddHistogram2D<TProfile2D>(
"hJetPtSubtractedRhoKTImprovedCMS",
"Mean subtracted KT (CMS w/o signal) background from jets",
"COLZ", 600, 0, 150, fNumberOfCentralityBins, 0, 100,
"Jet p_{T}",
"Centrality",
"#rho mean");
130 AddHistogram2D<TProfile2D>(
"hJetPtSubtractedRhoPP",
"Mean subtracted KT (pp from Michal) background from jets",
"COLZ", 600, 0, 150, fNumberOfCentralityBins, 0, 100,
"Jet p_{T}",
"Centrality",
"#rho mean");
133 AddHistogram2D<TH2D>(
"hJetConstituentPt0GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 0 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
134 AddHistogram2D<TH2D>(
"hJetConstituentPt1GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 1 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
135 AddHistogram2D<TH2D>(
"hJetConstituentPt2GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 2 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
136 AddHistogram2D<TH2D>(
"hJetConstituentPt3GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 3 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
137 AddHistogram2D<TH2D>(
"hJetConstituentPt4GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 4 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
138 AddHistogram2D<TH2D>(
"hJetConstituentPt5GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 5 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
139 AddHistogram2D<TH2D>(
"hJetConstituentPt7GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 7 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
140 AddHistogram2D<TH2D>(
"hJetConstituentPt10GeV",
"Jet constituents p_{T} distribution (p_{T,jet} > 10 GeV)",
"", 500, -50., 200., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
141 AddHistogram2D<TH2D>(
"hJetConstituentPtVsJetPt",
"Jet constituents p_{T} distribution",
"", 500, -50., 200., 200, 0, 200,
"#it{p}_{T} (GeV/c)",
"#it{p}_{T}^{jet} (GeV/c)",
"dN^{Tracks}/dp_{T}");
142 AddHistogram1D<TH1D>(
"hJetCountAll",
"Number of Jets",
"", 200, 0., 200.,
"N jets",
"dN^{Events}/dN^{Jets}");
143 AddHistogram1D<TH1D>(
"hJetCountAccepted",
"Number of accepted Jets",
"", 200, 0., 200.,
"N jets",
"dN^{Events}/dN^{Jets}");
144 AddHistogram2D<TH2D>(
"hJetCount",
"Correlation jets/accepted jets",
"", 200, 0., 200., 200, 0., 200.,
"N jets",
"N jets accepted",
"d^{2}N^{Events}/dN^{Jets dN^{Jets, acc}}");
145 AddHistogram1D<TH1D>(
"hLeadingJetPt",
"Leading jet p_{T}",
"", 500, -50., 200.,
"p_{T} (GeV/c)",
"dN^{Jets}/dp_{T}");
146 AddHistogram1D<TH1D>(
"hSecondLeadingJetPt",
"Second leading jet p_{T}",
"", 500, -50., 200.,
"p_{T} (GeV/c)",
"dN^{Jets}/dp_{T}");
147 AddHistogram1D<TH1D>(
"hCorrectedLeadingJetPt",
"Corrected leading jet p_{T}",
"", 500, -50., 200.,
"p_{T} (GeV/c)",
"dN^{Jets}/dp_{T}");
148 AddHistogram1D<TH1D>(
"hCorrectedSecondLeadingJetPt",
"Corrected second leading jet p_{T}",
"", 500, -50., 200.,
"p_{T} (GeV/c)",
"dN^{Jets}/dp_{T}");
149 AddHistogram1D<TH1D>(
"hJetDeltaPhi",
"Jets combinatorial #Delta #phi",
"", 250, 0., TMath::Pi(),
"#Delta #phi",
"dN^{Jets}/d(#Delta #phi)");
150 AddHistogram1D<TH1D>(
"hLeadingJetDeltaPhi",
"1st and 2nd leading jet #Delta #phi",
"", 250, 0., TMath::Pi(),
"#Delta #phi",
"dN^{Jets}/d(#Delta #phi)");
154 AddHistogram2D<TH2D>(
"hKTBackgroundExternal",
"KT background density (External task)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
155 AddHistogram2D<TH2D>(
"hKTBackgroundExternalVsPt",
"KT background density (External task)",
"LEGO2", 400, 0., 40., 200, 0, 200,
"#rho (GeV/c)",
"Raw jet p_{T}",
"dN^{Events}/d#rho");
156 AddHistogram2D<TH2D>(
"hKTBackgroundExternal20GeV",
"KT background density (External task, jet p_{T} > 20 GeV)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
157 AddHistogram2D<TH2D>(
"hKTBackgroundImprovedCMS",
"KT background density (Improved CMS approach)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
158 AddHistogram2D<TH2D>(
"hPPBackground",
"PP background density (Michals approach)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
159 AddHistogram2D<TH2D>(
"hKTBackgroundPbPb",
"KT background density (PbPb approach, no ghosts)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
160 AddHistogram2D<TH2D>(
"hKTBackgroundPbPbWithGhosts",
"KT background density (PbPb approach w/ ghosts)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
161 AddHistogram2D<TH2D>(
"hKTBackgroundCMS",
"KT background density (CMS approach)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
162 AddHistogram2D<TH2D>(
"hKTBackgroundMean",
"KT background density (Mean approach)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
163 AddHistogram2D<TH2D>(
"hKTBackgroundTrackLike",
"KT background density (Track-like approach)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
164 AddHistogram2D<TH2D>(
"hTRBackgroundNoExcl",
"TR background density (No signal excluded)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
165 AddHistogram2D<TH2D>(
"hTRBackgroundCone02",
"TR background density (Cones R=0.2 around signal jets excluded)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
166 AddHistogram2D<TH2D>(
"hTRBackgroundCone04",
"TR background density (Cones R=0.4 around signal jets excluded)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
167 AddHistogram2D<TH2D>(
"hTRBackgroundCone06",
"TR background density (Cones R=0.6 around signal jets excluded)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
168 AddHistogram2D<TH2D>(
"hTRBackgroundCone08",
"TR background density (Cones R=0.8 around signal jets excluded)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
169 AddHistogram2D<TH2D>(
"hTRBackgroundExact",
"TR background density (signal jets exactly excluded)",
"LEGO2", 400, 0., 40., fNumberOfCentralityBins, 0, 100,
"#rho (GeV/c)",
"Centrality",
"dN^{Events}/d#rho");
172 AddHistogram2D<TH2D>(
"hDeltaPtPP",
"Background fluctuations #delta p_{T} (PP approach)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
173 AddHistogram2D<TH2D>(
"hDeltaPtExternalBgrd",
"Background fluctuations #delta p_{T} (KT, External)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
174 AddHistogram2D<TH2D>(
"hDeltaPtExternalBgrdVsPt",
"Background fluctuations #delta p_{T} (KT, External, in p_{T} bins)",
"", 1801, -40.0, 80.0, 200, 0, 200,
"#delta p_{T} (GeV/c)",
"Raw jet p_{T}",
"dN^{Jets}/d#delta p_{T}");
175 AddHistogram2D<TH2D>(
"hDeltaPtExternalBgrdPartialExclusion",
"Background fluctuations #delta p_{T} (KT, External, partial jet exclusion)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
176 AddHistogram2D<TH2D>(
"hDeltaPtKTImprovedCMS",
"Background fluctuations #delta p_{T} (KT, Improved CMS-like)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
177 AddHistogram2D<TH2D>(
"hDeltaPtNoBackground",
"Background fluctuations #delta p_{T} (No background)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
178 AddHistogram2D<TH2D>(
"hDeltaPtKTPbPb",
"Background fluctuations #delta p_{T} (KT, PbPb w/o ghosts)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
179 AddHistogram2D<TH2D>(
"hDeltaPtKTPbPbWithGhosts",
"Background fluctuations #delta p_{T} (KT, PbPb w/ ghosts)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
180 AddHistogram2D<TH2D>(
"hDeltaPtKTCMS",
"Background fluctuations #delta p_{T} (KT, CMS-like)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
181 AddHistogram2D<TH2D>(
"hDeltaPtKTMean",
"Background fluctuations #delta p_{T} (KT, Mean)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
182 AddHistogram2D<TH2D>(
"hDeltaPtKTTrackLike",
"Background fluctuations #delta p_{T} (KT, track-like)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
183 AddHistogram2D<TH2D>(
"hDeltaPtTR",
"Background fluctuations #delta p_{T} (TR, cone R=0.6)",
"", 1801, -40.0, 80.0, fNumberOfCentralityBins, 0, 100,
"#delta p_{T} (GeV/c)",
"Centrality",
"dN^{Jets}/d#delta p_{T}");
186 AddHistogram2D<TH2D>(
"hTrackCountAcc",
"Number of tracks in acceptance vs. centrality",
"LEGO2", 750, 0., 750., fNumberOfCentralityBins, 0, 100,
"N tracks",
"Centrality",
"dN^{Events}/dN^{Tracks}");
187 AddHistogram2D<TH2D>(
"hTrackPt",
"Tracks p_{T} distribution",
"", 1000, 0., 250., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
188 AddHistogram2D<TH2D>(
"hTrackPtNegEta",
"Tracks p_{T} distribution (negative #eta)",
"", 1000, 0., 250., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
189 AddHistogram2D<TH2D>(
"hTrackPtPosEta",
"Tracks p_{T} distribution (positive #eta)",
"", 1000, 0., 250., fNumberOfCentralityBins, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
190 AddHistogram1D<TH1D>(
"hTrackCharge",
"Charge",
"", 11, -5, 5,
"Charge (e)",
"dN^{Tracks}/dq");
191 AddHistogram1D<TH1D>(
"hTrackPhi",
"Track #phi distribution",
"", 360, 0, TMath::TwoPi(),
"#phi",
"dN^{Tracks}/d#phi");
192 AddHistogram2D<TH2D>(
"hTrackPhiEta",
"Track angular distribution",
"LEGO2", 100, 0., 2*TMath::Pi(),100, -2.5, 2.5,
"#phi",
"#eta",
"dN^{Tracks}/(d#phi d#eta)");
193 AddHistogram2D<TH2D>(
"hTrackPtPhiEta",
"Track p_{T} angular distribution",
"LEGO2", 100, 0., 2*TMath::Pi(),100, -2.5, 2.5,
"#phi",
"#eta",
"dp_{T}^{Tracks}/(d#phi d#eta)");
194 AddHistogram2D<TH2D>(
"hTrackPhiPtCut",
"Track #phi distribution for different pT cuts",
"LEGO2", 360, 0, TMath::TwoPi(), 20, 0, 20,
"#phi",
"p_{T} lower cut",
"dN^{Tracks}/d#phi dp_{T}");
195 AddHistogram2D<TH2D>(
"hTrackPhiTrackType",
"Track #phi distribution for different track types",
"LEGO2", 360, 0, TMath::TwoPi(), 3, 0, 3,
"#phi",
"Label",
"dN^{Tracks}/d#phi");
196 AddHistogram2D<TH2D>(
"hTrackPtTrackType",
"Track p_{T} distribution for different track types",
"LEGO2", 1000, 0., 250., 3, 0, 3,
"p_{T} (GeV/c)",
"Label",
"dN^{Tracks}/dp_{T}");
197 AddHistogram2D<TH2D>(
"hTrackEta",
"Track #eta distribution",
"COLZ", 180, fMinEta, fMaxEta, fNumberOfCentralityBins, 0., 100.,
"#eta",
"Centrality",
"dN^{Tracks}/d#eta");
200 AddHistogram1D<TH1D>(
"hRawJetArea",
"Jets area distribution w/o area cut",
"", 200, 0., 2.,
"Area",
"dN^{Jets}/dA");
201 AddHistogram2D<TH2D>(
"hJetArea",
"Jets area distribution",
"COLZ", 200, 0., 2., 500, -50., 200,
"Area",
"Jet p_{T}",
"dN^{Jets}/dA");
202 AddHistogram2D<TH2D>(
"hRawJetPhiEta",
"Raw Jets angular distribution w/o #eta cut",
"LEGO2", 360, 0., 2*TMath::Pi(),100, -1.0, 1.0,
"#phi",
"#eta",
"dN^{Jets}/(d#phi d#eta)");
203 AddHistogram2D<TH2D>(
"hJetEta",
"Jets #eta distribution",
"COLZ", 180, fMinEta, fMaxEta, fNumberOfCentralityBins, 0., 100.,
"#eta",
"Centrality",
"dN^{Jets}/d#eta");
204 AddHistogram2D<TH2D>(
"hJetEta2GeVTracks",
"Jets #eta distribution, track p_{T} > 2 GeV",
"COLZ", 180, fMinEta, fMaxEta, fNumberOfCentralityBins, 0., 100.,
"#eta",
"Centrality",
"dN^{Jets}/d#eta");
205 AddHistogram2D<TH2D>(
"hJetEta4GeVTracks",
"Jets #eta distribution, track p_{T} > 4 GeV",
"COLZ", 180, fMinEta, fMaxEta, fNumberOfCentralityBins, 0., 100.,
"#eta",
"Centrality",
"dN^{Jets}/d#eta");
206 AddHistogram2D<TH2D>(
"hJetPhiEta",
"Jets angular distribution",
"LEGO2", 360, 0., 2*TMath::Pi(),100, -1.0, 1.0,
"#phi",
"#eta",
"dN^{Jets}/(d#phi d#eta)");
207 AddHistogram2D<TH2D>(
"hJetPtPhiEta",
"Jets p_{T} angular distribution",
"LEGO2", 360, 0., 2*TMath::Pi(),100, -1.0, 1.0,
"#phi",
"#eta",
"dp_{T}^{Jets}/(d#phi d#eta)");
208 AddHistogram2D<TH2D>(
"hJetPtVsConstituentCount",
"Jets number of constituents vs. jet p_{T}",
"COLZ", 400, 0., 200., 100, 0., 100.,
"p_{T}",
"N^{Tracks}",
"dN^{Jets}/(dp_{T} dN^{tracks})");
212 if(fAnalyzeJetConstituents)
216 Int_t bins [5] = { 30, 50, 30, 30, 30};
217 Double_t minEdges[5] = { 0, 0.1, 0, 0, 0};
218 Double_t maxEdges[5] = { 150, 150, 30, 30, 30};
219 TString axisName[5] = {
"jet p_{T}",
"Constituent p_{T}",
"Constituent count",
"RC constituent count",
"PC constituent count"};
220 TString axisTitle[5] = {
"jet p_{T}",
"Constituent p_{T}",
"Constituent count",
"RC constituent count",
"PC constituent count"};
221 THnF * histJetConstituents =
new THnF(
"hJetConstituents",
"Jet constituent count/p_{T} in jet, RC, and PC", 5, bins, minEdges, maxEdges);
222 BinLogAxis(histJetConstituents,1);
223 for (
Int_t iaxis=0; iaxis<5;iaxis++){
224 histJetConstituents->GetAxis(iaxis)->SetName(axisName[iaxis]);
225 histJetConstituents->GetAxis(iaxis)->SetTitle(axisTitle[iaxis]);
227 fCurrentOutputList->Add(histJetConstituents);
232 Int_t bins [4] = { 30, 50, 30, 50};
233 Double_t minEdges[4] = { 0, 0.1, 0, 0};
234 Double_t maxEdges[4] = { 150, 150, 30, 0.5};
235 TString axisName[4] = {
"jet p_{T}",
"Constituent p_{T}",
"Constituent count",
"Distance from jet axis"};
236 TString axisTitle[4] = {
"jet p_{T}",
"Constituent p_{T}",
"Constituent count",
"Distance from jet axis"};
237 THnF * histJetConstituentDistance =
new THnF(
"hJetConstituentDistance",
"Jet constituent distance vs. jet and constituent p_{T}", 4, bins, minEdges, maxEdges);
238 BinLogAxis(histJetConstituentDistance,1);
239 for (
Int_t iaxis=0; iaxis<4;iaxis++){
240 histJetConstituentDistance->GetAxis(iaxis)->SetName(axisName[iaxis]);
241 histJetConstituentDistance->GetAxis(iaxis)->SetTitle(axisTitle[iaxis]);
243 fCurrentOutputList->Add(histJetConstituentDistance);
248 if(fAnalyzeJetProfile)
250 SetCurrentOutputList(1);
251 AddHistogram2D<TH2D>(
"hJetProfile10GeV",
"Jet profile, cone p_{T}/jet p_{T} vs. jet radius, jet p_{T} > 10 GeV",
"", 12, 0, 0.6,200, 0., 2.,
"Cone radius",
"dN^{Jets}/dR",
"Ratio");
252 AddHistogram2D<TH2D>(
"hJetProfile20GeV",
"Jet profile, cone p_{T}/jet p_{T} vs. jet radius, jet p_{T} > 20 GeV",
"", 12, 0, 0.6,200, 0., 2.,
"Cone radius",
"dN^{Jets}/dR",
"Ratio");
253 AddHistogram2D<TH2D>(
"hJetProfile30GeV",
"Jet profile, cone p_{T}/jet p_{T} vs. jet radius, jet p_{T} > 30 GeV",
"", 12, 0, 0.6,200, 0., 2.,
"Cone radius",
"dN^{Jets}/dR",
"Ratio");
254 AddHistogram2D<TH2D>(
"hJetProfile40GeV",
"Jet profile, cone p_{T}/jet p_{T} vs. jet radius, jet p_{T} > 40 GeV",
"", 12, 0, 0.6,200, 0., 2.,
"Cone radius",
"dN^{Jets}/dR",
"Ratio");
255 AddHistogram2D<TH2D>(
"hJetProfile50GeV",
"Jet profile, cone p_{T}/jet p_{T} vs. jet radius, jet p_{T} > 50 GeV",
"", 12, 0, 0.6,200, 0., 2.,
"Cone radius",
"dN^{Jets}/dR",
"Ratio");
256 AddHistogram2D<TH2D>(
"hJetProfile60GeV",
"Jet profile, cone p_{T}/jet p_{T} vs. jet radius, jet p_{T} > 60 GeV",
"", 12, 0, 0.6,200, 0., 2.,
"Cone radius",
"dN^{Jets}/dR",
"Ratio");
257 AddHistogram2D<TH2D>(
"hJetProfile70GeV",
"Jet profile, cone p_{T}/jet p_{T} vs. jet radius, jet p_{T} > 70 GeV",
"", 12, 0, 0.6,200, 0., 2.,
"Cone radius",
"dN^{Jets}/dR",
"Ratio");
258 SetCurrentOutputList(0);
262 if(fAnalyzeTrackcuts)
264 SetCurrentOutputList(2);
266 AddCutHistogram(
"hCutsNumberClusters",
"Trackcut histogram: Number of clusters",
"Number of clusters", 40, 20, 160);
267 AddCutHistogram(
"hCutsChi2TPC",
"Trackcut histogram: #chi^{2} per TPC cluster",
"#chi^{2}", 40, 0, 8);
268 AddCutHistogram(
"hCutsChi2ITS",
"Trackcut histogram: #chi^{2} per ITS cluster",
"#chi^{2}", 25, 0., 50);
269 AddCutHistogram(
"hCutsChi2Constrained",
"Trackcut histogram: #chi^{2} for global constrained tracks",
"#chi^{2}", 60, 0, 60);
270 AddCutHistogram(
"hCutsDCAXY",
"Trackcut histogram: Max. DCA xy for prim. vertex",
"DCA xy", 20, 0, 4);
271 AddCutHistogram(
"hCutsDCAZ",
"Trackcut histogram: Max. DCA z for prim. vertex",
"DCA z", 20, 0, 4);
272 AddCutHistogram(
"hCutsSPDHit",
"Trackcut histogram: Hit in SPD layer",
"Hit or not", 2, -0.5, 1.5);
273 AddCutHistogram(
"hCutsNumberCrossedRows",
"Trackcut histogram: Number of crossed rows",
"Number of crossed rows", 40, 20, 160);
274 AddCutHistogram(
"hCutsNumberCrossedRowsOverFindableClusters",
"Trackcut histogram: Number of crossed rows over findable clusters",
"Number of crossed rows over findable clusters", 26, 0.4, 1.8);
275 AddCutHistogram(
"hCutsSharedTPC",
"Trackcut histogram: Shared TPC clusters",
"Shared fraction", 40, 0, 1);
276 AddCutHistogram(
"hCutsTPCRefit",
"Trackcut histogram: TPC refit",
"Has TPC refit", 2, -0.5, 1.5);
277 AddCutHistogram(
"hCutsAcceptKinks",
"Trackcut histogram: Kink in track",
"Kink in track", 2, -0.5, 1.5);
278 AddCutHistogram(
"hCutsTPCLength",
"Trackcut histogram: TPC length",
"TPC length", 40, 0, 170);
279 AddCutHistogram(
"hCutsTrackConstrained",
"Trackcut histogram: Tracks constrained to vertex",
"Track is constrained", 2, -0.5, 1.5);
280 AddCutHistogram(
"hCutsTPCITSMatching",
"Trackcut histogram: TPC-ITS matching",
"Track is matched", 2, -0.5, 1.5);
281 AddCutHistogram(
"hCutsClustersPtDependence",
"Trackcut histogram: pT dependence for number of clusters/crossed rows cut.",
"Value at 20 GeV: 90, 100, 110, or 120", 4, -0.5, 3.5);
284 const double ptMax=50;
285 AddHistogram2D<TH2D>(
"hCutsITSTPC_NMatch",
"Number matches",
"", nbPt,0,
ptMax,kMaxMatch+1,-0.5,kMaxMatch+0.5,
"p_{T}",
"N matches");
286 AddHistogram2D<TH2D>(
"hCutsITSTPC_BestMatch",
"Best match chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
287 AddHistogram2D<TH2D>(
"hCutsITSTPC_BestMatch_cuts",
"Best match chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
288 AddHistogram2D<TH2D>(
"hCutsITSTPC_AllMatch",
"All matches chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
289 AddHistogram2D<TH2D>(
"hCutsITSTPC_AllMatchGlo",
"All matches chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
290 AddHistogram2D<TH2D>(
"hCutsITSTPC_PtCorr_ITSTPC",
"PtCorr",
"", nbPt,0,
ptMax,nbPt,0,
ptMax,
"p_{T}",
"p_{T}");
291 AddHistogram2D<TH2D>(
"hCutsITSTPC_dPtRel_ITSTPC",
"dPt/pt",
"", nbPt,0,
ptMax,2*nbPt+1,-0.4*
ptMax,0.4*
ptMax,
"p_{T}",
"1/pt");
292 AddHistogram2D<TH2D>(
"hCutsITSTPC_dInvPtRel_ITSTPC",
"pt*dPt^{-1}",
"", nbPt,0,
ptMax,2*nbPt+1,-0.4*
ptMax,0.4*
ptMax,
"p_{T}",
"1/pt");
294 AddHistogram2D<TH2D>(
"hCutsITSTPC_NMatchBg",
"Number matches",
"", nbPt,0,
ptMax,kMaxMatch+1,-0.5,kMaxMatch+0.5,
"p_{T}",
"N matches");
295 AddHistogram2D<TH2D>(
"hCutsITSTPC_BestMatchBg",
"Best match chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
296 AddHistogram2D<TH2D>(
"hCutsITSTPC_BestMatchBg_cuts",
"Best match chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
297 AddHistogram2D<TH2D>(
"hCutsITSTPC_AllMatchBg",
"All matches chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
298 AddHistogram2D<TH2D>(
"hCutsITSTPC_AllMatchGloBg",
"All matches chi2",
"", nbPt,0,
ptMax,2*int(TMath::Max(1.1,kMaxChi2)),0,kMaxChi2,
"p_{T}",
"chi2");
299 AddHistogram2D<TH2D>(
"hCutsITSTPC_PtCorrBg_ITSTPC",
"PtCorr",
"", nbPt,0,
ptMax,nbPt,0,
ptMax,
"p_{T}",
"p_{T}");
300 AddHistogram2D<TH2D>(
"hCutsITSTPC_dPtRelBg_ITSTPC",
"dPt/pt",
"", nbPt,0,
ptMax,2*nbPt+1,-0.4*
ptMax,0.4*
ptMax,
"p_{T}",
"1/pt");
301 AddHistogram2D<TH2D>(
"hCutsITSTPC_dInvPtRelBg_ITSTPC",
"pt*dPt^{-1}",
"", nbPt,0,
ptMax,2*nbPt+1,-0.4*
ptMax,0.4*
ptMax,
"p_{T}",
"1/pt");
303 SetCurrentOutputList(0);
306 PostData(1, fOutputLists[0]);
307 if(fAnalyzeJetProfile)
308 PostData(2, fOutputLists[1]);
309 if(fAnalyzeTrackcuts)
311 if(fAnalyzeJetProfile)
312 PostData(3, fOutputLists[2]);
314 PostData(2, fOutputLists[1]);
320 AliAnalysisTaskChargedJetsPA::AliAnalysisTaskChargedJetsPA(
const char *name,
const char* trackArrayName,
const char* jetArrayName,
const char* backgroundJetArrayName,
Bool_t analyzeJetProfile,
Bool_t analyzeTrackcuts) :
AliAnalysisTaskSE(name), fOutputLists(), fCurrentOutputList(0), fDoJetAnalysis(1), fAnalyzeJetProfile(0), fAnalyzeTrackcuts(0), fAnalyzeJetConstituents(1), fParticleLevel(0), fUseDefaultVertexCut(1), fUsePileUpCut(1), fSetCentralityToOne(0), fNoExternalBackground(0), fBackgroundForJetProfile(0), fPartialAnalysisNParts(1), fPartialAnalysisIndex(0), fJetArray(0), fTrackArray(0), fBackgroundJetArray(0), fJetArrayName(), fTrackArrayName(), fBackgroundJetArrayName(), fRhoTaskName(), fRandConeRadius(0.4), fRandConeNumber(10), fSignalJetRadius(0.4), fBackgroundJetRadius(0.4), fNumberExcludedJets(-1), fMinEta(-0.9), fMaxEta(0.9), fMinJetEta(-0.5), fMaxJetEta(0.5), fMinTrackPt(0.150), fMinJetPt(5.0), fMinJetArea(0.5), fMinBackgroundJetPt(0.0), fMinNCrossedRows(70), fUsePtDepCrossedRowsCut(0), fNumberOfCentralityBins(20), fCentralityType(
"V0A"), fMatchTr(), fMatchChi(), fPrimaryVertex(0), fFirstLeadingJet(0), fSecondLeadingJet(0), fFirstLeadingKTJet(0), fSecondLeadingKTJet(0), fNumberSignalJets(0), fNumberSignalJetsAbove5GeV(0), fRandom(0), fHelperClass(0), fInitialized(0), fTaskInstanceCounter(0), fIsDEBUG(0), fIsPA(1), fNoTerminate(1), fEventCounter(0), fTempExcludedRCs(0), fTempAllRCs(1), fTempOverlapCounter(0), fTempMeanExclusionProbability(0), fHybridESDtrackCuts(0), fHybridESDtrackCuts_variedPtDep(0), fHybridESDtrackCuts_variedPtDep2(0)
323 AliInfo(
"Calling constructor.");
327 static Int_t instance = 0;
342 DefineOutput(1, TList::Class());
344 DefineOutput(2, TList::Class());
348 DefineOutput(3, TList::Class());
350 DefineOutput(2, TList::Class());
354 AliInfo(
"Constructor done.");
361 AliESDtrackCuts* commonTrackCuts =
new AliESDtrackCuts;
362 commonTrackCuts->SetMaxChi2PerClusterTPC(4);
363 commonTrackCuts->SetMaxChi2PerClusterITS(36);
364 commonTrackCuts->SetAcceptKinkDaughters(kFALSE);
365 commonTrackCuts->SetRequireTPCRefit(kTRUE);
366 commonTrackCuts->SetRequireITSRefit(kTRUE);
367 commonTrackCuts->SetRequireSigmaToVertex(kFALSE);
368 commonTrackCuts->SetMaxDCAToVertexXY(2.4);
369 commonTrackCuts->SetMaxDCAToVertexZ(3.2);
370 commonTrackCuts->SetDCAToVertex2D(kTRUE);
371 commonTrackCuts->SetMaxFractionSharedTPCClusters(0.4);
372 commonTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
373 commonTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
375 AliESDtrackCuts* fTrackCutsPA_global = NULL;
376 AliESDtrackCuts* fTrackCutsPA_complementary = NULL;
377 AliESDtrackCuts* fTrackCutsPP_global = NULL;
378 AliESDtrackCuts* fTrackCutsPP_complementary = NULL;
379 AliESDtrackCuts* fTrackCutsPP_global_variedPtDep = NULL;
380 AliESDtrackCuts* fTrackCutsPP_complementary_variedPtDep = NULL;
381 AliESDtrackCuts* fTrackCutsPP_global_variedPtDep2 = NULL;
382 AliESDtrackCuts* fTrackCutsPP_complementary_variedPtDep2 = NULL;
385 fTrackCutsPA_global =
static_cast<AliESDtrackCuts*
>(commonTrackCuts->Clone(
"fTrackCutsPA_global"));
387 fTrackCutsPA_global->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
388 fTrackCutsPA_complementary =
static_cast<AliESDtrackCuts*
>(fTrackCutsPA_global->Clone(
"fTrackCutsPA_complementary"));
389 fTrackCutsPA_complementary->SetRequireITSRefit(kFALSE);
390 fTrackCutsPA_complementary->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
393 fTrackCutsPP_global =
static_cast<AliESDtrackCuts*
>(commonTrackCuts->Clone(
"fTrackCutsPP_global"));
394 TFormula *f1NClustersTPCLinearPtDep =
new TFormula(
"f1NClustersTPCLinearPtDep",
"70.+30./20.*x");
395 fTrackCutsPP_global->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep,20.);
396 fTrackCutsPP_global->SetMinNClustersTPC(70);
397 fTrackCutsPP_global->SetRequireTPCStandAlone(kTRUE);
398 fTrackCutsPP_global->SetEtaRange(-0.9,0.9);
399 fTrackCutsPP_global->SetPtRange(0.15, 1e15);
400 fTrackCutsPP_complementary =
static_cast<AliESDtrackCuts*
>(fTrackCutsPP_global->Clone(
"fTrackCutsPP_complementary"));
401 fTrackCutsPP_complementary->SetRequireITSRefit(kFALSE);
402 fTrackCutsPP_complementary->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
406 fTrackCutsPP_global_variedPtDep =
static_cast<AliESDtrackCuts*
>(commonTrackCuts->Clone(
"fTrackCutsPP_global_variedPtDep"));
407 TFormula *f1NClustersTPCLinearPtDep2 =
new TFormula(
"f1NClustersTPCLinearPtDep2",
"70.+15./20.*x");
408 fTrackCutsPP_global_variedPtDep->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep2,20.);
409 fTrackCutsPP_global_variedPtDep->SetMinNClustersTPC(70);
410 fTrackCutsPP_global_variedPtDep->SetRequireTPCStandAlone(kTRUE);
411 fTrackCutsPP_global_variedPtDep->SetEtaRange(-0.9,0.9);
412 fTrackCutsPP_global_variedPtDep->SetPtRange(0.15, 1e15);
413 fTrackCutsPP_complementary_variedPtDep =
static_cast<AliESDtrackCuts*
>(fTrackCutsPP_global_variedPtDep->Clone(
"fTrackCutsPP_complementary_variedPtDep"));
414 fTrackCutsPP_complementary_variedPtDep->SetRequireITSRefit(kFALSE);
415 fTrackCutsPP_complementary_variedPtDep->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
419 fTrackCutsPP_global_variedPtDep2 =
static_cast<AliESDtrackCuts*
>(commonTrackCuts->Clone(
"fTrackCutsPP_global_variedPtDep2"));
420 TFormula *f1NClustersTPCLinearPtDep3 =
new TFormula(
"f1NClustersTPCLinearPtDep3",
"70.+45./20.*x");
421 fTrackCutsPP_global_variedPtDep2->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep3,20.);
422 fTrackCutsPP_global_variedPtDep2->SetMinNClustersTPC(70);
423 fTrackCutsPP_global_variedPtDep2->SetRequireTPCStandAlone(kTRUE);
424 fTrackCutsPP_global_variedPtDep2->SetEtaRange(-0.9,0.9);
425 fTrackCutsPP_global_variedPtDep2->SetPtRange(0.15, 1e15);
426 fTrackCutsPP_complementary_variedPtDep2 =
static_cast<AliESDtrackCuts*
>(fTrackCutsPP_global_variedPtDep2->Clone(
"fTrackCutsPP_complementary_variedPtDep2"));
427 fTrackCutsPP_complementary_variedPtDep2->SetRequireITSRefit(kFALSE);
428 fTrackCutsPP_complementary_variedPtDep2->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
449 delete commonTrackCuts;
459 AliError(
"For cut analysis, ESDs must be processed!");
466 for (
Int_t i=0;i < fESD->GetNumberOfTracks(); i++)
468 AliESDtrack* track = fESD->GetTrack(i);
476 Double_t nclsITS = track->GetITSclusters(0);
479 Double_t ncrTPC = track->GetTPCCrossedRows();
481 if(track->GetTPCNclsF())
482 nCRoverFC = track->GetTPCCrossedRows()/track->GetTPCNclsF();
487 chi2ITS = track->GetITSchi2()/nclsITS;
489 Double_t chi2TPCConstrained = track->GetChi2TPCConstrainedVsGlobal(static_cast<const AliESDVertex*>(
fPrimaryVertex));
497 nClustersTPC = track->GetTPCNclsIter1();
499 chi2TPC = track->GetTPCchi2Iter1()/nClustersTPC;
503 nClustersTPC = track->GetTPCclusters(0);
505 chi2TPC = track->GetTPCchi2()/nClustersTPC;
509 SharedTPCClusters =
static_cast<Double_t>(track->GetTPCnclsS())/static_cast<Double_t>(nClustersTPC);
513 if (track->GetInnerParam() && track->GetESDEvent()) {
514 tpcLength = track->GetLengthInActiveZone(1, 1.8, 220, track->GetESDEvent()->GetMagneticField());
516 track->GetImpactParameters(dca, cov);
519 if((pT<0.15) || (TMath::Abs(eta)>0.9))
530 Double_t tmpThreshold90 = 70. + 20./20. * pT;
531 Double_t tmpThreshold100 = 70. + 30./20. * pT;
532 Double_t tmpThreshold110 = 70. + 40./20. * pT;
533 Double_t tmpThreshold120 = 70. + 50./20. * pT;
537 tmpThreshold90 = 70. + 20.;
538 tmpThreshold100 = 70. + 30.;
539 tmpThreshold110 = 70. + 40.;
540 tmpThreshold120 = 70. + 50.;
545 if(ncrTPC>=tmpThreshold90)
546 FillCutHistogram(
"hCutsClustersPtDependence", 0, pT, eta, phi, trackType-1);
547 if(ncrTPC>=tmpThreshold100)
548 FillCutHistogram(
"hCutsClustersPtDependence", 1, pT, eta, phi, trackType-1);
549 if(ncrTPC>=tmpThreshold110)
550 FillCutHistogram(
"hCutsClustersPtDependence", 2, pT, eta, phi, trackType-1);
551 if(ncrTPC>=tmpThreshold120)
552 FillCutHistogram(
"hCutsClustersPtDependence", 3, pT, eta, phi, trackType-1);
562 FillCutHistogram(
"hCutsClustersPtDependence", 0, pT, eta, phi, trackType-1);
566 FillCutHistogram(
"hCutsClustersPtDependence", 1, pT, eta, phi, trackType-1);
570 FillCutHistogram(
"hCutsClustersPtDependence", 2, pT, eta, phi, trackType-1);
582 FillCutHistogram(
"hCutsNumberClusters", nClustersTPC, pT, eta, phi, trackType-1);
609 FillCutHistogram(
"hCutsChi2Constrained", chi2TPCConstrained, pT, eta, phi, trackType-1);
623 FillCutHistogram(
"hCutsDCAZ", TMath::Abs(dca[1]), pT, eta, phi, trackType-1);
637 FillCutHistogram(
"hCutsDCAXY", TMath::Abs(dca[0]), pT, eta, phi, trackType-1);
650 if (track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) hasPoint = 1;
667 FillCutHistogram(
"hCutsNumberCrossedRows", ncrTPC, pT, eta, phi, trackType-1);
681 FillCutHistogram(
"hCutsNumberCrossedRowsOverFindableClusters", nCRoverFC, pT, eta, phi, trackType-1);
695 FillCutHistogram(
"hCutsSharedTPC", SharedTPCClusters, pT, eta, phi, trackType-1);
772 Bool_t isMatched = kFALSE;
785 FillCutHistogram(
"hCutsTPCITSMatching", isMatched, pT, eta, phi, trackType-1);
795 FillCutHistogram(
"hCutsTPCITSMatching", isMatched, pT, eta, phi, trackType-1);
802 Bool_t isConstrainedWithITSRefit =
static_cast<Bool_t>(track->GetConstrainedParam()) && ((track->GetStatus())&AliESDtrack::kITSrefit);
804 FillCutHistogram(
"hCutsTrackConstrained", isConstrainedWithITSRefit, pT, eta, phi, trackType-1);
819 Bool_t fExcludeMomFromChi2ITSTPC = kFALSE;
824 AliError(
"For cut analysis, ESDs must be processed!");
828 int ntr = fESD->GetNumberOfTracks();
850 if(!(hNMatch && hBestMatch && hBestMatch_cuts && hAllMatch && hAllMatchGlo && hPtCorr_ITSTPC && hdPtRel_ITSTPC && hdInvPtRel_ITSTPC && hNMatchBg && hBestMatchBg && hBestMatchBg_cuts && hAllMatchBg && hAllMatchGloBg && hdPtRelBg_ITSTPC && hdInvPtRelBg_ITSTPC))
852 cout <<
" === ERROR: At least one of the ITSTPC histograms not found! ===\n";
853 cout << Form(
" === Details: %p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p", hNMatch, hBestMatch, hBestMatch_cuts, hAllMatch, hAllMatchGlo, hPtCorr_ITSTPC, hdPtRel_ITSTPC, hdInvPtRel_ITSTPC, hNMatchBg, hBestMatchBg, hBestMatchBg_cuts, hAllMatchBg, hAllMatchGloBg, hdPtRelBg_ITSTPC, hdInvPtRelBg_ITSTPC) << endl;
858 for (
int it=0;it<ntr;it++) {
859 AliESDtrack* trSA = fESD->GetTrack(it);
860 if (!trSA->IsOn(AliESDtrack::kITSpureSA) || !trSA->IsOn(AliESDtrack::kITSrefit))
continue;
861 double pt = trSA->Pt();
866 if(TMath::Abs(etaSA)>0.8)
continue;
871 for (
int it1=0;it1<ntr;it1++){
872 if (it1==it)
continue;
874 AliESDtrack* trESD = fESD->GetTrack(it1);
875 if (!trESD->IsOn(AliESDtrack::kTPCrefit))
continue;
877 Match(trSA,trESD, nmatch, fExcludeMomFromChi2ITSTPC);
881 hNMatch->Fill(pt,nmatch);
885 hPtCorr_ITSTPC->Fill(pt,
fMatchTr[0]->Pt());
886 hdPtRel_ITSTPC->Fill(pt,(pt-
fMatchTr[0]->Pt())/pt);
887 hdInvPtRel_ITSTPC->Fill(pt,pt*( 1/pt - (1/
fMatchTr[0]->Pt()) ));
898 for (
int imt=nmatch;imt--;) {
900 if (
fMatchTr[imt]->IsOn(AliESDtrack::kITSrefit)) hAllMatchGlo->Fill(pt,
fMatchChi[imt]);
905 for (
int it1=0;it1<ntr;it1++) {
906 if (it1==it)
continue;
907 AliESDtrack* trESD = fESD->GetTrack(it1);
908 if (!trESD->IsOn(AliESDtrack::kTPCrefit))
continue;
910 Match(trSA,trESD, nmatch, fExcludeMomFromChi2ITSTPC, TMath::Pi());
914 hNMatchBg->Fill(pt,nmatch);
918 hdPtRelBg_ITSTPC->Fill(pt,(pt-
fMatchTr[0]->Pt())/pt);
919 hdInvPtRelBg_ITSTPC->Fill(pt,pt*( 1/pt - (1/
fMatchTr[0]->Pt()) ));
924 hBestMatchBg_cuts->Fill(pt,
fMatchChi[0]);
928 for (
int imt=nmatch;imt--;) {
930 if (
fMatchTr[imt]->IsOn(AliESDtrack::kITSrefit)) hAllMatchGloBg->Fill(pt,
fMatchChi[imt]);
945 AliError(
"For cut analysis, ESDs must be processed!");
949 Float_t bField = fESD->GetMagneticField();
951 const AliExternalTrackParam* trtpc0 = tr1->GetInnerParam();
953 AliExternalTrackParam trtpc(*trtpc0);
955 if (TMath::Abs(rotate)>1e-5) {
956 const double *par = trtpc.GetParameter();
957 const double *cov = trtpc.GetCovariance();
958 double alp = trtpc.GetAlpha() + rotate;
959 trtpc.Set(trtpc.GetX(),alp,par,cov);
962 if (!trtpc.Rotate(tr0->GetAlpha()))
return;
963 if (!trtpc.PropagateTo(tr0->GetX(),bField))
return;
964 double chi2 = tr0->GetPredictedChi2(&trtpc);
970 ((
double*)trtpc.GetParameter())[4] = tr0->GetParameter()[4];
971 chi2 = tr0->GetPredictedChi2(&trtpc);
991 for (ins=0;ins<nmatch;ins++)
if (chi2<
fMatchChi[ins])
break;
994 for (
int imv=nmatch;imv>ins;imv--) {
1014 AliWarning(Form(
"%s: Could not retrieve rho with name %s!", GetName(),
fRhoTaskName.Data()));
1021 return (rho->GetVal());
1036 Bool_t hasVertex = kFALSE;
1064 AliCentrality* tmpCentrality =
event->GetCentrality();
1065 Double_t centralityPercentile = -1.0;
1066 if (tmpCentrality != NULL)
1067 centralityPercentile = tmpCentrality->GetCentralityPercentile(
fCentralityType.Data());
1071 centralityPercentile = 1.0;
1073 if((centralityPercentile < 0.0) || (centralityPercentile > 101.0))
1074 AliWarning(Form(
"Centrality value not valid (c=%E)",centralityPercentile));
1135 Bool_t acceptedWithPtCut = kFALSE;
1136 Bool_t acceptedWithoutPtCut = kFALSE;
1149 acceptedWithPtCut = kTRUE;
1155 acceptedWithoutPtCut = kTRUE;
1160 return (acceptedWithPtCut);
1162 return (acceptedWithPtCut || acceptedWithoutPtCut);
1169 AliInfo(
"Starting ExecOnce.");
1178 AliWarning(Form(
"%s: Could not retrieve tracks %s!", GetName(),
fTrackArrayName.Data()));
1182 if (!cl->GetBaseClass(
"AliVParticle"))
1184 AliError(Form(
"%s: Collection %s does not contain AliVParticle objects!", GetName(),
fTrackArrayName.Data()));
1195 AliWarning(Form(
"%s: Could not retrieve jets %s!", GetName(),
fJetArrayName.Data()));
1198 if (!
fJetArray->GetClass()->GetBaseClass(
"AliEmcalJet"))
1200 AliError(Form(
"%s: Collection %s does not contain AliEmcalJet objects!", GetName(),
fJetArrayName.Data()));
1223 AliInfo(
"ExecOnce done.");
1240 Int_t jetIDArray[] = {-1, -1};
1245 Int_t jetIDArrayKT[] = {-1, -1};
1246 Float_t maxJetPtsKT[] = {0, 0};
1247 jetIDArrayKT[0] = -1;
1248 jetIDArrayKT[1] = -1;
1256 AliError(Form(
"%s: Could not receive jet %d", GetName(), i));
1262 if (jet->
Pt() > maxJetPts[0])
1264 maxJetPts[1] = maxJetPts[0];
1265 jetIDArray[1] = jetIDArray[0];
1266 maxJetPts[0] = jet->
Pt();
1269 else if (jet->
Pt() > maxJetPts[1])
1271 maxJetPts[1] = jet->
Pt();
1285 AliError(Form(
"%s: Could not receive jet %d", GetName(), i));
1291 if (jet->
Pt() > maxJetPtsKT[0])
1293 maxJetPtsKT[1] = maxJetPtsKT[0];
1294 jetIDArrayKT[1] = jetIDArrayKT[0];
1295 maxJetPtsKT[0] = jet->
Pt();
1296 jetIDArrayKT[0] = i;
1298 else if (jet->
Pt() > maxJetPtsKT[1])
1300 maxJetPtsKT[1] = jet->
Pt();
1301 jetIDArrayKT[1] = i;
1305 if (jetIDArray[0] > -1)
1307 if (jetIDArray[1] > -1)
1309 if (jetIDArrayKT[0] > -1)
1311 if (jetIDArrayKT[1] > -1)
1322 AliVTrack* tmpTrack =
static_cast<AliVTrack*
>(
fTrackArray->At(i));
1325 tmpConePt = tmpConePt + tmpTrack->Pt();
1337 AliVTrack* tmpTrack =
static_cast<AliVTrack*
>(
fTrackArray->At(i));
1340 tmpConePt = tmpConePt + tmpTrack->Pt();
1343 tmpConePt -= background * realConeArea;
1351 Int_t tmpConeCount = 0.0;
1355 AliVTrack* tmpTrack =
static_cast<AliVTrack*
>(
fTrackArray->At(i));
1361 return tmpConeCount;
1369 if (track->Phi() > (TMath::TwoPi() - (radius-phi)))
1370 trackPhi = track->Phi() - TMath::TwoPi();
1371 else if (track->Phi() < (phi+radius - TMath::TwoPi()))
1372 trackPhi = track->Phi() + TMath::TwoPi();
1374 trackPhi = track->Phi();
1376 if ( TMath::Abs(trackPhi-phi)*TMath::Abs(trackPhi-phi) + TMath::Abs(track->Eta()-eta)*TMath::Abs(track->Eta()-eta) <= radius*radius)
1388 if (jetTrack == trackIndex)
1403 if (jet1Track == jet2Track)
1414 AliInfo(
"Getting corrected jet spectra.");
1423 correctedPt = jet->
Pt() - background * jet->
Area();
1426 AliInfo(
"Got corrected jet spectra.");
1438 AliInfo(
"Getting Delta Pt.");
1453 Bool_t coneValid = kTRUE;
1458 if(overlappingJetExclusionProbability)
1471 if ( tmpDeltaPhi*tmpDeltaPhi + (tmpRandConeEta-tmpJet->
Eta())*(tmpRandConeEta-tmpJet->
Eta()) <= fRandConeRadius*fRandConeRadius )
1489 deltaPt =
GetConePt(tmpRandConeEta,tmpRandConePhi,fRandConeRadius) - (rho*fRandConeRadius*fRandConeRadius*TMath::Pi());
1492 AliInfo(
"Got Delta Pt.");
1501 AliInfo(
"Getting ALL KT background density.");
1505 static Double_t tmpRhoPbPbWithGhosts[1024];
1508 static Double_t tmpRhoImprovedCMS[1024];
1516 rhoPbPbWithGhosts = 0.0;
1518 rhoImprovedCMS = 0.0;
1522 Int_t rhoPbPbJetCount = 0;
1523 Int_t rhoPbPbWithGhostsJetCount = 0;
1524 Int_t rhoCMSJetCount = 0;
1525 Int_t rhoImprovedCMSJetCount = 0;
1526 Int_t rhoMeanJetCount = 0;
1530 if(numberExcludeLeadingJets==-1)
1541 AliError(Form(
"%s: Could not receive jet %d", GetName(), i));
1545 tmpSummedArea += backgroundJet->
Area();
1546 if(backgroundJet->
Pt() > 0.150)
1547 tmpCoveredArea += backgroundJet->
Area();
1553 Bool_t isOverlapping = kFALSE;
1554 for(
Int_t j=0;j<numberExcludeLeadingJets;j++)
1560 if(signalJet->
Pt() < 5.0)
1565 isOverlapping = kTRUE;
1571 if(backgroundJet->
Area())
1572 tmpRho = backgroundJet->
Pt() / backgroundJet->
Area();
1577 tmpRhoPbPbWithGhosts[rhoPbPbWithGhostsJetCount] = tmpRho;
1578 rhoPbPbWithGhostsJetCount++;
1581 if(backgroundJet->
Pt() > 0.150)
1584 tmpRhoCMS[rhoCMSJetCount] = tmpRho;
1590 tmpRhoImprovedCMS[rhoImprovedCMSJetCount] = tmpRho;
1591 rhoImprovedCMSJetCount++;
1597 tmpRhoPbPb[rhoPbPbJetCount] = tmpRho;
1606 tmpRhoMean[rhoMeanJetCount] = tmpRho;
1610 tmpPtTrackLike += backgroundJet->
Pt();
1611 tmpAreaTrackLike += backgroundJet->
Area();
1616 if (tmpAreaTrackLike > 0)
1617 rhoTrackLike = tmpPtTrackLike/tmpAreaTrackLike;
1618 if (rhoPbPbJetCount > 0)
1619 rhoPbPb = TMath::Median(rhoPbPbJetCount, tmpRhoPbPb);
1620 if (rhoPbPbWithGhostsJetCount > 0)
1621 rhoPbPbWithGhosts = TMath::Median(rhoPbPbWithGhostsJetCount, tmpRhoPbPbWithGhosts);
1622 if (rhoCMSJetCount > 0)
1623 rhoCMS = TMath::Median(rhoCMSJetCount, tmpRhoCMS) * tmpCoveredArea/tmpSummedArea;
1624 if (rhoImprovedCMSJetCount > 0)
1626 rhoImprovedCMS = TMath::Median(rhoImprovedCMSJetCount, tmpRhoImprovedCMS) * tmpCoveredArea/tmpSummedArea;
1628 if (rhoMeanJetCount > 0)
1629 rhoMean = TMath::Mean(rhoMeanJetCount, tmpRhoMean);
1632 AliInfo(
"Got ALL KT background density.");
1640 AliInfo(
"Getting TR background density.");
1643 Double_t summedTracksPtCone04 = 0.0;
1644 Double_t summedTracksPtCone02 = 0.0;
1645 Double_t summedTracksPtCone06 = 0.0;
1646 Double_t summedTracksPtCone08 = 0.0;
1647 Double_t summedTracksPtWithinJets = 0.0;
1651 rhoNoExclusion = 0.0;
1652 rhoConeExclusion02 = 0.0;
1653 rhoConeExclusion04 = 0.0;
1654 rhoConeExclusion06 = 0.0;
1655 rhoConeExclusion08 = 0.0;
1656 rhoExactExclusion = 0.0;
1659 if(numberExcludeLeadingJets==-1)
1663 if(numberExcludeLeadingJets>2)
1665 AliWarning(Form(
"Warning: GetTRBackgroundDensity() can only exclude up to 2 leading jets! Demanded %i", numberExcludeLeadingJets) );
1666 numberExcludeLeadingJets = 2;
1671 AliVTrack* tmpTrack =
static_cast<AliVTrack*
>(
fTrackArray->At(i));
1672 Bool_t trackWithinJet = kFALSE;
Bool_t trackWithin02Cone = kFALSE;
Bool_t trackWithin04Cone = kFALSE;
Bool_t trackWithin06Cone = kFALSE;
Bool_t trackWithin08Cone = kFALSE;
1677 for(
Int_t j=0;j<numberExcludeLeadingJets;j++)
1683 if(signalJet->
Pt() < 5.0)
1688 trackWithinJet = kTRUE;
1693 trackWithin02Cone = kTRUE;
1694 trackWithin04Cone = kTRUE;
1695 trackWithin06Cone = kTRUE;
1696 trackWithin08Cone = kTRUE;
1701 trackWithin04Cone = kTRUE;
1702 trackWithin06Cone = kTRUE;
1703 trackWithin08Cone = kTRUE;
1707 trackWithin06Cone = kTRUE;
1708 trackWithin08Cone = kTRUE;
1712 trackWithin08Cone = kTRUE;
1716 if(!trackWithin08Cone)
1718 summedTracksPtCone08 += tmpTrack->
Pt();
1720 if(!trackWithin06Cone)
1722 summedTracksPtCone06 += tmpTrack->Pt();
1724 if(!trackWithin04Cone)
1726 summedTracksPtCone04 += tmpTrack->Pt();
1728 if(!trackWithin02Cone)
1730 summedTracksPtCone02 += tmpTrack->Pt();
1734 summedTracksPtWithinJets += tmpTrack->Pt();
1736 summedTracksPt += tmpTrack->Pt();
1744 Double_t tmpAreaCone02 = tmpFullTPCArea;
1745 Double_t tmpAreaCone04 = tmpFullTPCArea;
1746 Double_t tmpAreaCone06 = tmpFullTPCArea;
1747 Double_t tmpAreaCone08 = tmpFullTPCArea;
1748 Double_t tmpAreaWithinJets = tmpFullTPCArea;
1753 for(
Int_t i=0;i<numberExcludeLeadingJets;i++)
1759 if(signalJet->
Pt() < 5.0)
1762 tmpEtas[iSignal] = signalJet->
Eta();
1763 tmpPhis[iSignal] = signalJet->
Phi();
1764 tmpAreaWithinJets -= signalJet->
Area();
1774 rhoConeExclusion02 = summedTracksPtCone02/tmpAreaCone02;
1775 rhoConeExclusion04 = summedTracksPtCone04/tmpAreaCone04;
1776 rhoConeExclusion06 = summedTracksPtCone06/tmpAreaCone06;
1777 rhoConeExclusion08 = summedTracksPtCone08/tmpAreaCone08;
1778 rhoExactExclusion = summedTracksPtWithinJets/tmpAreaWithinJets;
1779 rhoNoExclusion = summedTracksPt/tmpFullTPCArea;
1783 AliInfo(
"Got TR background density.");
1802 TVector3 jet3mom1(jetMom);
1803 TVector3 jet3mom2(jetMom);
1805 jet3mom1.RotateZ(TMath::Pi());
1806 jet3mom2.RotateZ(-TMath::Pi());
1808 for (
int i = 0; i <
fTrackArray->GetEntries(); i++)
1810 AliVTrack* track =
static_cast<AliVTrack*
>(
fTrackArray->At(i));
1814 Double_t trackMom[3] = { track->Px(), track->Py(), track->Pz() };
1815 TVector3 track3mom(trackMom);
1817 Double_t dR1 = jet3mom1.DeltaR(track3mom);
1818 Double_t dR2 = jet3mom2.DeltaR(track3mom);
1821 background += track3mom.Pt();
1831 AliInfo(
"Starting Calculate().");
1845 AliInfo(
"Calculate()::Init done.");
1856 AliCentrality* tmpCentrality =
event->GetCentrality();
1857 Double_t centralityPercentile = -1.0;
1858 Double_t centralityPercentileCL1 = 0.0;
1859 Double_t centralityPercentileV0A = 0.0;
1860 Double_t centralityPercentileV0C = 0.0;
1861 Double_t centralityPercentileV0M = 0.0;
1862 Double_t centralityPercentileZNA = 0.0;
1863 if (tmpCentrality != NULL)
1865 centralityPercentile = tmpCentrality->GetCentralityPercentile(
fCentralityType.Data());
1866 centralityPercentileCL1 = tmpCentrality->GetCentralityPercentile(
"CL1");
1867 centralityPercentileV0A = tmpCentrality->GetCentralityPercentile(
"V0A");
1868 centralityPercentileV0C = tmpCentrality->GetCentralityPercentile(
"V0C");
1869 centralityPercentileV0M = tmpCentrality->GetCentralityPercentile(
"V0M");
1870 centralityPercentileZNA = tmpCentrality->GetCentralityPercentile(
"ZNA");
1874 centralityPercentile = 1.0;
1906 Double_t backgroundKTImprovedCMS = -1.0;
1907 Double_t backgroundExternal = -1.0;
1909 Double_t backgroundKTPbPbWithGhosts = -1.0;
1912 Double_t backgroundKTTrackLike = -1.0;
1913 Double_t backgroundTRNoExcl = -1.0;
1914 Double_t backgroundTRCone02 = -1.0;
1915 Double_t backgroundTRCone04 = -1.0;
1916 Double_t backgroundTRCone06 = -1.0;
1917 Double_t backgroundTRCone08 = -1.0;
1920 Double_t backgroundJetProfile = -1.0;
1929 backgroundExternal = 0;
1932 backgroundJetProfile = backgroundExternal;
1934 backgroundJetProfile = backgroundKTImprovedCMS;
1936 backgroundJetProfile = backgroundKTCMS;
1938 backgroundJetProfile = backgroundPP;
1940 backgroundJetProfile = backgroundTRCone06;
1942 backgroundJetProfile = 0;
1945 AliInfo(
"Calculate()::Centrality&SignalJets&Background-Calculation done.");
1950 Int_t trackCountAcc = 0;
1952 for (
Int_t i = 0; i < nTracks; i++)
1954 AliVTrack* track =
static_cast<AliVTrack*
>(
fTrackArray->At(i));
1959 FillHistogram(
"hTrackPhiEta", track->Phi(),track->Eta(), 1);
1960 FillHistogram(
"hTrackPtPhiEta", track->Phi(),track->Eta(), track->Pt());
1965 FillHistogram(
"hTrackPt", track->Pt(), centralityPercentile);
1967 if(track->Eta() >= 0)
1968 FillHistogram(
"hTrackPtPosEta", track->Pt(), centralityPercentile);
1970 FillHistogram(
"hTrackPtNegEta", track->Pt(), centralityPercentile);
1972 FillHistogram(
"hTrackEta", track->Eta(), centralityPercentile);
1975 if(static_cast<AliPicoTrack*>(track))
1981 for(
Int_t j=0;j<20;j++)
1989 FillHistogram(
"hTrackCountAcc", trackCountAcc, centralityPercentile);
1992 AliInfo(
"Calculate()::QA done.");
2045 if(tmpJet->
Phi() >= TMath::Pi())
2067 THnF* tmpConstituentHist =
static_cast<THnF*
>(
fCurrentOutputList->FindObject(
"hJetConstituents"));
2068 THnF* tmpConstituentDistanceHist =
static_cast<THnF*
>(
fCurrentOutputList->FindObject(
"hJetConstituentDistance"));
2078 Double_t tmpPConePhi = tmpJet->
Phi() + TMath::Pi();
2080 if(tmpPConePhi>=TMath::TwoPi())
2081 tmpPConePhi = tmpPConePhi - TMath::TwoPi();
2086 Double_t tmpDistance = TMath::Sqrt( (tmpJet->
Eta()-tmpTrack->Eta())*(tmpJet->
Eta()-tmpTrack->Eta())
2087 + (tmpJet->
Phi()-tmpTrack->Phi())*(tmpJet->
Phi()-tmpTrack->Phi()) );
2093 tmpConstituentHist->Fill(tmpVec1);
2094 tmpConstituentDistanceHist->Fill(tmpVec2);
2096 FillHistogram(
"hJetConstituentPtVsJetPt", tmpTrack->Pt(), tmpJet->
Pt());
2110 if(leadingTrackPt >= 10)
2112 else if(leadingTrackPt >= 5)
2114 else if(leadingTrackPt >= 2)
2122 if(tmpJet->
Pt() >= 1.0)
2124 if(tmpJet->
Pt() >= 2.0)
2126 if(tmpJet->
Pt() >= 3.0)
2128 if(tmpJet->
Pt() >= 4.0)
2130 if(tmpJet->
Pt() >= 5.0)
2132 if(tmpJet->
Pt() >= 7.0)
2134 if(tmpJet->
Pt() >= 10.0)
2138 if(tmpJet->
Pt() >= 5.0)
2158 if(tmpJet2->
Pt() >= 5.0)
2166 if(lowestTrackPt>=2.0)
2168 if(lowestTrackPt>=4.0)
2178 AliInfo(
"Calculate()::Jets done.");
2183 FillHistogram(
"hKTBackgroundExternal", backgroundExternal, centralityPercentile);
2185 FillHistogram(
"hKTBackgroundExternal20GeV", backgroundExternal, centralityPercentile);
2187 FillHistogram(
"hKTBackgroundImprovedCMS", backgroundKTImprovedCMS, centralityPercentile);
2188 FillHistogram(
"hPPBackground", backgroundPP, centralityPercentile);
2189 FillHistogram(
"hKTBackgroundPbPb", backgroundKTPbPb, centralityPercentile);
2190 FillHistogram(
"hKTBackgroundPbPbWithGhosts", backgroundKTPbPbWithGhosts, centralityPercentile);
2191 FillHistogram(
"hKTBackgroundCMS", backgroundKTCMS, centralityPercentile);
2192 FillHistogram(
"hKTBackgroundMean", backgroundKTMean, centralityPercentile);
2193 FillHistogram(
"hKTBackgroundTrackLike", backgroundKTTrackLike, centralityPercentile);
2194 FillHistogram(
"hTRBackgroundNoExcl", backgroundTRNoExcl, centralityPercentile);
2195 FillHistogram(
"hTRBackgroundCone02", backgroundTRCone02, centralityPercentile);
2196 FillHistogram(
"hTRBackgroundCone04", backgroundTRCone04, centralityPercentile);
2197 FillHistogram(
"hTRBackgroundCone06", backgroundTRCone06, centralityPercentile);
2198 FillHistogram(
"hTRBackgroundCone08", backgroundTRCone08, centralityPercentile);
2199 FillHistogram(
"hTRBackgroundExact", backgroundTRExact, centralityPercentile);
2210 Double_t tmpDeltaPtExternalBgrdPartialExclusion =
GetDeltaPt(backgroundExternal, tmpRatio);
2215 Double_t tmpDeltaPtKTPbPbWithGhosts = 0;
2218 Double_t tmpDeltaPtKTTrackLike = 0;
2221 tmpDeltaPtKTPbPb =
GetDeltaPt(backgroundKTPbPb);
2222 tmpDeltaPtKTPbPbWithGhosts =
GetDeltaPt(backgroundKTPbPbWithGhosts);
2223 tmpDeltaPtKTCMS =
GetDeltaPt(backgroundKTCMS);
2224 tmpDeltaPtKTMean =
GetDeltaPt(backgroundKTMean);
2225 tmpDeltaPtKTTrackLike =
GetDeltaPt(backgroundKTTrackLike);
2226 tmpDeltaPtTR =
GetDeltaPt(backgroundTRCone06);
2231 if(tmpDeltaPtExternalBgrd > -10000.0)
2232 FillHistogram(
"hDeltaPtExternalBgrd", tmpDeltaPtExternalBgrd, centralityPercentile);
2233 if(tmpDeltaPtKTImprovedCMS > -10000.0)
2234 FillHistogram(
"hDeltaPtKTImprovedCMS", tmpDeltaPtKTImprovedCMS, centralityPercentile);
2235 if(tmpDeltaPtExternalBgrdPartialExclusion > -10000.0)
2236 FillHistogram(
"hDeltaPtExternalBgrdPartialExclusion", tmpDeltaPtExternalBgrdPartialExclusion, centralityPercentile);
2237 if(tmpDeltaPtPP > -10000.0)
2238 FillHistogram(
"hDeltaPtPP", tmpDeltaPtPP, centralityPercentile);
2240 if(tmpDeltaPtNoBackground > -10000.0)
2241 FillHistogram(
"hDeltaPtNoBackground", tmpDeltaPtNoBackground, centralityPercentile);
2243 if(tmpDeltaPtKTPbPb > -10000.0)
2244 FillHistogram(
"hDeltaPtKTPbPb", tmpDeltaPtKTPbPb, centralityPercentile);
2245 if(tmpDeltaPtKTPbPbWithGhosts > -10000.0)
2246 FillHistogram(
"hDeltaPtKTPbPbWithGhosts", tmpDeltaPtKTPbPbWithGhosts, centralityPercentile);
2247 if(tmpDeltaPtKTCMS > -10000.0)
2248 FillHistogram(
"hDeltaPtKTCMS", tmpDeltaPtKTCMS, centralityPercentile);
2249 if(tmpDeltaPtKTMean > -10000.0)
2250 FillHistogram(
"hDeltaPtKTMean", tmpDeltaPtKTMean, centralityPercentile);
2251 if(tmpDeltaPtKTTrackLike > -10000.0)
2252 FillHistogram(
"hDeltaPtKTTrackLike", tmpDeltaPtKTTrackLike, centralityPercentile);
2253 if(tmpDeltaPtTR > -10000.0)
2254 FillHistogram(
"hDeltaPtTR", tmpDeltaPtTR, centralityPercentile);
2258 AliInfo(
"Calculate()::Background done.");
2262 AliInfo(
"Calculate() done.");
2285 if(TMath::Abs(tmpJet->
Eta()) <= 0.3)
2287 if(tmpJet->
Pt()>=70.0)
2399 {
return 2.*atan(exp(-arg));}
2403 if ((arg > TMath::Pi()) || (arg < 0.0))
2405 AliError(Form(
"ThetaToEta got wrong input! (%f)", arg));
2408 return -log(tan(arg/2.));
2412 {
return min(TMath::Abs(phi1-phi2),TMath::TwoPi() - TMath::Abs(phi1-phi2));}
2417 const Int_t kTests = 1000;
2419 TRandom3 randomGen(0);
2422 for (
Int_t i=0; i<kTests; i++)
2425 Double_t tmpTestX = randomGen.Uniform(rPosXmin, rPosXmax);
2426 Double_t tmpTestY = randomGen.Uniform(rPosYmin, rPosYmax);
2429 Double_t tmpDistance = TMath::Sqrt( (tmpTestX - cPosX)*(tmpTestX - cPosX) + (tmpTestY - cPosY)*(tmpTestY - cPosY) );
2430 if(tmpDistance < cRadius)
2435 return (static_cast<Double_t>(hits)/static_cast<Double_t>(kTests));
2442 const Int_t kTests = 1000;
2444 TRandom3 randomGen(0);
2447 for (
Int_t i=0; i<kTests; i++)
2450 Double_t tmpTestX = randomGen.Uniform(rPosXmin, rPosXmax);
2451 Double_t tmpTestY = randomGen.Uniform(rPosYmin, rPosYmax);
2454 for(
Int_t j=0; j<numCircles; j++)
2456 Double_t tmpDistance = TMath::Sqrt( (tmpTestX - cPosX[j])*(tmpTestX - cPosX[j]) + (tmpTestY - cPosY[j])*(tmpTestY - cPosY[j]) );
2457 if(tmpDistance < cRadius)
2466 return (static_cast<Double_t>(hits)/static_cast<Double_t>(kTests));
2476 AliError(Form(
"Cannot find histogram <%s> ",key)) ;
2489 AliError(Form(
"Cannot find histogram <%s> ",key));
2493 if (tmpHist->IsA()->GetBaseClass(
"TH1"))
2494 static_cast<TH1*>(tmpHist)->Fill(x,y);
2495 else if (tmpHist->IsA()->GetBaseClass(
"TH2"))
2496 static_cast<TH2*>(tmpHist)->Fill(x,y);
2505 AliError(Form(
"Cannot find histogram <%s> ",key));
2509 tmpHist->Fill(x,y,add);
2518 AliError(Form(
"Cannot find histogram <%s> ",key));
2522 Double_t tmpVec[5] = {cut, pT, eta, phi,
static_cast<Double_t>(isAdditionalTrack)};
2523 tmpHist->Fill(tmpVec);
2531 tmpHist->GetXaxis()->SetTitle(xTitle);
2532 tmpHist->GetYaxis()->SetTitle(yTitle);
2533 tmpHist->SetOption(options);
2534 tmpHist->SetMarkerStyle(kFullCircle);
2543 template <
class T>
T*
AliAnalysisTaskChargedJetsPA::AddHistogram2D(
const char* name,
const char*
title,
const char* options,
Int_t xBins,
Double_t xMin,
Double_t xMax,
Int_t yBins,
Double_t yMin,
Double_t yMax,
const char* xTitle,
const char* yTitle,
const char* zTitle)
2546 tmpHist->GetXaxis()->SetTitle(xTitle);
2547 tmpHist->GetYaxis()->SetTitle(yTitle);
2548 tmpHist->GetZaxis()->SetTitle(zTitle);
2549 tmpHist->SetOption(options);
2550 tmpHist->SetMarkerStyle(kFullCircle);
2562 Int_t bins [5] = { nBins, 100, 20, 18, 2};
2563 Double_t minEdges[5] = { xMin, 0.1, -1, 0, -0.5};
2564 Double_t maxEdges[5] = { xMax, 40, +1, 2*TMath::Pi(), 1.5};
2566 TString axisName[5] = {cutName,
"#it{p}_{T}",
"#eta",
"#phi",
"Track type"};
2567 TString axisTitle[5] = {cutName,
"#it{p}_{T}",
"#eta",
"#phi",
"Track type"};
2569 THnF * histo =
new THnF(name, title, 5, bins, minEdges, maxEdges);
2572 for (
Int_t iaxis=0; iaxis<5;iaxis++){
2573 histo->GetAxis(iaxis)->SetName(axisName[iaxis]);
2574 histo->GetAxis(iaxis)->SetTitle(axisTitle[iaxis]);
2585 TAxis *axis = h->GetAxis(axisNumber);
2586 int bins = axis->GetNbins();
2593 Double_t factor = pow(to/from, 1./bins);
2595 for (
int i = 1; i <= bins; i++) {
2596 newBins[i] = factor * newBins[i-1];
2598 axis->Set(bins, newBins);
2644 if (
fOutputLists[i] && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
2659 Int_t tmpListCount = 1;
2666 for(
Int_t i=0; i<tmpListCount; i++)
2678 AliInfo(
"UserExec() started.");
2683 AliError(
"??? Event pointer == 0 ???");
void SetCurrentOutputList(Int_t i)
Int_t fTempOverlapCounter
Double_t ThetaToEta(Double_t arg)
Bool_t fDoJetAnalysis
Currently selected list where the histograms will be saved to.
Double_t GetDeltaPt(Double_t rho, Double_t overlappingJetExclusionProbability=0)
AliEmcalJet * fFirstLeadingKTJet
next to leading jet in event
void GetKTBackgroundDensityAll(Int_t numberExcludeLeadingJets, Double_t &rhoPbPb, Double_t &rhoPbPbWithGhosts, Double_t &rhoCMS, Double_t &rhoImprovedCMS, Double_t &rhoMean, Double_t &rhoTrackLike)
virtual void UserExec(Option_t *option)
AliAnalysisUtils * fHelperClass
A random number.
void CreateJetProfilePlots(Double_t bgrd)
Int_t fTaskInstanceCounter
TString fJetArrayName
object containing background jets
Bool_t IsSignalJetInAcceptance(AliEmcalJet *jet, Bool_t usePtCut=kFALSE)
Bool_t IsJetOverlapping(AliEmcalJet *jet1, AliEmcalJet *jet2)
ClassImp(AliAnalysisTaskChargedJetsPA) void AliAnalysisTaskChargedJetsPA
Bool_t fNoExternalBackground
void GetTRBackgroundDensity(Int_t numberExcludeLeadingJets, Double_t &rhoNoExclusion, Double_t &rhoConeExclusion02, Double_t &rhoConeExclusion04, Double_t &rhoConeExclusion06, Double_t &rhoConeExclusion08, Double_t &rhoExactExclusion)
Int_t fNumberSignalJetsAbove5GeV
Bool_t IsTrackInJet(AliEmcalJet *jet, Int_t trackIndex)
Bool_t IsTrackInCone(AliVTrack *track, Double_t eta, Double_t phi, Double_t radius)
void CreateCutHistograms()
virtual ~AliAnalysisTaskChargedJetsPA()
Bool_t IsTrackInAcceptance(AliVParticle *track)
void InitializeTrackcuts()
AliESDtrackCuts * GetAdditionalCuts()
Int_t TrackAt(Int_t idx) const
Double_t GetCorrectedConePt(Double_t eta, Double_t phi, Double_t radius, Double_t background)
T * AddHistogram2D(const char *name="CustomHistogram", const char *title="NO_TITLE", const char *options="", Int_t xBins=100, Double_t xMin=0.0, Double_t xMax=20.0, Int_t yBins=100, Double_t yMin=0.0, Double_t yMax=20.0, const char *xTitle="x axis", const char *yTitle="y axis", const char *zTitle="z axis")
UShort_t GetNumberOfTracks() const
UShort_t T(UShort_t m, UShort_t t)
void GetPPBackgroundDensity(Double_t &background)
Int_t fBackgroundForJetProfile
TString fBackgroundJetArrayName
void SetAdditionalCuts(AliESDtrackCuts *trackCuts)
THnF * AddCutHistogram(const char *name, const char *title, const char *cutName, Int_t nBins, Double_t xMin, Double_t xMax)
Double_t fTempMeanExclusionProbability
TList * fCurrentOutputList
Output lists.
Double_t GetConePt(Double_t eta, Double_t phi, Double_t radius)
Bool_t fAnalyzeJetConstituents
Double_t MCGetOverlapMultipleCirclesRectancle(Int_t numCircles, std::vector< Double_t > cPosX, std::vector< Double_t > cPosY, Double_t cRadius, Double_t rPosXmin, Double_t rPosXmax, Double_t rPosYmin, Double_t rPosYmax)
void FillCutHistogram(const char *key, Double_t cut, Double_t pT, Double_t eta, Double_t phi, Int_t isAdditionalTrack)
Bool_t fUsePtDepCrossedRowsCut
void BinLogAxis(const THn *h, Int_t axisNumber)
std::vector< TList * > fOutputLists
T * AddHistogram1D(const char *name="CustomHistogram", const char *title="NO_TITLE", const char *options="", Int_t xBins=100, Double_t xMin=0.0, Double_t xMax=20.0, const char *xTitle="x axis", const char *yTitle="y axis")
Double_t fMatchChi[kMaxMatch]
Helper variables track matching.
AliEmcalJet * fSecondLeadingJet
leading jet in event
virtual void Terminate(Option_t *)
Int_t fPartialAnalysisNParts
Int_t fNumberSignalJets
next to leading kT jet in event
Double_t fMinBackgroundJetPt
AliEmcalJet * fFirstLeadingJet
Vertex found per event.
Bool_t fInitialized
Vertex selection helper.
AliAnalysisTaskChargedJetsPA()
const AliVVertex * fPrimaryVertex
Helper variables track matching.
void Match(AliESDtrack *tr0, AliESDtrack *tr1, Int_t &nmatch, Bool_t excludeMom=kFALSE, Double_t rotate=0)
void SetMainCuts(AliESDtrackCuts *trackCuts)
virtual Bool_t UserNotify()
Bool_t fUseDefaultVertexCut
Int_t fNumberExcludedJets
Double_t MCGetOverlapCircleRectancle(Double_t cPosX, Double_t cPosY, Double_t cRadius, Double_t rPosXmin, Double_t rPosXmax, Double_t rPosYmin, Double_t rPosYmax)
Int_t GetConeConstituentCount(Double_t eta, Double_t phi, Double_t radius)
Double_t GetCorrectedJetPt(AliEmcalJet *jet, Double_t background)
void CreateITSTPCMatchingHistograms()
Double_t GetExternalRho()
TClonesArray * fTrackArray
object containing the jets
void Calculate(AliVEvent *event)
Double_t GetDeltaPhi(Double_t phi1, Double_t phi2)
AliESDtrackCuts * GetMainCuts()
Int_t AcceptTrack(const AliESDtrack *esdTrack)
AliESDHybridTrackcuts * fHybridESDtrackCuts_variedPtDep
these trackcuts are applied
Bool_t fSetCentralityToOne
Represent a jet reconstructed using the EMCal jet framework.
virtual void UserCreateOutputObjects()
Int_t fPartialAnalysisIndex
Bool_t IsEventInAcceptance(AliVEvent *event)
AliESDHybridTrackcuts * fHybridESDtrackCuts_variedPtDep2
these trackcuts are applied
Double_t fSignalJetRadius
Double_t EtaToTheta(Double_t arg)
Bool_t fAnalyzeJetProfile
void FillHistogram(const char *key, Double_t x)
static const double kMaxChi2
const char * GetHistoName(const char *name)
AliEmcalJet * fSecondLeadingKTJet
leading kT jet in event
TClonesArray * fBackgroundJetArray
object containing the tracks
AliESDtrack * fMatchTr[kMaxMatch]
AliESDHybridTrackcuts * fHybridESDtrackCuts
Bool_t IsBackgroundJetInAcceptance(AliEmcalJet *jet)