Skip to content

Commit 06957a5

Browse files
[PWGJE] Fix: Subscribe to aod::JetTracks in processDataChargedSubstructure (#9596)
1 parent 072ef15 commit 06957a5

File tree

2 files changed

+77
-75
lines changed

2 files changed

+77
-75
lines changed

PWGJE/Tasks/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ o2physics_add_dpl_workflow(jet-substructure-bplus
208208
SOURCES jetLundReclustering.cxx
209209
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore FastJet::FastJet FastJet::Contrib
210210
COMPONENT_NAME Analysis)
211-
o2physics_add_dpl_workflow(jet-hf-fragmentation
211+
o2physics_add_dpl_workflow(hf-fragmentation-function
212212
SOURCES hfFragmentationFunction.cxx
213213
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore
214214
COMPONENT_NAME Analysis)

PWGJE/Tasks/hfFragmentationFunction.cxx

Lines changed: 76 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111

12+
/// \file hfFragmentationFunction.cxx
1213
/// \brief charm hadron hadronization task
1314
/// \author Christian Reckziegel <christian.reckziegel@cern.ch>, Federal University of ABC
1415
/// \since 15.03.2024
@@ -68,34 +69,34 @@ namespace o2::aod
6869
{
6970
namespace jet_distance
7071
{
71-
DECLARE_SOA_COLUMN(JetHfDist, jethfdist, float);
72-
DECLARE_SOA_COLUMN(JetPt, jetpt, float);
73-
DECLARE_SOA_COLUMN(JetEta, jeteta, float);
74-
DECLARE_SOA_COLUMN(JetPhi, jetphi, float);
75-
DECLARE_SOA_COLUMN(JetNConst, jetnconst, int);
76-
DECLARE_SOA_COLUMN(HfPt, hfpt, float);
77-
DECLARE_SOA_COLUMN(HfEta, hfeta, float);
78-
DECLARE_SOA_COLUMN(HfPhi, hfphi, float);
79-
DECLARE_SOA_COLUMN(HfMass, hfmass, float);
80-
DECLARE_SOA_COLUMN(HfY, hfy, float);
72+
DECLARE_SOA_COLUMN(JetHfDist, jetHfDist, float);
73+
DECLARE_SOA_COLUMN(JetPt, jetPt, float);
74+
DECLARE_SOA_COLUMN(JetEta, jetEta, float);
75+
DECLARE_SOA_COLUMN(JetPhi, jetPhi, float);
76+
DECLARE_SOA_COLUMN(JetNConst, jetNConst, int);
77+
DECLARE_SOA_COLUMN(HfPt, hfPt, float);
78+
DECLARE_SOA_COLUMN(HfEta, hfEta, float);
79+
DECLARE_SOA_COLUMN(HfPhi, hfPhi, float);
80+
DECLARE_SOA_COLUMN(HfMass, hfMass, float);
81+
DECLARE_SOA_COLUMN(HfY, hfY, float);
8182
DECLARE_SOA_COLUMN(HfPrompt, hfPrompt, bool);
82-
DECLARE_SOA_COLUMN(HfMatch, hfmatch, bool);
83-
DECLARE_SOA_COLUMN(HfMlScore0, hfmlscore0, float);
84-
DECLARE_SOA_COLUMN(HfMlScore1, hfmlscore1, float);
85-
DECLARE_SOA_COLUMN(HfMlScore2, hfmlscore2, float);
86-
DECLARE_SOA_COLUMN(HfMatchedFrom, hfmatchedfrom, int);
87-
DECLARE_SOA_COLUMN(HfSelectedAs, hfselectedas, int);
88-
DECLARE_SOA_COLUMN(MCJetHfDist, mcjethfdist, float);
89-
DECLARE_SOA_COLUMN(MCJetPt, mcjetpt, float);
90-
DECLARE_SOA_COLUMN(MCJetEta, mcjeteta, float);
91-
DECLARE_SOA_COLUMN(MCJetPhi, mcjetphi, float);
92-
DECLARE_SOA_COLUMN(MCJetNConst, mcjetnconst, float);
93-
DECLARE_SOA_COLUMN(MCHfPt, mchfpt, float);
94-
DECLARE_SOA_COLUMN(MCHfEta, mchfeta, float);
95-
DECLARE_SOA_COLUMN(MCHfPhi, mchfphi, float);
96-
DECLARE_SOA_COLUMN(MCHfY, mchfy, float);
97-
DECLARE_SOA_COLUMN(MCHfPrompt, mchfPrompt, bool);
98-
DECLARE_SOA_COLUMN(MCHfMatch, mchfmatch, bool);
83+
DECLARE_SOA_COLUMN(HfMatch, hfMatch, bool);
84+
DECLARE_SOA_COLUMN(HfMlScore0, hfMlScore0, float);
85+
DECLARE_SOA_COLUMN(HfMlScore1, hfMlScore1, float);
86+
DECLARE_SOA_COLUMN(HfMlScore2, hfMlScore2, float);
87+
DECLARE_SOA_COLUMN(HfMatchedFrom, hfMatchedFrom, int);
88+
DECLARE_SOA_COLUMN(HfSelectedAs, hfSelectedAs, int);
89+
DECLARE_SOA_COLUMN(McJetHfDist, mcJetHfDist, float);
90+
DECLARE_SOA_COLUMN(McJetPt, mcJetPt, float);
91+
DECLARE_SOA_COLUMN(McJetEta, mcJetEta, float);
92+
DECLARE_SOA_COLUMN(McJetPhi, mcJetPhi, float);
93+
DECLARE_SOA_COLUMN(McJetNConst, mcJetNConst, float);
94+
DECLARE_SOA_COLUMN(McHfPt, mcHfPt, float);
95+
DECLARE_SOA_COLUMN(McHfEta, mcHfEta, float);
96+
DECLARE_SOA_COLUMN(McHfPhi, mcHfPhi, float);
97+
DECLARE_SOA_COLUMN(McHfY, mcHfY, float);
98+
DECLARE_SOA_COLUMN(McHfPrompt, mcHfPrompt, bool);
99+
DECLARE_SOA_COLUMN(McHfMatch, mcHfMatch, bool);
99100
} // namespace jet_distance
100101
DECLARE_SOA_TABLE(JetDistanceTable, "AOD", "JETDISTTABLE",
101102
jet_distance::JetHfDist,
@@ -112,17 +113,17 @@ DECLARE_SOA_TABLE(JetDistanceTable, "AOD", "JETDISTTABLE",
112113
jet_distance::HfMlScore1,
113114
jet_distance::HfMlScore2);
114115
DECLARE_SOA_TABLE(MCPJetDistanceTable, "AOD", "MCPJETDISTTABLE",
115-
jet_distance::MCJetHfDist,
116-
jet_distance::MCJetPt,
117-
jet_distance::MCJetEta,
118-
jet_distance::MCJetPhi,
119-
jet_distance::MCJetNConst,
120-
jet_distance::MCHfPt,
121-
jet_distance::MCHfEta,
122-
jet_distance::MCHfPhi,
123-
jet_distance::MCHfY,
124-
jet_distance::MCHfPrompt,
125-
jet_distance::MCHfMatch);
116+
jet_distance::McJetHfDist,
117+
jet_distance::McJetPt,
118+
jet_distance::McJetEta,
119+
jet_distance::McJetPhi,
120+
jet_distance::McJetNConst,
121+
jet_distance::McHfPt,
122+
jet_distance::McHfEta,
123+
jet_distance::McHfPhi,
124+
jet_distance::McHfY,
125+
jet_distance::McHfPrompt,
126+
jet_distance::McHfMatch);
126127
DECLARE_SOA_TABLE(MCDJetDistanceTable, "AOD", "MCDJETDISTTABLE",
127128
jet_distance::JetHfDist,
128129
jet_distance::JetPt,
@@ -142,16 +143,16 @@ DECLARE_SOA_TABLE(MCDJetDistanceTable, "AOD", "MCDJETDISTTABLE",
142143
jet_distance::HfMatchedFrom,
143144
jet_distance::HfSelectedAs);
144145
DECLARE_SOA_TABLE(MatchJetDistanceTable, "AOD", "MATCHTABLE",
145-
jet_distance::MCJetHfDist,
146-
jet_distance::MCJetPt,
147-
jet_distance::MCJetEta,
148-
jet_distance::MCJetPhi,
149-
jet_distance::MCJetNConst,
150-
jet_distance::MCHfPt,
151-
jet_distance::MCHfEta,
152-
jet_distance::MCHfPhi,
153-
jet_distance::MCHfY,
154-
jet_distance::MCHfPrompt,
146+
jet_distance::McJetHfDist,
147+
jet_distance::McJetPt,
148+
jet_distance::McJetEta,
149+
jet_distance::McJetPhi,
150+
jet_distance::McJetNConst,
151+
jet_distance::McHfPt,
152+
jet_distance::McHfEta,
153+
jet_distance::McHfPhi,
154+
jet_distance::McHfY,
155+
jet_distance::McHfPrompt,
155156
jet_distance::JetHfDist,
156157
jet_distance::JetPt,
157158
jet_distance::JetEta,
@@ -170,7 +171,7 @@ DECLARE_SOA_TABLE(MatchJetDistanceTable, "AOD", "MATCHTABLE",
170171
jet_distance::HfSelectedAs);
171172
} // namespace o2::aod
172173

173-
struct HfFragmentationFunctionTask {
174+
struct HfFragmentationFunction {
174175
// producing new table
175176
Produces<aod::JetDistanceTable> distJetTable;
176177
Produces<aod::MCPJetDistanceTable> mcpdistJetTable;
@@ -182,9 +183,9 @@ struct HfFragmentationFunctionTask {
182183
using JetMCPTable = soa::Join<aod::D0ChargedMCParticleLevelJets, aod::D0ChargedMCParticleLevelJetConstituents, aod::D0ChargedMCParticleLevelJetsMatchedToD0ChargedMCDetectorLevelJets>;
183184

184185
// slices for accessing proper HF mcdjets collision associated to mccollisions
185-
PresliceUnsorted<aod::JetCollisionsMCD> CollisionsPerMCCollision = aod::jmccollisionlb::mcCollisionId;
186-
Preslice<JetMCDTable> D0MCDJetsPerCollision = aod::jet::collisionId;
187-
Preslice<JetMCPTable> D0MCPJetsPerMCCollision = aod::jet::mcCollisionId;
186+
PresliceUnsorted<aod::JetCollisionsMCD> collisionsPerMCCollisionPreslice = aod::jmccollisionlb::mcCollisionId;
187+
Preslice<JetMCDTable> d0MCDJetsPerCollisionPreslice = aod::jet::collisionId;
188+
Preslice<JetMCPTable> d0MCPJetsPerMCCollisionPreslice = aod::jet::mcCollisionId;
188189

189190
// Histogram registry: an object to hold your histograms
190191
HistogramRegistry registry{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -228,39 +229,40 @@ struct HfFragmentationFunctionTask {
228229
}
229230

230231
void processDummy(aod::TracksIU const&) {}
231-
PROCESS_SWITCH(HfFragmentationFunctionTask, processDummy, "Dummy process function turned on by default", true);
232+
PROCESS_SWITCH(HfFragmentationFunction, processDummy, "Dummy process function turned on by default", true);
232233

233234
void processDataChargedSubstructure(aod::JetCollision const& collision,
234235
soa::Join<aod::D0ChargedJets, aod::D0ChargedJetConstituents> const& jets,
235-
aod::CandidatesD0Data const&)
236+
aod::CandidatesD0Data const&,
237+
aod::JetTracks const&)
236238
{
237239
// apply event selection and fill histograms for sanity check
238240
registry.fill(HIST("h_collision_counter"), 2.0);
239-
if (!jetderiveddatautilities::selectCollision(collision, eventSelection) || !(abs(collision.posZ()) < vertexZCut)) {
241+
if (!jetderiveddatautilities::selectCollision(collision, eventSelection) || !(std::abs(collision.posZ()) < vertexZCut)) {
240242
return;
241243
}
242244
registry.fill(HIST("h_collision_counter"), 3.0);
243245

244-
for (auto& jet : jets) {
246+
for (const auto& jet : jets) {
245247
// fill jet counter histogram
246248
registry.fill(HIST("h_jet_counter"), 0.5);
247249
// obtaining jet 3-vector
248250
TVector3 jetVector(jet.px(), jet.py(), jet.pz());
249251

250-
for (auto& d0Candidate : jet.candidates_as<aod::CandidatesD0Data>()) {
252+
for (const auto& d0Candidate : jet.candidates_as<aod::CandidatesD0Data>()) {
251253

252254
// obtaining jet 3-vector
253255
TVector3 d0Vector(d0Candidate.px(), d0Candidate.py(), d0Candidate.pz());
254256

255257
// calculating fraction of the jet momentum carried by the D0 along the direction of the jet axis
256-
double z_parallel = (jetVector * d0Vector) / (jetVector * jetVector);
258+
double zParallel = (jetVector * d0Vector) / (jetVector * jetVector);
257259

258260
// calculating angular distance in eta-phi plane
259261
double axisDistance = jetutilities::deltaR(jet, d0Candidate);
260262

261263
// filling histograms
262-
registry.fill(HIST("h_d0_jet_projection"), z_parallel);
263-
registry.fill(HIST("h_d0_jet_distance_vs_projection"), axisDistance, z_parallel);
264+
registry.fill(HIST("h_d0_jet_projection"), zParallel);
265+
registry.fill(HIST("h_d0_jet_distance_vs_projection"), axisDistance, zParallel);
264266
registry.fill(HIST("h_d0_jet_distance"), axisDistance);
265267
registry.fill(HIST("h_d0_jet_pt"), jet.pt());
266268
registry.fill(HIST("h_d0_jet_eta"), jet.eta());
@@ -280,7 +282,7 @@ struct HfFragmentationFunctionTask {
280282
} // end of jets loop
281283

282284
} // end of process function
283-
PROCESS_SWITCH(HfFragmentationFunctionTask, processDataChargedSubstructure, "charged HF jet substructure", false);
285+
PROCESS_SWITCH(HfFragmentationFunction, processDataChargedSubstructure, "charged HF jet substructure", false);
284286

285287
void processMcEfficiency(aod::JetMcCollisions const& mccollisions,
286288
aod::JetCollisionsMCD const& collisions,
@@ -295,23 +297,23 @@ struct HfFragmentationFunctionTask {
295297

296298
registry.fill(HIST("h_collision_counter"), 0.0);
297299
// skip collisions outside of |z| < vertexZCut
298-
if (abs(mccollision.posZ()) > vertexZCut) {
300+
if (std::abs(mccollision.posZ()) > vertexZCut) {
299301
continue;
300302
}
301303
registry.fill(HIST("h_collision_counter"), 1.0);
302304

303305
// reconstructed collisions associated to same mccollision
304-
const auto collisionsPerMCCollision = collisions.sliceBy(CollisionsPerMCCollision, mccollision.globalIndex());
306+
const auto collisionsPerMCCollision = collisions.sliceBy(collisionsPerMCCollisionPreslice, mccollision.globalIndex());
305307
for (const auto& collision : collisionsPerMCCollision) {
306308

307309
registry.fill(HIST("h_collision_counter"), 2.0);
308-
if (!jetderiveddatautilities::selectCollision(collision, eventSelection) || !(abs(collision.posZ()) < vertexZCut)) {
310+
if (!jetderiveddatautilities::selectCollision(collision, eventSelection) || !(std::abs(collision.posZ()) < vertexZCut)) {
309311
continue;
310312
}
311313
registry.fill(HIST("h_collision_counter"), 3.0);
312314

313315
// d0 detector level jets associated to the current same collision
314-
const auto d0mcdJetsPerCollision = mcdjets.sliceBy(D0MCDJetsPerCollision, collision.globalIndex());
316+
const auto d0mcdJetsPerCollision = mcdjets.sliceBy(d0MCDJetsPerCollisionPreslice, collision.globalIndex());
315317
for (const auto& mcdjet : d0mcdJetsPerCollision) {
316318

317319
registry.fill(HIST("h_jet_counter"), 0.5);
@@ -350,7 +352,7 @@ struct HfFragmentationFunctionTask {
350352
}
351353

352354
// d0 particle level jets associated to same mccollision
353-
const auto d0mcpJetsPerMCCollision = mcpjets.sliceBy(D0MCPJetsPerMCCollision, mccollision.globalIndex());
355+
const auto d0mcpJetsPerMCCollision = mcpjets.sliceBy(d0MCPJetsPerMCCollisionPreslice, mccollision.globalIndex());
354356
for (const auto& mcpjet : d0mcpJetsPerMCCollision) {
355357

356358
registry.fill(HIST("h_jet_counter"), 0.0);
@@ -370,7 +372,7 @@ struct HfFragmentationFunctionTask {
370372
}
371373
}
372374
}
373-
PROCESS_SWITCH(HfFragmentationFunctionTask, processMcEfficiency, "non-matched and matched MC HF and jets", false);
375+
PROCESS_SWITCH(HfFragmentationFunction, processMcEfficiency, "non-matched and matched MC HF and jets", false);
374376

375377
void processMcChargedMatched(aod::JetMcCollisions const& mccollisions,
376378
aod::JetCollisionsMCD const& collisions,
@@ -386,22 +388,22 @@ struct HfFragmentationFunctionTask {
386388
registry.fill(HIST("h_collision_counter"), 0.0);
387389

388390
// skip collisions outside of |z| < vertexZCut
389-
if (abs(mccollision.posZ()) > vertexZCut) {
391+
if (std::abs(mccollision.posZ()) > vertexZCut) {
390392
continue;
391393
}
392394
registry.fill(HIST("h_collision_counter"), 1.0);
393395

394396
// reconstructed collisions associated to same mccollision
395-
const auto collisionsPerMCCollision = collisions.sliceBy(CollisionsPerMCCollision, mccollision.globalIndex());
397+
const auto collisionsPerMCCollision = collisions.sliceBy(collisionsPerMCCollisionPreslice, mccollision.globalIndex());
396398
for (const auto& collision : collisionsPerMCCollision) {
397399

398400
registry.fill(HIST("h_collision_counter"), 2.0);
399-
if (!jetderiveddatautilities::selectCollision(collision, eventSelection) || !(abs(collision.posZ()) < vertexZCut)) {
401+
if (!jetderiveddatautilities::selectCollision(collision, eventSelection) || !(std::abs(collision.posZ()) < vertexZCut)) {
400402
continue;
401403
}
402404
registry.fill(HIST("h_collision_counter"), 3.0);
403405
// d0 detector level jets associated to the current same collision
404-
const auto d0mcdJetsPerCollision = mcdjets.sliceBy(D0MCDJetsPerCollision, collision.globalIndex());
406+
const auto d0mcdJetsPerCollision = mcdjets.sliceBy(d0MCDJetsPerCollisionPreslice, collision.globalIndex());
405407
for (const auto& mcdjet : d0mcdJetsPerCollision) {
406408

407409
registry.fill(HIST("h_jet_counter"), 0.5);
@@ -432,7 +434,7 @@ struct HfFragmentationFunctionTask {
432434
}
433435

434436
// loop through detector level matched to current particle level
435-
for (auto& mcpjet : mcdjet.matchedJetCand_as<JetMCPTable>()) {
437+
for (const auto& mcpjet : mcdjet.matchedJetCand_as<JetMCPTable>()) {
436438

437439
registry.fill(HIST("h_jet_counter"), 2.5);
438440

@@ -451,11 +453,11 @@ struct HfFragmentationFunctionTask {
451453
}
452454
}
453455
}
454-
PROCESS_SWITCH(HfFragmentationFunctionTask, processMcChargedMatched, "matched MC HF and jets", false);
456+
PROCESS_SWITCH(HfFragmentationFunction, processMcChargedMatched, "matched MC HF and jets", false);
455457
};
456458

457459
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
458460
{
459461
return WorkflowSpec{
460-
adaptAnalysisTask<HfFragmentationFunctionTask>(cfgc, TaskName{"jet-charm-hadronization"})};
462+
adaptAnalysisTask<HfFragmentationFunction>(cfgc)};
461463
}

0 commit comments

Comments
 (0)