Skip to content

Commit 2982469

Browse files
committed
Feat: add flag for competing mass hypothesis in cascade builder
1 parent 2b32be1 commit 2982469

1 file changed

Lines changed: 18 additions & 11 deletions

File tree

PWGCF/Femto/Core/cascadeBuilder.h

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,19 @@ struct ConfCascadeFilters : o2::framework::ConfigurableGroup {
4747
o2::framework::Configurable<float> etaMax{"etaMax", 10.f, "Maximum eta"};
4848
o2::framework::Configurable<float> phiMin{"phiMin", 0.f, "Minimum phi"};
4949
o2::framework::Configurable<float> phiMax{"phiMax", 1.f * o2::constants::math::TwoPI, "Maximum phi"};
50+
o2::framework::Configurable<float> massLambdaMin{"massLambdaMin", 1.0f, "Minimum mass of Lambda daughters in cascade decay"};
51+
o2::framework::Configurable<float> massLambdaMax{"massLambdaMax", 1.2f, "Maximum mass of Lambda daughters in cascade decay"};
5052
o2::framework::Configurable<float> massXiMin{"massXiMin", 1.2f, "Minimum Xi mass"};
5153
o2::framework::Configurable<float> massXiMax{"massXiMax", 1.4f, "Maximum Xi mass"};
52-
o2::framework::Configurable<float> rejectMassXiMin{"rejectMassXiMin", 1.317f, "Reject Minimum Xi mass for Omega hypothesis"};
53-
o2::framework::Configurable<float> rejectMassXiMax{"rejectMassXiMax", 1.325f, "Rejection Maximum Xi mass for Omega hypothesis"};
54-
o2::framework::Configurable<float> massOmegaMin{"massOmegaMin", 1.5f, "Minimum Omega mass"};
55-
o2::framework::Configurable<float> massOmegaMax{"massOmegaMax", 1.9f, "Maximum Omega mass"};
54+
o2::framework::Configurable<bool> rejectHypothesisOmega{"rejectHypothesisOmega", false, "Rejection of Omega hypothesis for Xi candidates"};
5655
o2::framework::Configurable<float> rejectMassOmegaMin{"rejectMassOmegaMin", 1.668f, "Reject minimum Omega mass for Xi hypothesis"};
5756
o2::framework::Configurable<float> rejectMassOmegaMax{"rejectMassOmegaMax", 1.676f, "Reject maximum Omega mass for Xi hypothesis"};
58-
o2::framework::Configurable<float> massLambdaMin{"massLambdaMin", 1.0f, "Minimum Lambda mass"};
59-
o2::framework::Configurable<float> massLambdaMax{"massLambdaMax", 1.2f, "Maximum Lambda mass"};
57+
58+
o2::framework::Configurable<float> massOmegaMin{"massOmegaMin", 1.5f, "Minimum Omega mass"};
59+
o2::framework::Configurable<float> massOmegaMax{"massOmegaMax", 1.9f, "Maximum Omega mass"};
60+
o2::framework::Configurable<bool> rejectHypothesisXi{"rejectHypothesisXi", false, "Rejection of Xi hypothesis for Omega candidates"};
61+
o2::framework::Configurable<float> rejectMassXiMin{"rejectMassXiMin", 1.317f, "Reject Minimum Xi mass for Omega hypothesis"};
62+
o2::framework::Configurable<float> rejectMassXiMax{"rejectMassXiMax", 1.325f, "Reject Maximum Xi mass for Omega hypothesis"};
6063
};
6164

6265
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
@@ -192,13 +195,15 @@ class CascadeSelection : public BaseSelection<float, o2::analysis::femto::dataty
192195
if constexpr (modes::isEqual(cascadeType, modes::Cascade::kXi)) {
193196
mXiMassLowerLimit = filter.massXiMin.value;
194197
mXiMassUpperLimit = filter.massXiMax.value;
198+
mRejectOmegaHypothesis = filter.rejectHypothesisOmega.value;
195199
mOmegaMassLowerLimit = filter.rejectMassOmegaMin.value;
196200
mOmegaMassUpperLimit = filter.rejectMassOmegaMax.value;
197201
this->addSelection(kBachelorTpcPion, cascadeSelectionNames.at(kBachelorTpcPion), config.bachelorTpcPion.value, limits::kAbsUpperLimit, skipMostPermissiveBit, isMinimalCut, false);
198202
}
199203
if constexpr (modes::isEqual(cascadeType, modes::Cascade::kOmega)) {
200204
mOmegaMassLowerLimit = filter.massOmegaMin.value;
201205
mOmegaMassUpperLimit = filter.massOmegaMax.value;
206+
mRejectXiHypothesis = filter.rejectHypothesisXi.value;
202207
mXiMassLowerLimit = filter.rejectMassXiMin.value;
203208
mXiMassUpperLimit = filter.rejectMassXiMax.value;
204209
this->addSelection(kBachelorTpcKaon, cascadeSelectionNames.at(kBachelorTpcKaon), config.bachelorTpcKaon.value, limits::kAbsUpperLimit, skipMostPermissiveBit, isMinimalCut, false);
@@ -305,13 +310,13 @@ class CascadeSelection : public BaseSelection<float, o2::analysis::femto::dataty
305310
if constexpr (modes::isEqual(cascadeType, modes::Cascade::kXi)) {
306311
// Xi candidate must be inside Xi window and outside Omega
307312
return (cascade.mXi() > mXiMassLowerLimit && cascade.mXi() < mXiMassUpperLimit) &&
308-
(cascade.mOmega() < mOmegaMassLowerLimit || cascade.mOmega() > mOmegaMassUpperLimit);
313+
(!mRejectOmegaHypothesis || (cascade.mOmega() < mOmegaMassLowerLimit || cascade.mOmega() > mOmegaMassUpperLimit));
309314
}
310315

311316
if constexpr (modes::isEqual(cascadeType, modes::Cascade::kOmega)) {
312317
// Omega candidate must be inside Omega window and outside Xi
313318
return (cascade.mOmega() > mOmegaMassLowerLimit && cascade.mOmega() < mOmegaMassUpperLimit) &&
314-
(cascade.mXi() < mXiMassLowerLimit || cascade.mXi() > mXiMassUpperLimit);
319+
(!mRejectXiHypothesis || (cascade.mXi() < mXiMassLowerLimit || cascade.mXi() > mXiMassUpperLimit));
315320
}
316321

317322
return false; // should never happen
@@ -320,12 +325,14 @@ class CascadeSelection : public BaseSelection<float, o2::analysis::femto::dataty
320325
[[nodiscard]] bool passThroughAllCascades() const { return mPassThrough; }
321326

322327
protected:
323-
float mXiMassLowerLimit = 0.f;
324-
float mXiMassUpperLimit = 999.f;
325-
328+
bool mRejectOmegaHypothesis = false;
326329
float mOmegaMassLowerLimit = 0.f;
327330
float mOmegaMassUpperLimit = 999.f;
328331

332+
bool mRejectXiHypothesis = false;
333+
float mXiMassLowerLimit = 0.f;
334+
float mXiMassUpperLimit = 999.f;
335+
329336
bool mPassThrough = false;
330337

331338
// kinematic filters

0 commit comments

Comments
 (0)