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{
6970namespace 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 );
8182DECLARE_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
100101DECLARE_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);
114115DECLARE_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 );
126127DECLARE_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);
144145DECLARE_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
457459WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
458460{
459461 return WorkflowSpec{
460- adaptAnalysisTask<HfFragmentationFunctionTask >(cfgc, TaskName{ " jet-charm-hadronization " } )};
462+ adaptAnalysisTask<HfFragmentationFunction >(cfgc)};
461463}
0 commit comments