Skip to content

Commit 8636bd4

Browse files
authored
[PWGJE] EP resolution+histograms (#8249)
1 parent 2abc9d2 commit 8636bd4

File tree

1 file changed

+96
-33
lines changed

1 file changed

+96
-33
lines changed

PWGJE/Tasks/jetSpectraEseTask.cxx

Lines changed: 96 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
///
1515
/// \author Joachim C. K. B. Hansen, Lund University
1616

17+
#include <string>
18+
1719
#include "Framework/ASoA.h"
1820
#include "Framework/AnalysisDataModel.h"
1921
#include "Framework/AnalysisTask.h"
@@ -42,6 +44,7 @@ struct JetSpectraEseTask {
4244
ConfigurableAxis binJetPt{"binJetPt", {200, 0., 200.}, ""};
4345
ConfigurableAxis bindPhi{"bindPhi", {100, -TMath::Pi() - 1, TMath::Pi() + 1}, ""};
4446
ConfigurableAxis binESE{"binESE", {100, 0, 100}, ""};
47+
ConfigurableAxis binCos{"binCos", {100, -1.05, 1.05}, ""};
4548

4649
Configurable<float> jetPtMin{"jetPtMin", 5.0, "minimum jet pT cut"};
4750
Configurable<float> jetR{"jetR", 0.2, "jet resolution parameter"};
@@ -58,6 +61,8 @@ struct JetSpectraEseTask {
5861
AxisSpec dPhiAxis = {bindPhi, "#Delta#phi"};
5962
AxisSpec eseAxis = {binESE, "#it{q}_{2}"};
6063

64+
AxisSpec cosAxis = {binCos, ""};
65+
6166
HistogramRegistry registry{"registry", {}, OutputObjHandlingPolicy::AnalysisObject, false, false};
6267

6368
int eventSelection = -1;
@@ -73,16 +78,30 @@ struct JetSpectraEseTask {
7378
switch (fColSwitch) {
7479
case 0:
7580
LOGF(info, "JetSpectraEseTask::init() - using data");
76-
registry.add("h_collisions", "event status;event status;entries", {HistType::kTH1F, {{10, 0.0, 10.0}}});
77-
registry.add("h_jet_pt", "jet pT;#it{p}_{T,jet} (GeV/#it{c});entries", {HistType::kTH1F, {{jetPtAxis}}});
78-
registry.add("h_jet_pt_bkgsub", "jet pT background sub;#it{p}_{T,jet} (GeV/#it{c});entries", {HistType::kTH1F, {{jetPtAxis}}});
79-
registry.add("h_jet_eta", "jet #eta;#eta_{jet};entries", {HistType::kTH1F, {{100, -1.0, 1.0}}});
80-
registry.add("h_jet_phi", "jet #phi;#phi_{jet};entries", {HistType::kTH1F, {{80, -1.0, 7.}}});
81-
registry.add("h_rho", ";#rho;entries", {HistType::kTH1F, {{100, 0, 200.}}});
82-
registry.add("h_jet_area", ";area_{jet};entries", {HistType::kTH1F, {{100, 0, 10.}}});
83-
registry.add("h_Psi2", "#Psi_{2};entries;", {HistType::kTH1F, {{150, -2.5, 2.5}}});
84-
registry.add("h_dPhi", "#Delta#phi;entries;", {HistType::kTH1F, {{dPhiAxis}}});
85-
registry.add("jet_pt_dPhi_q2", "", {HistType::kTH3F, {{jetPtAxis}, {dPhiAxis}, {eseAxis}}});
81+
registry.add("hEventCounter", "event status;event status;entries", {HistType::kTH1F, {{10, 0.0, 10.0}}});
82+
registry.add("hJetPt", "jet pT;#it{p}_{T,jet} (GeV/#it{c});entries", {HistType::kTH1F, {{jetPtAxis}}});
83+
registry.add("hJetPt_bkgsub", "jet pT background sub;#it{p}_{T,jet} (GeV/#it{c});entries", {HistType::kTH1F, {{jetPtAxis}}});
84+
registry.add("hJetEta", "jet #eta;#eta_{jet};entries", {HistType::kTH1F, {{100, -1.0, 1.0}}});
85+
registry.add("hJetPhi", "jet #phi;#phi_{jet};entries", {HistType::kTH1F, {{80, -1.0, 7.}}});
86+
registry.add("hRho", ";#rho;entries", {HistType::kTH1F, {{100, 0, 200.}}});
87+
registry.add("hJetArea", ";area_{jet};entries", {HistType::kTH1F, {{100, 0, 10.}}});
88+
registry.add("hdPhi", "#Delta#phi;entries;", {HistType::kTH1F, {{dPhiAxis}}});
89+
registry.add("hJetPtdPhiq2", "", {HistType::kTH3F, {{jetPtAxis}, {dPhiAxis}, {eseAxis}}});
90+
registry.add("hPsi2FT0C", ";Centrality; #Psi_{2}", {HistType::kTH2F, {{100, 0, 100}, {150, -2.5, 2.5}}});
91+
registry.add("hPsi2FT0A", ";Centrality; #Psi_{2}", {HistType::kTH2F, {{100, 0, 100}, {150, -2.5, 2.5}}});
92+
registry.add("hPsi2FV0A", ";Centrality; #Psi_{2}", {HistType::kTH2F, {{100, 0, 100}, {150, -2.5, 2.5}}});
93+
registry.add("hPsi2TPCpos", ";Centrality; #Psi_{2}", {HistType::kTH2F, {{100, 0, 100}, {150, -2.5, 2.5}}});
94+
registry.add("hPsi2TPCneg", ";Centrality; #Psi_{2}", {HistType::kTH2F, {{100, 0, 100}, {150, -2.5, 2.5}}});
95+
registry.add("hCosPsi2FT0CmFT0A", ";Centrality;cos(2(#Psi_{2}^{FT0C}-#Psi_{2}^{FT0A}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
96+
registry.add("hCosPsi2FT0CmFV0A", ";Centrality;cos(2(#Psi_{2}^{FT0C}-#Psi_{2}^{FV0A}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
97+
registry.add("hCosPsi2FV0AmFT0A", ";Centrality;cos(2(#Psi_{2}^{FT0C}-#Psi_{2}^{FV0A}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
98+
registry.add("hCosPsi2FT0AmFT0C", ";Centrality;cos(2(#Psi_{2}^{FT0A}-#Psi_{2}^{FT0C}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
99+
registry.add("hCosPsi2FT0AmFV0A", ";Centrality;cos(2(#Psi_{2}^{FT0C}-#Psi_{2}^{FV0A}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
100+
registry.add("hCosPsi2FV0AmFT0C", ";Centrality;cos(2(#Psi_{2}^{FV0A}-#Psi_{2}^{FT0C}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
101+
registry.add("hCosPsi2TPCposmTPCneg", ";Centrality;cos(2(#Psi_{2}^{TPCpos}-#Psi_{2}^{TPCneg}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
102+
registry.add("hCosPsi2TPCposmFV0A", ";Centrality;cos(2(#Psi_{2}^{TPCpos}-#Psi_{2}^{FV0A}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
103+
registry.add("hCosPsi2TPCnegmFV0A", ";Centrality;cos(2(#Psi_{2}^{TPCneg}-#Psi_{2}^{FV0A}));#it{q}_{2}", {HistType::kTH3F, {{100, 0, 100}, {cosAxis}, {eseAxis}}});
104+
86105
break;
87106
case 1:
88107
LOGF(info, "JetSpectraEseTask::init() - using MC");
@@ -109,47 +128,47 @@ struct JetSpectraEseTask {
109128
Filter mcCollisionFilter = nabs(aod::jmccollision::posZ) < vertexZCut;
110129

111130
void processESEDataCharged(soa::Join<aod::JetCollisions, aod::JCollisionPIs, aod::BkgChargedRhos>::iterator const& collision,
112-
soa::Join<aod::Collisions, aod::CentFT0Cs, aod::QvectorFT0CVecs, aod::QPercentileFT0Cs, aod::FEseCols> const&,
131+
soa::Join<aod::Collisions, aod::CentFT0Cs, aod::QvectorFT0CVecs, aod::QvectorFT0AVecs, aod::QvectorFV0AVecs, aod::QvectorTPCposVecs, aod::QvectorTPCnegVecs, aod::QPercentileFT0Cs> const&,
113132
soa::Filtered<aod::ChargedJets> const& jets,
114133
aod::JetTracks const& tracks)
115134
{
116135
float counter{0.5f};
117-
registry.fill(HIST("h_collisions"), counter++);
118-
auto originalCollision = collision.collision_as<soa::Join<aod::Collisions, aod::CentFT0Cs, aod::QvectorFT0CVecs, aod::QPercentileFT0Cs, aod::FEseCols>>();
119-
if (originalCollision.fESECOL()[0] != 1)
120-
return;
121-
registry.fill(HIST("h_collisions"), counter++);
136+
registry.fill(HIST("hEventCounter"), counter++);
137+
const auto originalCollision = collision.collision_as<soa::Join<aod::Collisions, aod::CentFT0Cs, aod::QvectorFT0CVecs, aod::QvectorFT0AVecs, aod::QvectorFV0AVecs, aod::QvectorTPCposVecs, aod::QvectorTPCnegVecs, aod::QPercentileFT0Cs>>();
138+
registry.fill(HIST("hEventCounter"), counter++);
122139
if (originalCollision.centFT0C() < CentRange->at(0) || originalCollision.centFT0C() > CentRange->at(1))
123140
return;
124-
registry.fill(HIST("h_collisions"), counter++);
125-
auto vPsi2 = 1 / 2.0 * TMath::ATan2(originalCollision.qvecFT0CImVec()[0], originalCollision.qvecFT0CReVec()[0]);
126-
auto qPerc = originalCollision.qPERCFT0C();
141+
registry.fill(HIST("hEventCounter"), counter++);
142+
143+
const auto vPsi2 = procEP(originalCollision);
144+
const auto qPerc = originalCollision.qPERCFT0C();
145+
if (qPerc[0] < 0)
146+
return;
147+
registry.fill(HIST("hEventCounter"), counter++);
148+
127149
if (!jetderiveddatautilities::selectCollision(collision, eventSelection))
128150
return;
129151

130-
registry.fill(HIST("h_collisions"), counter++);
152+
registry.fill(HIST("hEventCounter"), counter++);
131153

132154
if (!isAcceptedLeadTrack(tracks))
133155
return;
134156

135-
registry.fill(HIST("h_collisions"), counter++);
136-
registry.fill(HIST("h_rho"), collision.rho());
157+
registry.fill(HIST("hEventCounter"), counter++);
158+
registry.fill(HIST("hRho"), collision.rho());
137159
for (auto const& jet : jets) {
138160
float jetpT_bkgsub = jet.pt() - (collision.rho() * jet.area());
139-
registry.fill(HIST("h_jet_pt"), jet.pt());
140-
registry.fill(HIST("h_jet_pt_bkgsub"), jetpT_bkgsub);
141-
registry.fill(HIST("h_jet_eta"), jet.eta());
142-
registry.fill(HIST("h_jet_phi"), jet.phi());
143-
registry.fill(HIST("h_Psi2"), vPsi2);
144-
registry.fill(HIST("h_jet_area"), jet.area());
161+
registry.fill(HIST("hJetPt"), jet.pt());
162+
registry.fill(HIST("hJetPt_bkgsub"), jetpT_bkgsub);
163+
registry.fill(HIST("hJetEta"), jet.eta());
164+
registry.fill(HIST("hJetPhi"), jet.phi());
165+
registry.fill(HIST("hJetArea"), jet.area());
145166

146167
float dPhi = RecoDecay::constrainAngle(jet.phi() - vPsi2, -o2::constants::math::PI);
147-
registry.fill(HIST("h_dPhi"), dPhi);
148-
if (qPerc[0] < 0)
149-
continue;
150-
registry.fill(HIST("jet_pt_dPhi_q2"), jetpT_bkgsub, dPhi, qPerc[0]);
168+
registry.fill(HIST("hdPhi"), dPhi);
169+
registry.fill(HIST("hJetPtdPhiq2"), jetpT_bkgsub, dPhi, qPerc[0]); /* check the dphi */
151170
}
152-
registry.fill(HIST("h_collisions"), counter++);
171+
registry.fill(HIST("hEventCounter"), counter++);
153172
}
154173
PROCESS_SWITCH(JetSpectraEseTask, processESEDataCharged, "process ese collisions", true);
155174

@@ -211,6 +230,50 @@ struct JetSpectraEseTask {
211230
else
212231
return true;
213232
}
233+
234+
template <typename qVectors>
235+
float procEP(qVectors const& vec)
236+
{
237+
const auto epFT0A = 1 / 2.0 * TMath::ATan2(vec.qvecFT0AImVec()[0], vec.qvecFT0AReVec()[0]);
238+
const auto epFV0A = 1 / 2.0 * std::atan2(vec.qvecFV0AImVec()[0], vec.qvecFV0AReVec()[0]);
239+
const auto epFT0C = 1 / 2.0 * std::atan2(vec.qvecFT0CImVec()[0], vec.qvecFT0CReVec()[0]);
240+
const auto epTPCpos = 1 / 2.0 * std::atan2(vec.qvecTPCposImVec()[0], vec.qvecTPCposReVec()[0]);
241+
const auto epTPCneg = 1 / 2.0 * std::atan2(vec.qvecTPCnegImVec()[0], vec.qvecTPCnegReVec()[0]);
242+
243+
registry.fill(HIST("hPsi2FT0C"), vec.centFT0C(), epFT0C);
244+
registry.fill(HIST("hPsi2FT0A"), vec.centFT0C(), epFT0A);
245+
registry.fill(HIST("hPsi2FV0A"), vec.centFT0C(), epFV0A);
246+
registry.fill(HIST("hPsi2TPCpos"), vec.centFT0C(), epTPCpos);
247+
registry.fill(HIST("hPsi2TPCneg"), vec.centFT0C(), epTPCneg);
248+
249+
const auto cosPsi2FT0CmFT0A = cosPsiXY(epFT0C, epFT0A);
250+
const auto cosPsi2FT0CmFV0A = cosPsiXY(epFT0C, epFV0A);
251+
const auto cosPsi2FV0AmFT0A = cosPsiXY(epFV0A, epFT0A);
252+
const auto cosPsi2FT0AmFT0C = cosPsiXY(epFT0A, epFT0C);
253+
const auto cosPsi2FT0AmFV0A = cosPsiXY(epFT0A, epFV0A);
254+
const auto cosPsi2FV0AmFT0C = cosPsiXY(epFV0A, epFT0C);
255+
const auto cosPsi2TPCposmTPCneg = cosPsiXY(epTPCpos, epTPCneg);
256+
const auto cosPsi2TPCposmFV0A = cosPsiXY(epTPCpos, epFV0A);
257+
const auto cosPsi2TPCnegmFV0A = cosPsiXY(epTPCneg, epFV0A);
258+
259+
registry.fill(HIST("hCosPsi2FT0CmFT0A"), vec.centFT0C(), cosPsi2FT0CmFT0A, vec.qPERCFT0C()[0]);
260+
registry.fill(HIST("hCosPsi2FT0CmFV0A"), vec.centFT0C(), cosPsi2FT0CmFV0A, vec.qPERCFT0C()[0]);
261+
registry.fill(HIST("hCosPsi2FV0AmFT0A"), vec.centFT0C(), cosPsi2FV0AmFT0A, vec.qPERCFT0C()[0]);
262+
registry.fill(HIST("hCosPsi2FT0AmFT0C"), vec.centFT0C(), cosPsi2FT0AmFT0C, vec.qPERCFT0C()[0]);
263+
registry.fill(HIST("hCosPsi2FT0AmFV0A"), vec.centFT0C(), cosPsi2FT0AmFV0A, vec.qPERCFT0C()[0]);
264+
registry.fill(HIST("hCosPsi2FV0AmFT0C"), vec.centFT0C(), cosPsi2FV0AmFT0C, vec.qPERCFT0C()[0]);
265+
registry.fill(HIST("hCosPsi2TPCposmTPCneg"), vec.centFT0C(), cosPsi2TPCposmTPCneg, vec.qPERCFT0C()[0]);
266+
registry.fill(HIST("hCosPsi2TPCposmFV0A"), vec.centFT0C(), cosPsi2TPCposmFV0A, vec.qPERCFT0C()[0]);
267+
registry.fill(HIST("hCosPsi2TPCnegmFV0A"), vec.centFT0C(), cosPsi2TPCnegmFV0A, vec.qPERCFT0C()[0]);
268+
269+
return epFT0A;
270+
}
271+
272+
template <typename Psi>
273+
float cosPsiXY(Psi const& psiX, Psi const& psiY)
274+
{
275+
return std::cos(2.0 * (psiX - psiY));
276+
}
214277
};
215278

216279
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask<JetSpectraEseTask>(cfgc)}; }

0 commit comments

Comments
 (0)