diff --git a/PWGCF/Femto/Core/collisionBuilder.h b/PWGCF/Femto/Core/collisionBuilder.h index 5093ed99269..19fb00b8abe 100644 --- a/PWGCF/Femto/Core/collisionBuilder.h +++ b/PWGCF/Femto/Core/collisionBuilder.h @@ -585,11 +585,12 @@ class CollisionBuilder } // PbPb specific columns - if constexpr (modes::isFlagSet(system, modes::System::kPbPb)) { - if (mProduceQns) { - collisionProducts.producedQns(utils::qn(col)); - } - } + // TODO: enable later update + // if constexpr (modes::isFlagSet(system, modes::System::kPbPb)) { + // if (mProduceQns) { + // collisionProducts.producedQns(utils::qn(col)); + // } + // } mCollisionAlreadyFilled = true; } diff --git a/PWGCF/Femto/Core/mcBuilder.h b/PWGCF/Femto/Core/mcBuilder.h index d799265dd88..812de9b7fca 100644 --- a/PWGCF/Femto/Core/mcBuilder.h +++ b/PWGCF/Femto/Core/mcBuilder.h @@ -230,9 +230,15 @@ class McBuilder template void fillMcCollision(T1 const& mcCol, T2& mcProducts) { - mcProducts.producedMcCollisions( - mcCol.multMCNParticlesEta08(), - mcCol.centFT0M()); + float centrality = -1; + if constexpr (modes::isFlagSet(system, modes::System::kPP)) { + centrality = mcCol.centFT0M(); + } + if constexpr (modes::isFlagSet(system, modes::System::kPbPb)) { + centrality = mcCol.centFT0C(); + } + + mcProducts.producedMcCollisions(mcCol.multMCNParticlesEta08(), centrality); mCollisionMap.emplace(mcCol.globalIndex(), mcProducts.producedMcCollisions.lastIndex()); } diff --git a/PWGCF/Femto/Core/modes.h b/PWGCF/Femto/Core/modes.h index c694e1916a6..5e1d18ce162 100644 --- a/PWGCF/Femto/Core/modes.h +++ b/PWGCF/Femto/Core/modes.h @@ -69,6 +69,7 @@ enum class System : uint32_t { kPP_Run3_MC = kPP | kRun3 | kMC, kPP_Run2 = kPP | kRun2, kPbPb_Run3 = kPbPb | kRun3, + kPbPb_Run3_MC = kPbPb | kRun3 | kMC, kPbPb_Run2 = kPbPb | kRun2, }; diff --git a/PWGCF/Femto/TableProducer/femtoProducer.cxx b/PWGCF/Femto/TableProducer/femtoProducer.cxx index ce58dbbd4a7..3f1bef7f42f 100644 --- a/PWGCF/Femto/TableProducer/femtoProducer.cxx +++ b/PWGCF/Femto/TableProducer/femtoProducer.cxx @@ -54,7 +54,12 @@ namespace consumeddata { using Run3PpCollisions = o2::soa::Join; using Run3PpMcRecoCollisions = o2::soa::Join; -using Run3PpMcGenCollisions = o2::soa::Join; +using Run3PpMcGenCollisions = o2::soa::Join; + +using Run3PbPbCollisions = o2::soa::Join; + +using Run3PbPbMcRecoCollisions = o2::soa::Join; +using Run3PbPbMcGenCollisions = o2::soa::Join; using Run3FullPidTracks = soa::Join(col, bcs, tracks)) { + return; + } + auto tracksWithItsPid = o2::soa::Attach(tracks); + processTracks(col, tracksWithItsPid); + } + PROCESS_SWITCH(FemtoProducer, processTracksRun3PbPb, "Process tracks in PbPB collisions", false); + // process tracks and v0s void processTracksV0sRun3pp(consumeddata::Run3PpCollisions::iterator const& col, o2::aod::BCsWithTimestamps const& bcs, @@ -304,6 +322,21 @@ struct FemtoProducer { }; PROCESS_SWITCH(FemtoProducer, processTracksV0sRun3pp, "Process tracks and v0s", false); + void processTracksV0sRun3PbPb(consumeddata::Run3PbPbCollisions::iterator const& col, + o2::aod::BCsWithTimestamps const& bcs, + consumeddata::Run3FullPidTracks const& tracks, + consumeddata::Run3Vzeros const& v0s) + { + if (!processCollisions(col, bcs, tracks)) { + return; + } + auto tracksWithItsPid = o2::soa::Attach(tracks); + processTracks(col, tracksWithItsPid); + processV0s(col, tracks, v0s); + }; + PROCESS_SWITCH(FemtoProducer, processTracksV0sRun3PbPb, "Process tracks and v0s in PbPB collisions", false); + // process tracks and kinks void processTracksKinksRun3pp(consumeddata::Run3PpCollisions::iterator const& col, o2::aod::BCsWithTimestamps const& bcs, @@ -374,6 +407,21 @@ struct FemtoProducer { } PROCESS_SWITCH(FemtoProducer, processTracksRun3ppMc, "Provide reconstructed and generated Tracks", false); + void processTracksRun3PbPbMc(consumeddata::Run3PbPbMcRecoCollisions::iterator const& col, + consumeddata::Run3PbPbMcGenCollisions const& mcCols, + o2::aod::BCsWithTimestamps const& bcs, + consumeddata::Run3McRecoTracks const& tracks, + consumeddata::Run3McGenParticles const& mcParticles) + { + if (!processMcCollisions(col, mcCols, bcs, tracks, mcParticles)) { + return; + } + auto tracksWithItsPid = o2::soa::Attach(tracks); + processMcTracks(col, mcCols, tracks, tracksWithItsPid, mcParticles); + } + PROCESS_SWITCH(FemtoProducer, processTracksRun3PbPbMc, "Provide reconstructed and generated Tracks in PbPb collisions", false); + // process monte carlo tracks and v0s void processTracksV0sRun3ppMc(consumeddata::Run3PpMcRecoCollisions::iterator const& col, consumeddata::Run3PpMcGenCollisions const& mcCols, @@ -392,6 +440,23 @@ struct FemtoProducer { } PROCESS_SWITCH(FemtoProducer, processTracksV0sRun3ppMc, "Provide reconstructed and generated tracks and v0s", false); + void processTracksV0sRun3PbPbMc(consumeddata::Run3PbPbMcRecoCollisions::iterator const& col, + consumeddata::Run3PbPbMcGenCollisions const& mcCols, + o2::aod::BCsWithTimestamps const& bcs, + consumeddata::Run3McRecoTracks const& tracks, + consumeddata::Run3RecoVzeros const& v0s, + consumeddata::Run3McGenParticles const& mcParticles) + { + if (!processMcCollisions(col, mcCols, bcs, tracks, mcParticles)) { + return; + } + auto tracksWithItsPid = o2::soa::Attach(tracks); + processMcTracks(col, mcCols, tracks, tracksWithItsPid, mcParticles); + processMcV0s(col, mcCols, tracks, v0s, mcParticles); + } + PROCESS_SWITCH(FemtoProducer, processTracksV0sRun3PbPbMc, "Provide reconstructed and generated tracks and v0s in PbPb collisions", false); + // process monte carlo tracks and kinks void processTracksKinksRun3ppMc(consumeddata::Run3PpMcRecoCollisions::iterator const& col, consumeddata::Run3PpMcGenCollisions const& mcCols,