Skip to content

Commit efb4335

Browse files
authored
[PWGJE] PWGJE:dijet mass analysis task (#10919)
1 parent ccac43d commit efb4335

File tree

1 file changed

+61
-120
lines changed

1 file changed

+61
-120
lines changed

PWGJE/Tasks/dijetFinderQA.cxx

Lines changed: 61 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -48,80 +48,66 @@ struct DijetFinderQATask {
4848

4949
HistogramRegistry registry;
5050

51-
Configurable<float> setJetPtCut{"setJetPtCut", 20, "set jet pt minimum cut"};
52-
Configurable<float> selectedJetsRadius{"selectedJetsRadius", 0.4, "resolution parameter for histograms without radius"};
53-
Configurable<double> jetPtMax{"jetPtMax", 200., "set jet pT bin max"};
54-
Configurable<float> vertexZCut{"vertexZCut", 10.0f, "Accepted z-vertex range"};
5551
Configurable<float> centralityMin{"centralityMin", -999.0, "minimum centrality"};
5652
Configurable<float> centralityMax{"centralityMax", 999.0, "maximum centrality"};
57-
Configurable<float> jetAreaFractionMin{"jetAreaFractionMin", -99.0, "used to make a cut on the jet areas"};
58-
Configurable<float> leadingConstituentPtMin{"leadingConstituentPtMin", -99.0, "minimum pT selection on jet constituent"};
59-
Configurable<float> leadingConstituentPtMax{"leadingConstituentPtMax", 9999.0, "maximum pT selection on jet constituent"};
53+
Configurable<std::string> eventSelections{"eventSelections", "sel8", "choose event selection"};
54+
Configurable<float> vertexZCut{"vertexZCut", 10.0f, "Accepted z-vertex range"};
55+
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
6056
Configurable<float> trackPtMin{"trackPtMin", 0.15, "minimum pT acceptance for tracks"};
61-
Configurable<float> trackPtMax{"trackPtMax", 100.0, "maximum pT acceptance for tracks"};
57+
Configurable<float> trackPtMax{"trackPtMax", 1000.0, "maximum pT acceptance for tracks"};
6258
Configurable<float> trackEtaMin{"trackEtaMin", -0.9, "minimum eta acceptance for tracks"};
6359
Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum eta acceptance for tracks"};
60+
Configurable<float> leadingConstituentPtMin{"leadingConstituentPtMin", -99.0, "minimum pT selection on jet constituent"};
61+
Configurable<float> leadingConstituentPtMax{"leadingConstituentPtMax", 9999.0, "maximum pT selection on jet constituent"};
62+
Configurable<float> setJetPtCut{"setJetPtCut", 20., "set jet pt minimum cut"};
63+
Configurable<float> setPhiCut{"setPhiCut", 0.5, "set phicut"};
64+
Configurable<float> jetR{"jetR", 0.4, "jet resolution parameter"};
65+
Configurable<float> jetPtMin{"jetPtMin", 20.0, "minimum jet pT cut"};
66+
Configurable<double> jetPtMax{"jetPtMax", 200., "set jet pT bin max"};
6467
Configurable<float> jetEtaMin{"jetEtaMin", -0.5, "minimum jet pseudorapidity"};
6568
Configurable<float> jetEtaMax{"jetEtaMax", 0.5, "maximum jet pseudorapidity"};
66-
Configurable<float> jetPtMin{"jetPtMin", 20.0, "minimum jet pT cut"};
67-
Configurable<float> jetR{"jetR", 0.4, "jet resolution parameter"};
68-
Configurable<std::string> eventSelections{"eventSelections", "sel8", "choose event selection"};
69-
Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
70-
Configurable<bool> checkMcCollisionIsMatched{"checkMcCollisionIsMatched", false, "0: count whole MCcollisions, 1: select MCcollisions which only have their correspond collisions"};
69+
Configurable<float> jetAreaFractionMin{"jetAreaFractionMin", -99.0, "used to make a cut on the jet areas"};
7170

72-
std::vector<int> eventSelectionBits;
71+
std::vector<int> eventSelection;
7372
int trackSelection = -1;
7473

75-
std::vector<double> jetPtBins;
74+
std::vector<double> dijetMassBins;
7675

7776
void init(o2::framework::InitContext&)
7877
{
79-
eventSelectionBits = jetderiveddatautilities::initialiseEventSelectionBits(static_cast<std::string>(eventSelections));
78+
eventSelection = jetderiveddatautilities::initialiseEventSelectionBits(static_cast<std::string>(eventSelections));
8079
trackSelection = jetderiveddatautilities::initialiseTrackSelection(static_cast<std::string>(trackSelections));
8180

82-
auto jetPtTemp = 0.0;
83-
jetPtBins.push_back(jetPtTemp);
84-
while (jetPtTemp < jetPtMax) {
85-
if (jetPtTemp < 100.0) {
86-
jetPtTemp += 1.0;
87-
jetPtBins.push_back(jetPtTemp);
88-
} else if (jetPtTemp < 200.0) {
89-
jetPtTemp += 5.0;
90-
jetPtBins.push_back(jetPtTemp);
91-
} else {
92-
jetPtTemp += 10.0;
93-
jetPtBins.push_back(jetPtTemp);
94-
}
81+
auto dijetMassTemp = 0.0;
82+
while (dijetMassTemp <= 2 * jetPtMax) {
83+
dijetMassBins.push_back(dijetMassTemp);
84+
dijetMassTemp += 5.0;
9585
}
9686

97-
AxisSpec jetPtAxis = {jetPtBins, "M_{jj} (GeV/#it{c}^2)"};
87+
AxisSpec dijetMassAxis = {dijetMassBins, "M_{jj} (GeV/#it{c}^2)"};
9888

9989
if (doprocessDijetMCP) {
100-
registry.add("h_part_jet_pt", "Jet pt MCP;;entries", {HistType::kTH1F, {jetPtAxis}});
101-
registry.add("h_part_dijet_mass", "Dijet invariant mass;;entries", {HistType::kTH1F, {jetPtAxis}});
90+
registry.add("h_part_dijet_mass", "Dijet invariant mass;;entries", {HistType::kTH1F, {dijetMassAxis}});
10291
}
10392

10493
if (doprocessDijetMCD) {
105-
registry.add("h_detec_jet_pt", "Jet pt MCD;;entries", {HistType::kTH1F, {jetPtAxis}});
106-
registry.add("h_detec_dijet_mass", "Dijet invariant mass;;entries", {HistType::kTH1F, {jetPtAxis}});
94+
registry.add("h_detec_dijet_mass", "Dijet invariant mass;;entries", {HistType::kTH1F, {dijetMassAxis}});
10795
}
10896

10997
if (doprocessDijetData) {
110-
registry.add("h_data_jet_pt", "Jet pt Data;;entries", {HistType::kTH1F, {jetPtAxis}});
111-
registry.add("h_data_dijet_mass", "Dijet invariant mass;;entries", {HistType::kTH1F, {jetPtAxis}});
98+
registry.add("h_data_dijet_mass", "Dijet invariant mass;;entries", {HistType::kTH1F, {dijetMassAxis}});
11299
}
113100

114101
if (doprocessDijetMCMatched) {
115-
registry.add("h_matched_dijet_mass", "M_{jj matched};M_{jj part}; M_{jj det}", {HistType::kTH2F, {jetPtAxis, jetPtAxis}});
102+
registry.add("h_matched_dijet_mass", "M_{jj matched};M_{jj part}; M_{jj det}", {HistType::kTH2F, {dijetMassAxis, dijetMassAxis}});
116103
}
117104
}
118105

119106
/****************************************************************************************************************************************************************/
120107
Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax);
121108
Filter eventCuts = (nabs(aod::jcollision::posZ) < vertexZCut && aod::jcollision::centrality >= centralityMin && aod::jcollision::centrality < centralityMax);
122109
Filter mcCollisionsFilter = nabs(aod::jmccollision::posZ) < vertexZCut;
123-
Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * 100.0f); // **********
124-
PresliceUnsorted<soa::Filtered<aod::JetCollisionsMCD>> CollisionsPerMCPCollision = aod::jmccollisionlb::mcCollisionId;
110+
Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * 100.0f);
125111
/****************************************************************************************************************************************************************/
126112

