@@ -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)
@@ -97,7 +100,7 @@ struct ConfOmegaBits : o2::framework::ConfigurableGroup {
97100 o2::framework::Configurable<float > ptMax{" ptMax" , 999 .f , " Maximum pT" }; \
98101 o2::framework::Configurable<float > etaMin{" etaMin" , -10 .f , " Minimum eta" }; \
99102 o2::framework::Configurable<float > etaMax{" etaMax" , 10 .f , " Maximum eta" }; \
100- o2::framework::Configurable<float > phiMin{" phiMin" , 0 .f , " Minimum eta " }; \
103+ o2::framework::Configurable<float > phiMin{" phiMin" , 0 .f , " Minimum phi " }; \
101104 o2::framework::Configurable<float > phiMax{" phiMax" , 1 .f * o2::constants::math::TwoPI, " Maximum phi" }; \
102105 o2::framework::Configurable<float > massMin{" massMin" , (defaultMassMin), " Minimum invariant mass for Cascade" }; \
103106 o2::framework::Configurable<float > massMax{" massMax" , (defaultMassMax), " Maximum invariant mass for Cascade" }; \
@@ -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