Skip to content
Merged
Show file tree
Hide file tree
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
8 changes: 4 additions & 4 deletions PWGCF/Femto/Core/baseSelection.h
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ class BaseSelection

/// \brief Check whether all required and optional cuts are passed.
/// \return True if all minimal cuts pass and, if optional cuts are present, at least one of them passes.
bool passesAllRequiredSelections() const
[[nodiscard]] bool passesAllRequiredSelections() const
{
if (mHasMinimalSelection && !mHasOptionalSelection) {
return mPassesMinimalSelections;
Expand All @@ -275,14 +275,14 @@ class BaseSelection
/// \brief Check whether the optional selection for a specific observable is passed.
/// \param observableIndex Index of the observable.
/// \return True if at least one optional selection for this observable is fulfilled.
bool passesOptionalSelection(int observableIndex) const
[[nodiscard]] bool passesOptionalSelection(int observableIndex) const
{
return mSelectionContainers.at(observableIndex).passesAsOptionalCut();
}

/// \brief Assemble the global selection bitmask from all individual observable selections.
/// \tparam HistName Name of the histogram used to track selection statistics.
template <const char* HistName>
template <auto& HistName>
void assembleBitmask()
{
mHistRegistry->fill(HIST(HistName), mNSelection);
Expand Down Expand Up @@ -391,7 +391,7 @@ class BaseSelection
/// \brief Initialize histograms and set bitmask offsets for all configured observables.
/// \tparam HistName Name of the histogram to create in the registry.
/// \param registry Pointer to the histogram registry.
template <const char* HistName>
template <auto& HistName>
void setupContainers(o2::framework::HistogramRegistry* registry)
{
mHistRegistry = registry;
Expand Down
103 changes: 57 additions & 46 deletions PWGCF/Femto/Core/cascadeBuilder.h

Large diffs are not rendered by default.

111 changes: 56 additions & 55 deletions PWGCF/Femto/Core/cascadeHistManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,7 @@
#include <string_view>
#include <vector>

namespace o2::analysis::femto
{
namespace cascadehistmanager
namespace o2::analysis::femto::cascadehistmanager
{
// enum for track histograms
enum CascadeHist {
Expand Down Expand Up @@ -90,7 +88,7 @@ enum CascadeHist {

constexpr std::size_t MaxSecondary = 3;

template <const char* Prefix>
template <auto& Prefix>
struct ConfCascadeBinning : o2::framework::ConfigurableGroup {
std::string prefix = Prefix;
o2::framework::ConfigurableAxis pt{"pt", {{600, 0, 6}}, "Pt"};
Expand All @@ -106,7 +104,7 @@ using ConfXiBinning = ConfCascadeBinning<PrefixXiBinning>;
constexpr const char PrefixOmegaBinning[] = "OmegaBinning";
using ConfOmegaBinning = ConfCascadeBinning<PrefixOmegaBinning>;

template <const char* Prefix>
template <auto& Prefix>
struct ConfCascadeQaBinning : o2::framework::ConfigurableGroup {
std::string prefix = Prefix;
o2::framework::Configurable<bool> plot2d{"plot2d", true, "Enable 2d Qa histograms"};
Expand Down Expand Up @@ -136,7 +134,7 @@ constexpr std::array<histmanager::HistInfo<CascadeHist>, kCascadeHistLast> HistT
{kEta, o2::framework::HistType::kTH1F, "hEta", "Pseudorapdity; #eta; Entries"},
{kPhi, o2::framework::HistType::kTH1F, "hPhi", "Azimuthal angle; #varphi; Entries"},
{kMass, o2::framework::HistType::kTH1F, "hMass", "Invariant Mass; m_{Inv} (GeV/#it{c}^{2}); Entries"},
{kSign, o2::framework::HistType::kTH1F, "hSign", "Sign (-1 -> antiparticle, 0 -> self conjugate, +1 -> particle); sign; Entries"},
{kSign, o2::framework::HistType::kTH1F, "hSign", "Sign (-1 -> particle, 0 -> self conjugate, +1 -> antiparticle); sign; Entries"},
{kPtVsMass, o2::framework::HistType::kTH2F, "hPtVsMass", "Transverse momentum vs invariant mass; p_{T} (GeV/#it{c}); m_{Inv} (GeV/#it{c}^{2})"},
{kMassXi, o2::framework::HistType::kTH1F, "hMassXi", "Mass #Xi; m_{#Lambda#pi} (GeV/#it{c}^{2}); Entries"},
{kMassOmega, o2::framework::HistType::kTH1F, "hMassOmega", "mass #Omega; m_{#LambdaK} (GeV/#it{c}^{2}); Entries"},
Expand Down Expand Up @@ -172,50 +170,54 @@ constexpr std::array<histmanager::HistInfo<CascadeHist>, kCascadeHistLast> HistT
{kSecondaryOther, o2::framework::HistType::kTH2F, "hFromSecondaryOther", "Particles from every other secondary decay; p_{T} (GeV/#it{c}); cos(#alpha)"}},
};

// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CASCADE_HIST_ANALYSIS_MAP(conf) \
{kPt, {conf.pt}}, \
{kEta, {conf.eta}}, \
{kPhi, {conf.phi}}, \
{kMass, {conf.mass}}, \
{kSign, {conf.sign}}, \
{kPtVsMass, {conf.pt, conf.mass}},

#define CASCADE_HIST_MC_MAP(conf) \
{kTruePtVsPt, {conf.pt, conf.pt}}, \
{kTrueEtaVsEta, {conf.eta, conf.eta}}, \
{kTruePhiVsPhi, {conf.phi, conf.phi}}, \
{kPdg, {conf.pdgCodes}}, \
{kPdgMother, {conf.pdgCodes}}, \
{kPdgPartonicMother, {conf.pdgCodes}},

#define CASCADE_HIST_QA_MAP(confAnalysis, confQa) \
{kCosPa, {confQa.cosPa}}, \
{kDecayDauDca, {confQa.dauDcaAtDecay}}, \
{kTransRadius, {confQa.transRadius}}, \
{kLambdaCosPa, {confQa.lambdaCosPa}}, \
{kLambdaDauDca, {confQa.lambdaDauDca}}, \
{kLambdaTransRadius, {confQa.lambdaTransRadius}}, \
{kLambdaDcaToPv, {confQa.lambdaDcaToPv}}, \
{kPtVsEta, {confAnalysis.pt, confAnalysis.eta}}, \
{kPtVsPhi, {confAnalysis.pt, confAnalysis.phi}}, \
{kPhiVsEta, {confAnalysis.phi, confAnalysis.eta}}, \
{kPtVsCosPa, {confAnalysis.pt, confQa.cosPa}}, \
{kMassXi, {confQa.massXi}}, \
{kMassOmega, {confQa.massOmega}}, \
{kPtVsMassXi, {confAnalysis.pt, confQa.massXi}}, \
{kPtVsMassOmega, {confAnalysis.pt, confQa.massOmega}}, \
{kMassXiVsMassOmega, {confQa.massXi, confQa.massOmega}},

#define CASCADE_HIST_MC_QA_MAP(confAnalysis, confQa) \
{kNoMcParticle, {confAnalysis.pt, confQa.cosPa}}, \
{kPrimary, {confAnalysis.pt, confQa.cosPa}}, \
{kFromWrongCollision, {confAnalysis.pt, confQa.cosPa}}, \
{kFromMaterial, {confAnalysis.pt, confQa.cosPa}}, \
{kMissidentified, {confAnalysis.pt, confQa.cosPa}}, \
{kSecondary1, {confAnalysis.pt, confQa.cosPa}}, \
{kSecondary2, {confAnalysis.pt, confQa.cosPa}}, \
{kSecondary3, {confAnalysis.pt, confQa.cosPa}}, \
{kSecondaryOther, {confAnalysis.pt, confQa.cosPa}},
{kPt, {(conf).pt}}, \
{kEta, {(conf).eta}}, \
{kPhi, {(conf).phi}}, \
{kMass, {(conf).mass}}, \
{kSign, {(conf).sign}}, \
{kPtVsMass, {(conf).pt, (conf).mass}},

// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CASCADE_HIST_MC_MAP(conf) \
{kTruePtVsPt, {(conf).pt, (conf).pt}}, \
{kTrueEtaVsEta, {(conf).eta, (conf).eta}}, \
{kTruePhiVsPhi, {(conf).phi, (conf).phi}}, \
{kPdg, {(conf).pdgCodes}}, \
{kPdgMother, {(conf).pdgCodes}}, \
{kPdgPartonicMother, {(conf).pdgCodes}},

// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CASCADE_HIST_QA_MAP(confAnalysis, confQa) \
{kCosPa, {(confQa).cosPa}}, \
{kDecayDauDca, {(confQa).dauDcaAtDecay}}, \
{kTransRadius, {(confQa).transRadius}}, \
{kLambdaCosPa, {(confQa).lambdaCosPa}}, \
{kLambdaDauDca, {(confQa).lambdaDauDca}}, \
{kLambdaTransRadius, {(confQa).lambdaTransRadius}}, \
{kLambdaDcaToPv, {(confQa).lambdaDcaToPv}}, \
{kPtVsEta, {(confAnalysis).pt, (confAnalysis).eta}}, \
{kPtVsPhi, {(confAnalysis).pt, (confAnalysis).phi}}, \
{kPhiVsEta, {(confAnalysis).phi, (confAnalysis).eta}}, \
{kPtVsCosPa, {(confAnalysis).pt, (confQa).cosPa}}, \
{kMassXi, {(confQa).massXi}}, \
{kMassOmega, {(confQa).massOmega}}, \
{kPtVsMassXi, {(confAnalysis).pt, (confQa).massXi}}, \
{kPtVsMassOmega, {(confAnalysis).pt, (confQa).massOmega}}, \
{kMassXiVsMassOmega, {(confQa).massXi, (confQa).massOmega}},

// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CASCADE_HIST_MC_QA_MAP(confAnalysis, confQa) \
{kNoMcParticle, {(confAnalysis).pt, (confQa).cosPa}}, \
{kPrimary, {(confAnalysis).pt, (confQa).cosPa}}, \
{kFromWrongCollision, {(confAnalysis).pt, (confQa).cosPa}}, \
{kFromMaterial, {(confAnalysis).pt, (confQa).cosPa}}, \
{kMissidentified, {(confAnalysis).pt, (confQa).cosPa}}, \
{kSecondary1, {(confAnalysis).pt, (confQa).cosPa}}, \
{kSecondary2, {(confAnalysis).pt, (confQa).cosPa}}, \
{kSecondary3, {(confAnalysis).pt, (confQa).cosPa}}, \
{kSecondaryOther, {(confAnalysis).pt, (confQa).cosPa}},

template <typename T>
auto makeCascadeHistSpecMap(const T& confBinningAnalysis)
Expand Down Expand Up @@ -269,10 +271,10 @@ constexpr std::string_view McDir = "MC/";
/// \class FemtoDreamEventHisto
/// \brief Class for histogramming event properties
// template <femtomodes::Mode mode>
template <const char* cascadePrefix,
const char* bachelorPrefix,
const char* posDauPrefix,
const char* negDauPrefix,
template <auto& cascadePrefix,
auto& bachelorPrefix,
auto& posDauPrefix,
auto& negDauPrefix,
modes::Cascade cascade>
class CascadeHistManager
{
Expand Down Expand Up @@ -687,6 +689,5 @@ class CascadeHistManager
trackhistmanager::TrackHistManager<posDauPrefix> mPosDauManager;
trackhistmanager::TrackHistManager<negDauPrefix> mNegDauManager;
};
}; // namespace cascadehistmanager
}; // namespace o2::analysis::femto
} // namespace o2::analysis::femto::cascadehistmanager
#endif // PWGCF_FEMTO_CORE_CASCADEHISTMANAGER_H_
47 changes: 20 additions & 27 deletions PWGCF/Femto/Core/closePairRejection.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2022 CERN and copyright holders of ALICE O2.
// Copyright 2019-2025 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
Expand Down Expand Up @@ -38,9 +38,7 @@
#include <string>
#include <vector>

namespace o2::analysis::femto
{
namespace closepairrejection
namespace o2::analysis::femto::closepairrejection
{
// enum for track histograms
enum CprHist {
Expand All @@ -61,7 +59,7 @@ enum CprHist {
};

// template configurable group for Cpr
template <const char* Prefix>
template <auto& Prefix>
struct ConfCpr : o2::framework::ConfigurableGroup {
std::string prefix = std::string(Prefix);
o2::framework::Configurable<bool> cutAverage{"cutAverage", true, "Apply CPR if the average deta-dphistar is below the configured values"};
Expand Down Expand Up @@ -165,7 +163,7 @@ auto makeCprHistSpecMap(const T& confCpr)
};
};

template <const char* prefix>
template <auto& prefix>
class CloseTrackRejection
{
public:
Expand Down Expand Up @@ -205,7 +203,7 @@ class CloseTrackRejection
mPlotAngularCorrelation = confCpr.plotAngularCorrelation.value;

if (confCpr.seed.value >= 0) {
uint64_t randomSeed;
uint64_t randomSeed = 0;
mRandomizeTracks = true;
if (confCpr.seed.value == 0) {
randomSeed = static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
Expand Down Expand Up @@ -346,7 +344,7 @@ class CloseTrackRejection
}
}

bool isClosePair() const
[[nodiscard]] bool isClosePair() const
{
if (!mIsActivated) {
return false;
Expand All @@ -371,7 +369,7 @@ class CloseTrackRejection
return isCloseAverage || isCloseAnyRadius;
}

bool isActivated() const { return mIsActivated; }
[[nodiscard]] bool isActivated() const { return mIsActivated; }

private:
std::optional<float> phistar(float magfield, float radius, float signedPt, float phi)
Expand Down Expand Up @@ -421,7 +419,7 @@ class CloseTrackRejection
std::uniform_int_distribution<int> mSwapDist{0, 1};
};

template <const char* prefix>
template <auto& prefix>
class ClosePairRejectionTrackTrack
{
public:
Expand All @@ -441,14 +439,14 @@ class ClosePairRejectionTrackTrack
{
mCtr.compute(track1, track2);
}
bool isClosePair() const { return mCtr.isClosePair(); }
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }
void fill(float kstar) { mCtr.fill(kstar); }

private:
CloseTrackRejection<prefix> mCtr;
};

template <const char* prefixPosDaus, const char* prefixNegDaus>
template <auto& prefixPosDaus, auto& prefixNegDaus>
class ClosePairRejectionV0V0
{
public:
Expand Down Expand Up @@ -481,7 +479,7 @@ class ClosePairRejectionV0V0
mCtrNeg.compute(negDau1, negDau2);
}

bool isClosePair() const { return mCtrPos.isClosePair() || mCtrNeg.isClosePair(); }
[[nodiscard]] bool isClosePair() const { return mCtrPos.isClosePair() || mCtrNeg.isClosePair(); }

void fill(float kstar)
{
Expand All @@ -494,7 +492,7 @@ class ClosePairRejectionV0V0
CloseTrackRejection<prefixNegDaus> mCtrNeg;
};

template <const char* prefixTrackV0>
template <auto& prefixTrackV0>
class ClosePairRejectionTrackV0 // can also be used for any particle type that has pos/neg daughters, like resonances
{
public:
Expand All @@ -521,15 +519,15 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h
}
}

bool isClosePair() const { return mCtr.isClosePair(); }
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }

void fill(float kstar) { mCtr.fill(kstar); }

private:
CloseTrackRejection<prefixTrackV0> mCtr;
};

template <const char* prefixBachelor, const char* prefixV0Daughter>
template <auto& prefixBachelor, auto& prefixV0Daughter>
class ClosePairRejectionTrackCascade
{
public:
Expand Down Expand Up @@ -566,11 +564,7 @@ class ClosePairRejectionTrackCascade
}
}

bool
isClosePair() const
{
return mCtrBachelor.isClosePair();
}
[[nodiscard]] bool isClosePair() const { return mCtrBachelor.isClosePair(); }

void fill(float kstar)
{
Expand All @@ -583,7 +577,7 @@ class ClosePairRejectionTrackCascade
CloseTrackRejection<prefixV0Daughter> mCtrV0Daughter;
};

template <const char* prefix>
template <auto& prefix>
class ClosePairRejectionTrackKink
{
public:
Expand All @@ -608,14 +602,14 @@ class ClosePairRejectionTrackKink
mCtr.compute(track, daughter);
}

bool isClosePair() const { return mCtr.isClosePair(); }
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }
void fill(float kstar) { mCtr.fill(kstar); }

private:
CloseTrackRejection<prefix> mCtr;
};

template <const char* prefix>
template <auto& prefix>
class ClosePairRejectionMcParticleMcParticle
{
public:
Expand All @@ -632,13 +626,12 @@ class ClosePairRejectionMcParticleMcParticle
{
mCtr.compute(mcParticle1, mcParticle2);
}
bool isClosePair() const { return mCtr.isClosePair(); }
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }
void fill(float kstar) { mCtr.fill(kstar); }

private:
CloseTrackRejection<prefix> mCtr;
};

}; // namespace closepairrejection
}; // namespace o2::analysis::femto
}; // namespace o2::analysis::femto::closepairrejection
#endif // PWGCF_FEMTO_CORE_CLOSEPAIRREJECTION_H_
Loading
Loading