127113
template <typename T, typename U>
@@ -160,30 +146,6 @@ struct DijetFinderQATask {
160146
return true;
161147
}
162148

163-
template <typename T>
164-
void fillJetPtHistogramsMCP(T const& jet)
165-
{
166-
if (jet.r() == round(selectedJetsRadius * 100.0f)) {
167-
registry.fill(HIST("h_part_jet_pt"), jet.pt());
168-
}
169-
}
170-
171-
template <typename T>
172-
void fillJetPtHistogramsMCD(T const& jet)
173-
{
174-
if (jet.r() == round(selectedJetsRadius * 100.0f)) {
175-
registry.fill(HIST("h_detec_jet_pt"), jet.pt());
176-
}
177-
}
178-
179-
template <typename T>
180-
void fillJetPtHistogramsData(T const& jet)
181-
{
182-
if (jet.r() == round(selectedJetsRadius * 100.0f)) {
183-
registry.fill(HIST("h_data_jet_pt"), jet.pt());
184-
}
185-
}
186-
187149
template <typename T>
188150
void fillMassHistogramsMCP(T const& mass)
189151
{
@@ -217,7 +179,6 @@ struct DijetFinderQATask {
217179
{
218180
std::vector<std::array<double, 3>> jetPtcuts;
219181
for (auto& jet : jets) {
220-
fillJetPtHistogramsMCP(jet);
221182
jetPtcuts.push_back({jet.pt(), jet.eta(), jet.phi()});
222183
}
223184

@@ -227,18 +188,14 @@ struct DijetFinderQATask {
227188

228189
for (size_t i = 1; i < jetPtcuts.size() && !found_pair; i++) {
229190
auto& candidate_jet = jetPtcuts[i];
230-
Double_t dphi = fabs(candidate_jet[2] - leading_jet[2]);
231-
if (dphi > M_PI) {
232-
dphi = 2 * M_PI - dphi;
233-
}
234-
if (dphi > 2 * M_PI / 3) {
235-
double pt1 = leading_jet[0];
236-
double pt2 = candidate_jet[0];
237-
double eta1 = leading_jet[1];
238-
double eta2 = candidate_jet[1];
239-
double phi1 = leading_jet[2];
240-
double phi2 = candidate_jet[2];
241-
double dijet_mass = sqrt(2 * pt1 * pt2 * (cosh(eta1 - eta2) - cos(phi1 - phi2)));
191+
Double_t dphi = fabs(leading_jet[2] - candidate_jet[2]);
192+
Double_t deta = fabs(leading_jet[1] - candidate_jet[1]);
193+
Double_t condition = fabs(dphi - M_PI);
194+
195+
if (condition < setPhiCut * M_PI) {
196+
Double_t pt1 = leading_jet[0];
197+
Double_t pt2 = candidate_jet[0];
198+
Double_t dijet_mass = sqrt(2 * pt1 * pt2 * (cosh(deta) - cos(dphi)));
242199
fillMassHistogramsMCP(dijet_mass);
243200
found_pair = true;
244201
}
@@ -249,12 +206,11 @@ struct DijetFinderQATask {
249206

250207
void processDijetMCD(soa::Filtered<aod::JetCollisions>::iterator const& collision, soa::Filtered<aod::ChargedMCDetectorLevelJets> const& jets)
251208
{
252-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
209+
if (!jetderiveddatautilities::selectCollision(collision, eventSelection)) {
253210
return;
254211
}
255212
std::vector<std::array<double, 3>> jetPtcuts;
256213
for (auto& jet : jets) {
257-
fillJetPtHistogramsMCD(jet);
258214
jetPtcuts.push_back({jet.pt(), jet.eta(), jet.phi()});
259215
}
260216

@@ -264,18 +220,14 @@ struct DijetFinderQATask {
264220

265221
for (size_t i = 1; i < jetPtcuts.size() && !found_pair; i++) {
266222
auto& candidate_jet = jetPtcuts[i];
267-
Double_t dphi = fabs(candidate_jet[2] - leading_jet[2]);
268-
if (dphi > M_PI) {
269-
dphi = 2 * M_PI - dphi;
270-
}
271-
if (dphi > 2 * M_PI / 3) {
272-
double pt1 = leading_jet[0];
273-
double pt2 = candidate_jet[0];
274-
double eta1 = leading_jet[1];
275-
double eta2 = candidate_jet[1];
276-
double phi1 = leading_jet[2];
277-
double phi2 = candidate_jet[2];
278-
double dijet_mass = sqrt(2 * pt1 * pt2 * (cosh(eta1 - eta2) - cos(phi1 - phi2)));
223+
Double_t dphi = fabs(leading_jet[2] - candidate_jet[2]);
224+
Double_t deta = fabs(leading_jet[1] - candidate_jet[1]);
225+
Double_t condition = fabs(dphi - M_PI);
226+
227+
if (condition < setPhiCut * M_PI) {
228+
Double_t pt1 = leading_jet[0];
229+
Double_t pt2 = candidate_jet[0];
230+
Double_t dijet_mass = sqrt(2 * pt1 * pt2 * (cosh(deta) - cos(dphi)));
279231
fillMassHistogramsMCD(dijet_mass);
280232
found_pair = true;
281233
}
@@ -286,13 +238,12 @@ struct DijetFinderQATask {
286238

287239
void processDijetData(soa::Filtered<aod::JetCollisions>::iterator const& collision, soa::Filtered<aod::ChargedJets> const& jets)
288240
{
289-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
241+
if (!jetderiveddatautilities::selectCollision(collision, eventSelection)) {
290242
return;
291243
}
292244

293245
std::vector<std::array<double, 3>> jetPtcuts;
294246
for (auto& jet : jets) {
295-
fillJetPtHistogramsData(jet);
296247
jetPtcuts.push_back({jet.pt(), jet.eta(), jet.phi()});
297248
}
298249

@@ -302,18 +253,14 @@ struct DijetFinderQATask {
302253

303254
for (size_t i = 1; i < jetPtcuts.size() && !found_pair; i++) {
304255
auto& candidate_jet = jetPtcuts[i];
305-
Double_t dphi = fabs(candidate_jet[2] - leading_jet[2]);
306-
if (dphi > M_PI) {
307-
dphi = 2 * M_PI - dphi;
308-
}
309-
if (dphi > 2 * M_PI / 3) {
310-
double pt1 = leading_jet[0];
311-
double pt2 = candidate_jet[0];
312-
double eta1 = leading_jet[1];
313-
double eta2 = candidate_jet[1];
314-
double phi1 = leading_jet[2];
315-
double phi2 = candidate_jet[2];
316-
double dijet_mass = sqrt(2 * pt1 * pt2 * (cosh(eta1 - eta2) - cos(phi1 - phi2)));
256+
Double_t dphi = fabs(leading_jet[2] - candidate_jet[2]);
257+
Double_t deta = fabs(leading_jet[1] - candidate_jet[1]);
258+
Double_t condition = fabs(dphi - M_PI);
259+
260+
if (condition < setPhiCut * M_PI) {
261+
Double_t pt1 = leading_jet[0];
262+
Double_t pt2 = candidate_jet[0];
263+
Double_t dijet_mass = sqrt(2 * pt1 * pt2 * (cosh(deta) - cos(dphi)));
317264
fillMassHistogramsData(dijet_mass);
318265
found_pair = true;
319266
}
@@ -327,7 +274,7 @@ struct DijetFinderQATask {
327274
soa::Filtered<soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents, aod::ChargedMCDetectorLevelJetsMatchedToChargedMCParticleLevelJets>> const& mcdjets,
328275
JetMCPTable const&, aod::JetTracks const&, aod::JetParticles const&)
329276
{
330-
if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) {
277+
if (!jetderiveddatautilities::selectCollision(collision, eventSelection)) {
331278
return;
332279
}
333280

@@ -355,26 +302,20 @@ struct DijetFinderQATask {
355302
auto& candidate_jet_D = jetPtcuts_D[i];
356303
auto& candidate_jet_P = jetPtcuts_P[i];
357304

358-
Double_t dphi_D = fabs(candidate_jet_D[2] - leading_jet_D[2]);
359-
if (dphi_D > M_PI) {
360-
dphi_D = 2 * M_PI - dphi_D;
361-
}
362-
if (dphi_D > 2 * M_PI / 3) {
305+
Double_t dphi_D = fabs(leading_jet_D[2] - candidate_jet_D[2]);
306+
Double_t deta_D = fabs(leading_jet_D[1] - candidate_jet_D[1]);
307+
Double_t dphi_P = fabs(leading_jet_P[2] - candidate_jet_P[2]);
308+
Double_t deta_P = fabs(leading_jet_P[1] - candidate_jet_P[1]);
309+
Double_t condition = fabs(dphi_D - M_PI);
310+
311+
if (condition < setPhiCut * M_PI) {
363312
double pt1_D = leading_jet_D[0];
364313
double pt2_D = candidate_jet_D[0];
365-
double eta1_D = leading_jet_D[1];
366-
double eta2_D = candidate_jet_D[1];
367-
double phi1_D = leading_jet_D[2];
368-
double phi2_D = candidate_jet_D[2];
369-
double dijet_mass_D = sqrt(2 * pt1_D * pt2_D * (cosh(eta1_D - eta2_D) - cos(phi1_D - phi2_D)));
314+
double dijet_mass_D = sqrt(2 * pt1_D * pt2_D * (cosh(deta_D) - cos(dphi_D)));
370315

371316
double pt1_P = leading_jet_P[0];
372317
double pt2_P = candidate_jet_P[0];
373-
double eta1_P = leading_jet_P[1];
374-
double eta2_P = candidate_jet_P[1];
375-
double phi1_P = leading_jet_P[2];
376-
double phi2_P = candidate_jet_P[2];
377-
double dijet_mass_P = sqrt(2 * pt1_P * pt2_P * (cosh(eta1_P - eta2_P) - cos(phi1_P - phi2_P)));
318+
double dijet_mass_P = sqrt(2 * pt1_P * pt2_P * (cosh(deta_P) - cos(dphi_P)));
378319

379320
fillMassHistogramsMCMatched(dijet_mass_P, dijet_mass_D);
380321
found_pair = true;

0 commit comments

Comments
 (0)