Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 24 additions & 39 deletions PWGHF/D2H/Tasks/taskDs.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ struct HfTaskDs {

HfHelper hfHelper;

using CentralityEstimator = o2::hf_centrality::CentralityEstimator;
using TH1_ptr = std::shared_ptr<TH1>;
using TH2_ptr = std::shared_ptr<TH2>;
using THnSparse_ptr = std::shared_ptr<THnSparse>;
Expand All @@ -101,15 +100,8 @@ struct HfTaskDs {
using CandDsMcRecoWithMl = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi, aod::HfCand3ProngMcRec, aod::HfMlDsToKKPi>>;
using CandDsMcGen = soa::Join<aod::McParticles, aod::HfCand3ProngMcGen>;

Preslice<CandDsData> candDsDataPerCollision = aod::hf_cand::collisionId;
Preslice<CandDsDataWithMl> candDsDataWithMlPerCollision = aod::hf_cand::collisionId;
Preslice<CandDsMcReco> candDsMcRecoPerCollision = aod::hf_cand::collisionId;
Preslice<CandDsMcRecoWithMl> candDsMcRecoWithMlPerCollision = aod::hf_cand::collisionId;

PresliceUnsorted<CollisionsMc> colPerMcCollision = aod::mccollisionlabel::mcCollisionId;
PresliceUnsorted<CollisionsMcWithFT0C> colPerMcCollisionWithFT0C = aod::mccollisionlabel::mcCollisionId;
PresliceUnsorted<CollisionsMcWithFT0M> colPerMcCollisionWithFT0M = aod::mccollisionlabel::mcCollisionId;
PresliceUnsorted<CollisionsMcWithNTracksPV> colPerMcCollisionWithNTracksPV = aod::mccollisionlabel::mcCollisionId;
Preslice<aod::HfCand3Prong> candDsPerCollision = aod::hf_cand::collisionId;
PresliceUnsorted<aod::McCollisionLabels> colPerMcCollision = aod::mccollisionlabel::mcCollisionId;
SliceCache cache;

int offsetDplusDecayChannel = aod::hf_cand_3prong::DecayChannelDToKKPi::DplusToPhiPi - aod::hf_cand_3prong::DecayChannelDToKKPi::DsToPhiPi; // Offset between Dplus and Ds to use the same decay channel. See aod::hf_cand_3prong::DecayChannelDToKKPi
Expand All @@ -128,12 +120,6 @@ struct HfTaskDs {
std::unordered_map<std::string, histTypes> mcDplusBkgHistograms = {};
std::unordered_map<std::string, histTypes> mcBkgHistograms = {};

std::map<CentralityEstimator, std::variant<PresliceUnsorted<CollisionsMc>, PresliceUnsorted<CollisionsMcWithFT0C>, PresliceUnsorted<CollisionsMcWithFT0M>, PresliceUnsorted<CollisionsMcWithNTracksPV>>> colPerMcCollisionMap{
{CentralityEstimator::None, colPerMcCollision},
{CentralityEstimator::FT0C, colPerMcCollisionWithFT0C},
{CentralityEstimator::FT0M, colPerMcCollisionWithFT0M},
{CentralityEstimator::NTracksPV, colPerMcCollisionWithNTracksPV}};

std::array<std::unordered_map<std::string, histTypes>, DataType::kDataTypes> histosPtr = {dataHistograms, mcDsPromptHistograms, mcDsNonPromptHistograms, mcDplusPromptHistograms, mcDplusNonPromptHistograms, mcDplusBkgHistograms, mcBkgHistograms};

void init(InitContext&)
Expand Down Expand Up @@ -511,7 +497,7 @@ struct HfTaskDs {
// TODO: add histograms for reflections
}

template <CentralityEstimator centDetector, typename Coll>
template <typename Coll>
void fillMcGenHistos(CandDsMcGen const& mcParticles,
Coll const& recoCollisions)
{
Expand All @@ -523,7 +509,7 @@ struct HfTaskDs {
double y{0.f};

unsigned maxNumContrib = 0;
const auto& recoCollsPerMcColl = recoCollisions.sliceBy(std::get<PresliceUnsorted<Coll>>(colPerMcCollisionMap.at(centDetector)), particle.mcCollision().globalIndex());
const auto& recoCollsPerMcColl = recoCollisions.sliceBy(colPerMcCollision, particle.mcCollision().globalIndex());
for (const auto& recCol : recoCollsPerMcColl) {
maxNumContrib = recCol.numContrib() > maxNumContrib ? recCol.numContrib() : maxNumContrib;
}
Expand Down Expand Up @@ -588,7 +574,7 @@ struct HfTaskDs {
}

template <typename Coll, typename CandsDs>
void runDataAnalysisPerCollision(const Coll& collisions, const CandsDs& candsDs, Preslice<CandsDs> candDsPerCollision)
void runDataAnalysisPerCollision(const Coll& collisions, const CandsDs& candsDs)
{
for (const auto& collision : collisions) {
auto thisCollId = collision.globalIndex();
Expand All @@ -615,11 +601,10 @@ struct HfTaskDs {
}
}

template <CentralityEstimator centDetector, typename Coll, typename CandsDs, typename CandDsMcGen>
template <typename Coll, typename CandsDs, typename CandDsMcGen>
void runMcAnalysisPerCollision(const Coll& collisions,
const CandsDs& candsDs,
const CandDsMcGen& mcParticles,
Preslice<CandsDs> candDsPerCollision)
const CandDsMcGen& mcParticles)
{
for (const auto& collision : collisions) {
auto thisCollId = collision.globalIndex();
Expand Down Expand Up @@ -673,70 +658,70 @@ struct HfTaskDs {
}
fillNPvContribHisto(collision, nCandsPerType, nCandsInSignalRegionDsPerType, nCandsInSignalRegionDplusPerType);
}
fillMcGenHistos<centDetector>(mcParticles, collisions);
fillMcGenHistos(mcParticles, collisions);
}

void processDataWithCentFT0C(CollisionsWithFT0C const& collisions,
CandDsData const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processDataWithCentFT0C, "Process data w/o ML information on Ds, with information on centrality from FT0C", false);

void processDataWithCentFT0M(CollisionsWithFT0M const& collisions,
CandDsData const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processDataWithCentFT0M, "Process data w/o ML information on Ds, with information on centrality from FT0M", false);

void processDataWithCentNTracksPV(CollisionsWithNTracksPV const& collisions,
CandDsData const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processDataWithCentNTracksPV, "Process data w/o ML information on Ds, with information on centrality from NTracksPV", false);

void processData(soa::Join<aod::Collisions, aod::EvSels> const& collisions,
CandDsData const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processData, "Process data w/o ML information on Ds, w/o information on centrality", true);

void processDataWithMlAndCentFT0C(CollisionsWithFT0C const& collisions,
CandDsDataWithMl const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processDataWithMlAndCentFT0C, "Process data with ML information on Ds, with information on centrality from FT0C", false);

void processDataWithMlAndCentFT0M(CollisionsWithFT0M const& collisions,
CandDsDataWithMl const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processDataWithMlAndCentFT0M, "Process data with ML information on Ds, with information on centrality from FT0M", false);

void processDataWithMlAndCentNTracksPV(CollisionsWithNTracksPV const& collisions,
CandDsDataWithMl const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processDataWithMlAndCentNTracksPV, "Process data with ML information on Ds, with information on centrality", false);

void processDataWithMl(soa::Join<aod::Collisions, aod::EvSels> const& collisions,
CandDsDataWithMl const& candsDs,
aod::Tracks const&)
{
runDataAnalysisPerCollision(collisions, candsDs, candDsDataWithMlPerCollision);
runDataAnalysisPerCollision(collisions, candsDs);
}
PROCESS_SWITCH(HfTaskDs, processDataWithMl, "Process data with ML information on Ds, w/o information on centrality", false);

Expand All @@ -746,7 +731,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::FT0C, CollisionsMcWithFT0C>(collisions, candsDs, mcParticles, candDsMcRecoPerCollision);
runMcAnalysisPerCollision<CollisionsMcWithFT0C>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMcWithCentFT0C, "Process MC w/o ML information on Ds, with information on centrality from FT0C", false);

Expand All @@ -756,7 +741,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::FT0M, CollisionsMcWithFT0M>(collisions, candsDs, mcParticles, candDsMcRecoPerCollision);
runMcAnalysisPerCollision<CollisionsMcWithFT0M>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMcWithCentFT0M, "Process MC w/o ML information on Ds, with information on centrality from FT0M", false);

Expand All @@ -766,7 +751,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::NTracksPV, CollisionsMcWithNTracksPV>(collisions, candsDs, mcParticles, candDsMcRecoPerCollision);
runMcAnalysisPerCollision<CollisionsMcWithNTracksPV>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMcWithCentNTracksPV, "Process MC w/o ML information on Ds, with information on centrality from NTracksPV", false);

Expand All @@ -776,7 +761,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::None, CollisionsMc>(collisions, candsDs, mcParticles, candDsMcRecoPerCollision);
runMcAnalysisPerCollision<CollisionsMc>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMc, "Process MC w/o ML information on Ds, w/o information on centrality", false);

Expand All @@ -786,7 +771,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::FT0C, CollisionsMcWithFT0C>(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision);
runMcAnalysisPerCollision<CollisionsMcWithFT0C>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentFT0C, "Process MC with ML information on Ds, with information on centrality from FT0C", false);

Expand All @@ -796,7 +781,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::FT0M, CollisionsMcWithFT0M>(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision);
runMcAnalysisPerCollision<CollisionsMcWithFT0M>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentFT0M, "Process MC with ML information on Ds, with information on centrality from FT0M", false);

Expand All @@ -806,7 +791,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::NTracksPV, CollisionsMcWithNTracksPV>(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision);
runMcAnalysisPerCollision<CollisionsMcWithNTracksPV>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMcWithMlAndCentNTracksPV, "Process MC with ML information on Ds, with information on centrality from NTracksPV", false);

Expand All @@ -816,7 +801,7 @@ struct HfTaskDs {
aod::McCollisions const&,
aod::TracksWMc const&)
{
runMcAnalysisPerCollision<CentralityEstimator::None, CollisionsMc>(collisions, candsDs, mcParticles, candDsMcRecoWithMlPerCollision);
runMcAnalysisPerCollision<CollisionsMc>(collisions, candsDs, mcParticles);
}
PROCESS_SWITCH(HfTaskDs, processMcWithMl, "Process MC with ML information on Ds, w/o information on centrality", false);
};
Expand Down