Skip to content

Commit 29a2746

Browse files
[PWGCF] Fixes in femto framework (#16938)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 194f417 commit 29a2746

54 files changed

Lines changed: 1296 additions & 1328 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

PWGCF/Femto/Core/baseSelection.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ class BaseSelection
257257

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

283283
/// \brief Assemble the global selection bitmask from all individual observable selections.
284284
/// \tparam HistName Name of the histogram used to track selection statistics.
285-
template <const char* HistName>
285+
template <auto& HistName>
286286
void assembleBitmask()
287287
{
288288
mHistRegistry->fill(HIST(HistName), mNSelection);
@@ -391,7 +391,7 @@ class BaseSelection
391391
/// \brief Initialize histograms and set bitmask offsets for all configured observables.
392392
/// \tparam HistName Name of the histogram to create in the registry.
393393
/// \param registry Pointer to the histogram registry.
394-
template <const char* HistName>
394+
template <auto& HistName>
395395
void setupContainers(o2::framework::HistogramRegistry* registry)
396396
{
397397
mHistRegistry = registry;

PWGCF/Femto/Core/cascadeBuilder.h

Lines changed: 57 additions & 46 deletions
Large diffs are not rendered by default.

PWGCF/Femto/Core/cascadeHistManager.h

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@
3636
#include <string_view>
3737
#include <vector>
3838

39-
namespace o2::analysis::femto
40-
{
41-
namespace cascadehistmanager
39+
namespace o2::analysis::femto::cascadehistmanager
4240
{
4341
// enum for track histograms
4442
enum CascadeHist {
@@ -90,7 +88,7 @@ enum CascadeHist {
9088

9189
constexpr std::size_t MaxSecondary = 3;
9290

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

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

173+
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
175174
#define CASCADE_HIST_ANALYSIS_MAP(conf) \
176-
{kPt, {conf.pt}}, \
177-
{kEta, {conf.eta}}, \
178-
{kPhi, {conf.phi}}, \
179-
{kMass, {conf.mass}}, \
180-
{kSign, {conf.sign}}, \
181-
{kPtVsMass, {conf.pt, conf.mass}},
182-
183-
#define CASCADE_HIST_MC_MAP(conf) \
184-
{kTruePtVsPt, {conf.pt, conf.pt}}, \
185-
{kTrueEtaVsEta, {conf.eta, conf.eta}}, \
186-
{kTruePhiVsPhi, {conf.phi, conf.phi}}, \
187-
{kPdg, {conf.pdgCodes}}, \
188-
{kPdgMother, {conf.pdgCodes}}, \
189-
{kPdgPartonicMother, {conf.pdgCodes}},
190-
191-
#define CASCADE_HIST_QA_MAP(confAnalysis, confQa) \
192-
{kCosPa, {confQa.cosPa}}, \
193-
{kDecayDauDca, {confQa.dauDcaAtDecay}}, \
194-
{kTransRadius, {confQa.transRadius}}, \
195-
{kLambdaCosPa, {confQa.lambdaCosPa}}, \
196-
{kLambdaDauDca, {confQa.lambdaDauDca}}, \
197-
{kLambdaTransRadius, {confQa.lambdaTransRadius}}, \
198-
{kLambdaDcaToPv, {confQa.lambdaDcaToPv}}, \
199-
{kPtVsEta, {confAnalysis.pt, confAnalysis.eta}}, \
200-
{kPtVsPhi, {confAnalysis.pt, confAnalysis.phi}}, \
201-
{kPhiVsEta, {confAnalysis.phi, confAnalysis.eta}}, \
202-
{kPtVsCosPa, {confAnalysis.pt, confQa.cosPa}}, \
203-
{kMassXi, {confQa.massXi}}, \
204-
{kMassOmega, {confQa.massOmega}}, \
205-
{kPtVsMassXi, {confAnalysis.pt, confQa.massXi}}, \
206-
{kPtVsMassOmega, {confAnalysis.pt, confQa.massOmega}}, \
207-
{kMassXiVsMassOmega, {confQa.massXi, confQa.massOmega}},
208-
209-
#define CASCADE_HIST_MC_QA_MAP(confAnalysis, confQa) \
210-
{kNoMcParticle, {confAnalysis.pt, confQa.cosPa}}, \
211-
{kPrimary, {confAnalysis.pt, confQa.cosPa}}, \
212-
{kFromWrongCollision, {confAnalysis.pt, confQa.cosPa}}, \
213-
{kFromMaterial, {confAnalysis.pt, confQa.cosPa}}, \
214-
{kMissidentified, {confAnalysis.pt, confQa.cosPa}}, \
215-
{kSecondary1, {confAnalysis.pt, confQa.cosPa}}, \
216-
{kSecondary2, {confAnalysis.pt, confQa.cosPa}}, \
217-
{kSecondary3, {confAnalysis.pt, confQa.cosPa}}, \
218-
{kSecondaryOther, {confAnalysis.pt, confQa.cosPa}},
175+
{kPt, {(conf).pt}}, \
176+
{kEta, {(conf).eta}}, \
177+
{kPhi, {(conf).phi}}, \
178+
{kMass, {(conf).mass}}, \
179+
{kSign, {(conf).sign}}, \
180+
{kPtVsMass, {(conf).pt, (conf).mass}},
181+
182+
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
183+
#define CASCADE_HIST_MC_MAP(conf) \
184+
{kTruePtVsPt, {(conf).pt, (conf).pt}}, \
185+
{kTrueEtaVsEta, {(conf).eta, (conf).eta}}, \
186+
{kTruePhiVsPhi, {(conf).phi, (conf).phi}}, \
187+
{kPdg, {(conf).pdgCodes}}, \
188+
{kPdgMother, {(conf).pdgCodes}}, \
189+
{kPdgPartonicMother, {(conf).pdgCodes}},
190+
191+
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
192+
#define CASCADE_HIST_QA_MAP(confAnalysis, confQa) \
193+
{kCosPa, {(confQa).cosPa}}, \
194+
{kDecayDauDca, {(confQa).dauDcaAtDecay}}, \
195+
{kTransRadius, {(confQa).transRadius}}, \
196+
{kLambdaCosPa, {(confQa).lambdaCosPa}}, \
197+
{kLambdaDauDca, {(confQa).lambdaDauDca}}, \
198+
{kLambdaTransRadius, {(confQa).lambdaTransRadius}}, \
199+
{kLambdaDcaToPv, {(confQa).lambdaDcaToPv}}, \
200+
{kPtVsEta, {(confAnalysis).pt, (confAnalysis).eta}}, \
201+
{kPtVsPhi, {(confAnalysis).pt, (confAnalysis).phi}}, \
202+
{kPhiVsEta, {(confAnalysis).phi, (confAnalysis).eta}}, \
203+
{kPtVsCosPa, {(confAnalysis).pt, (confQa).cosPa}}, \
204+
{kMassXi, {(confQa).massXi}}, \
205+
{kMassOmega, {(confQa).massOmega}}, \
206+
{kPtVsMassXi, {(confAnalysis).pt, (confQa).massXi}}, \
207+
{kPtVsMassOmega, {(confAnalysis).pt, (confQa).massOmega}}, \
208+
{kMassXiVsMassOmega, {(confQa).massXi, (confQa).massOmega}},
209+
210+
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
211+
#define CASCADE_HIST_MC_QA_MAP(confAnalysis, confQa) \
212+
{kNoMcParticle, {(confAnalysis).pt, (confQa).cosPa}}, \
213+
{kPrimary, {(confAnalysis).pt, (confQa).cosPa}}, \
214+
{kFromWrongCollision, {(confAnalysis).pt, (confQa).cosPa}}, \
215+
{kFromMaterial, {(confAnalysis).pt, (confQa).cosPa}}, \
216+
{kMissidentified, {(confAnalysis).pt, (confQa).cosPa}}, \
217+
{kSecondary1, {(confAnalysis).pt, (confQa).cosPa}}, \
218+
{kSecondary2, {(confAnalysis).pt, (confQa).cosPa}}, \
219+
{kSecondary3, {(confAnalysis).pt, (confQa).cosPa}}, \
220+
{kSecondaryOther, {(confAnalysis).pt, (confQa).cosPa}},
219221

220222
template <typename T>
221223
auto makeCascadeHistSpecMap(const T& confBinningAnalysis)
@@ -269,10 +271,10 @@ constexpr std::string_view McDir = "MC/";
269271
/// \class FemtoDreamEventHisto
270272
/// \brief Class for histogramming event properties
271273
// template <femtomodes::Mode mode>
272-
template <const char* cascadePrefix,
273-
const char* bachelorPrefix,
274-
const char* posDauPrefix,
275-
const char* negDauPrefix,
274+
template <auto& cascadePrefix,
275+
auto& bachelorPrefix,
276+
auto& posDauPrefix,
277+
auto& negDauPrefix,
276278
modes::Cascade cascade>
277279
class CascadeHistManager
278280
{
@@ -687,6 +689,5 @@ class CascadeHistManager
687689
trackhistmanager::TrackHistManager<posDauPrefix> mPosDauManager;
688690
trackhistmanager::TrackHistManager<negDauPrefix> mNegDauManager;
689691
};
690-
}; // namespace cascadehistmanager
691-
}; // namespace o2::analysis::femto
692+
} // namespace o2::analysis::femto::cascadehistmanager
692693
#endif // PWGCF_FEMTO_CORE_CASCADEHISTMANAGER_H_

PWGCF/Femto/Core/closePairRejection.h

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2019-2022 CERN and copyright holders of ALICE O2.
1+
// Copyright 2019-2025 CERN and copyright holders of ALICE O2.
22
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
33
// All rights not expressly granted are reserved.
44
//
@@ -38,9 +38,7 @@
3838
#include <string>
3939
#include <vector>
4040

41-
namespace o2::analysis::femto
42-
{
43-
namespace closepairrejection
41+
namespace o2::analysis::femto::closepairrejection
4442
{
4543
// enum for track histograms
4644
enum CprHist {
@@ -61,7 +59,7 @@ enum CprHist {
6159
};
6260

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

168-
template <const char* prefix>
166+
template <auto& prefix>
169167
class CloseTrackRejection
170168
{
171169
public:
@@ -205,7 +203,7 @@ class CloseTrackRejection
205203
mPlotAngularCorrelation = confCpr.plotAngularCorrelation.value;
206204

207205
if (confCpr.seed.value >= 0) {
208-
uint64_t randomSeed;
206+
uint64_t randomSeed = 0;
209207
mRandomizeTracks = true;
210208
if (confCpr.seed.value == 0) {
211209
randomSeed = static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
@@ -346,7 +344,7 @@ class CloseTrackRejection
346344
}
347345
}
348346

349-
bool isClosePair() const
347+
[[nodiscard]] bool isClosePair() const
350348
{
351349
if (!mIsActivated) {
352350
return false;
@@ -371,7 +369,7 @@ class CloseTrackRejection
371369
return isCloseAverage || isCloseAnyRadius;
372370
}
373371

374-
bool isActivated() const { return mIsActivated; }
372+
[[nodiscard]] bool isActivated() const { return mIsActivated; }
375373

376374
private:
377375
std::optional<float> phistar(float magfield, float radius, float signedPt, float phi)
@@ -421,7 +419,7 @@ class CloseTrackRejection
421419
std::uniform_int_distribution<int> mSwapDist{0, 1};
422420
};
423421

424-
template <const char* prefix>
422+
template <auto& prefix>
425423
class ClosePairRejectionTrackTrack
426424
{
427425
public:
@@ -441,14 +439,14 @@ class ClosePairRejectionTrackTrack
441439
{
442440
mCtr.compute(track1, track2);
443441
}
444-
bool isClosePair() const { return mCtr.isClosePair(); }
442+
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }
445443
void fill(float kstar) { mCtr.fill(kstar); }
446444

447445
private:
448446
CloseTrackRejection<prefix> mCtr;
449447
};
450448

451-
template <const char* prefixPosDaus, const char* prefixNegDaus>
449+
template <auto& prefixPosDaus, auto& prefixNegDaus>
452450
class ClosePairRejectionV0V0
453451
{
454452
public:
@@ -481,7 +479,7 @@ class ClosePairRejectionV0V0
481479
mCtrNeg.compute(negDau1, negDau2);
482480
}
483481

484-
bool isClosePair() const { return mCtrPos.isClosePair() || mCtrNeg.isClosePair(); }
482+
[[nodiscard]] bool isClosePair() const { return mCtrPos.isClosePair() || mCtrNeg.isClosePair(); }
485483

486484
void fill(float kstar)
487485
{
@@ -494,7 +492,7 @@ class ClosePairRejectionV0V0
494492
CloseTrackRejection<prefixNegDaus> mCtrNeg;
495493
};
496494

497-
template <const char* prefixTrackV0>
495+
template <auto& prefixTrackV0>
498496
class ClosePairRejectionTrackV0 // can also be used for any particle type that has pos/neg daughters, like resonances
499497
{
500498
public:
@@ -521,15 +519,15 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h
521519
}
522520
}
523521

524-
bool isClosePair() const { return mCtr.isClosePair(); }
522+
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }
525523

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

528526
private:
529527
CloseTrackRejection<prefixTrackV0> mCtr;
530528
};
531529

532-
template <const char* prefixBachelor, const char* prefixV0Daughter>
530+
template <auto& prefixBachelor, auto& prefixV0Daughter>
533531
class ClosePairRejectionTrackCascade
534532
{
535533
public:
@@ -566,11 +564,7 @@ class ClosePairRejectionTrackCascade
566564
}
567565
}
568566

569-
bool
570-
isClosePair() const
571-
{
572-
return mCtrBachelor.isClosePair();
573-
}
567+
[[nodiscard]] bool isClosePair() const { return mCtrBachelor.isClosePair(); }
574568

575569
void fill(float kstar)
576570
{
@@ -583,7 +577,7 @@ class ClosePairRejectionTrackCascade
583577
CloseTrackRejection<prefixV0Daughter> mCtrV0Daughter;
584578
};
585579

586-
template <const char* prefix>
580+
template <auto& prefix>
587581
class ClosePairRejectionTrackKink
588582
{
589583
public:
@@ -608,14 +602,14 @@ class ClosePairRejectionTrackKink
608602
mCtr.compute(track, daughter);
609603
}
610604

611-
bool isClosePair() const { return mCtr.isClosePair(); }
605+
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }
612606
void fill(float kstar) { mCtr.fill(kstar); }
613607

614608
private:
615609
CloseTrackRejection<prefix> mCtr;
616610
};
617611

618-
template <const char* prefix>
612+
template <auto& prefix>
619613
class ClosePairRejectionMcParticleMcParticle
620614
{
621615
public:
@@ -632,13 +626,12 @@ class ClosePairRejectionMcParticleMcParticle
632626
{
633627
mCtr.compute(mcParticle1, mcParticle2);
634628
}
635-
bool isClosePair() const { return mCtr.isClosePair(); }
629+
[[nodiscard]] bool isClosePair() const { return mCtr.isClosePair(); }
636630
void fill(float kstar) { mCtr.fill(kstar); }
637631

638632
private:
639633
CloseTrackRejection<prefix> mCtr;
640634
};
641635

642-
}; // namespace closepairrejection
643-
}; // namespace o2::analysis::femto
636+
}; // namespace o2::analysis::femto::closepairrejection
644637
#endif // PWGCF_FEMTO_CORE_CLOSEPAIRREJECTION_H_

0 commit comments

Comments
 (0)