@@ -76,18 +76,22 @@ struct ConfCascadeFilters : o2::framework::ConfigurableGroup {
7676 o2::framework::Configurable<std::vector<float >> dauAbsDcaxyMin{" dauAbsDcaxyMin" , {0 .05f }, " Minimum |DCAxy| of the daughters and bachelor from primary vertex (cm)" }; \
7777 o2::framework::Configurable<std::vector<float >> dauTpcClustersMin{" dauTpcClustersMin" , {80 .f }, " Minimum number of TPC clusters for daughter tracks" }; \
7878 o2::framework::Configurable<std::vector<float >> posDauTpc{" posDauTpc" , {5 .f }, " Maximum |nsimga_Pion/Proton| TPC for positive daughter tracks" }; \
79- o2::framework::Configurable<std::vector<float >> negDauTpc{" negDauTpc" , {5 .f }, " Maximum |nsimga_Pion/Proton| TPC for negative daughter tracks" };
79+ o2::framework::Configurable<std::vector<float >> negDauTpc{" negDauTpc" , {5 .f }, " Maximum |nsimga_Pion/Proton| TPC for negative daughter tracks" }; \
80+ o2::framework::Configurable<std::vector<float >> posDauTof{" posDauTof" , {}, " Maximum |nsimga_Pion/Proton| TOF for positive daughter tracks" }; \
81+ o2::framework::Configurable<std::vector<float >> negDauTof{" negDauTof" , {}, " Maximum |nsigma_Pion/Proton| TOF for negative daughter tracks" };
8082
8183struct ConfXiBits : o2::framework::ConfigurableGroup {
8284 std::string prefix = std::string(" XiBits" );
8385 CASCADE_DEFAULT_BITS
8486 o2::framework::Configurable<std::vector<float >> bachelorTpcPion{" bachelorTpcPion" , {5 .f }, " Maximum |nsimga_Pion| TPC for bachelor tracks" };
87+ o2::framework::Configurable<std::vector<float >> bachelorTofPion{" bachelorTofPion" , {}, " Maximum |nsimga_Pion| TOF for bachelor tracks" };
8588};
8689
8790struct ConfOmegaBits : o2::framework::ConfigurableGroup {
8891 std::string prefix = std::string(" OmegaBits" );
8992 CASCADE_DEFAULT_BITS
9093 o2::framework::Configurable<std::vector<float >> bachelorTpcKaon{" bachelorTpcKaon" , {5 .f }, " Maximum |nsimga_Kaon| TPC for bachelor tracks" };
94+ o2::framework::Configurable<std::vector<float >> bachelorTofKaon{" bachelorTofKaon" , {}, " Maximum |nsimga_Kaon| TOF for bachelor tracks" };
9195};
9296
9397#undef CASCADE_DEFAULT_BITS
@@ -139,10 +143,14 @@ enum CascadeSels {
139143 // PID selection for cascade bachelor
140144 kBachelorTpcPion , // /< TPC Pion PID for bachelor
141145 kBachelorTpcKaon , // /< TPC Kaon PID for bachelor
146+ kBachelorTofPion , // /< TOF Pion PID for bachelor
147+ kBachelorTofKaon , // /< TOF Kaon PID for bachelor
142148 // /
143149 // PID selection for lambda daughers
144150 kPosDauTpc , // /< TPC PID for positive daughter
145151 kNegDauTpc , // /< TPC PID for negative daughter
152+ kPosDauTof , // /< TOF PID for positive daughter
153+ kNegDauTof , // /< TOF PID for negative daughter
146154
147155 kCascadeSelsMax
148156};
@@ -166,9 +174,12 @@ const std::unordered_map<CascadeSels, std::string> cascadeSelectionNames = {
166174
167175 {kBachelorTpcPion , " Bachelor TPC Pion PID" },
168176 {kBachelorTpcKaon , " Bachelor TPC Kaon PID" },
169-
177+ {kBachelorTofPion , " Bachelor TOF Pion PID" },
178+ {kBachelorTofKaon , " Bachelor TOF Kaon PID" },
170179 {kPosDauTpc , " Positive Daughter TPC PID" },
171180 {kNegDauTpc , " Negative Daughter TPC PID" },
181+ {kPosDauTof , " Positive Daughter TOF PID" },
182+ {kNegDauTof , " Negative Daughter TOF PID" },
172183
173184 {kCascadeSelsMax , " Cascade Selections Max" }};
174185
@@ -231,6 +242,7 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
231242 mOmegaMassLowerLimit = filter.rejectMassOmegaMin .value ;
232243 mOmegaMassUpperLimit = filter.rejectMassOmegaMax .value ;
233244 this ->addSelection (kBachelorTpcPion , cascadeSelectionNames.at (kBachelorTpcPion ), config.bachelorTpcPion .value , limits::kAbsUpperLimit , true , true , false );
245+ this ->addSelection (kBachelorTofPion , cascadeSelectionNames.at (kBachelorTofPion ), config.bachelorTofPion .value , limits::kAbsUpperLimit , true , true , false );
234246 }
235247 if constexpr (modes::isEqual (cascadeType, modes::Cascade::kOmega )) {
236248 mOmegaMassLowerLimit = filter.massOmegaMin .value ;
@@ -239,6 +251,7 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
239251 mXiMassLowerLimit = filter.rejectMassXiMin .value ;
240252 mXiMassUpperLimit = filter.rejectMassXiMax .value ;
241253 this ->addSelection (kBachelorTpcKaon , cascadeSelectionNames.at (kBachelorTpcKaon ), config.bachelorTpcKaon .value , limits::kAbsUpperLimit , true , true , false );
254+ this ->addSelection (kBachelorTofKaon , cascadeSelectionNames.at (kBachelorTofKaon ), config.bachelorTofKaon .value , limits::kAbsUpperLimit , true , true , false );
242255 }
243256
244257 mPtMin = filter.ptMin .value ;
@@ -252,6 +265,8 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
252265
253266 this ->addSelection (kPosDauTpc , cascadeSelectionNames.at (kPosDauTpc ), config.posDauTpc .value , limits::kAbsUpperLimit , true , true , false );
254267 this ->addSelection (kNegDauTpc , cascadeSelectionNames.at (kNegDauTpc ), config.negDauTpc .value , limits::kAbsUpperLimit , true , true , false );
268+ this ->addSelection (kPosDauTof , cascadeSelectionNames.at (kPosDauTof ), config.posDauTof .value , limits::kAbsUpperLimit , true , true , false );
269+ this ->addSelection (kNegDauTof , cascadeSelectionNames.at (kNegDauTof ), config.negDauTof .value , limits::kAbsUpperLimit , true , true , false );
255270
256271 this ->addSelection (kCascadeCpaMin , cascadeSelectionNames.at (kCascadeCpaMin ), config.cascadeCpaMin .value , limits::kLowerLimit , true , true , false );
257272 this ->addSelection (kCascadeTransRadMin , cascadeSelectionNames.at (kCascadeTransRadMin ), config.cascadeTransRadMin .value , limits::kLowerLimit , true , true , false );
@@ -318,14 +333,30 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
318333 // check both pion and kaon PID for xi and omega
319334 this ->evaluateObservable (kBachelorTpcPion , bachelor.tpcNSigmaPi ());
320335 this ->evaluateObservable (kBachelorTpcKaon , bachelor.tpcNSigmaKa ());
336+ if (bachelor.hasTOF ()) {
337+ this ->evaluateObservable (kBachelorTofPion , bachelor.tofNSigmaPi ());
338+ this ->evaluateObservable (kBachelorTofKaon , bachelor.tofNSigmaKa ());
339+ }
321340
322341 // depending on the charge, we check lambda or antilambda hypothesis
323342 if (cascade.sign () < 0 ) {
324343 this ->evaluateObservable (kPosDauTpc , posDaughter.tpcNSigmaPr ());
325344 this ->evaluateObservable (kNegDauTpc , negDaughter.tpcNSigmaPi ());
345+ if (posDaughter.hasTOF ()) {
346+ this ->evaluateObservable (kPosDauTof , posDaughter.tofNSigmaPr ());
347+ }
348+ if (negDaughter.hasTOF ()) {
349+ this ->evaluateObservable (kNegDauTof , negDaughter.tofNSigmaPi ());
350+ }
326351 } else if (cascade.sign () > 0 ) {
327352 this ->evaluateObservable (kPosDauTpc , posDaughter.tpcNSigmaPi ());
328353 this ->evaluateObservable (kNegDauTpc , negDaughter.tpcNSigmaPr ());
354+ if (posDaughter.hasTOF ()) {
355+ this ->evaluateObservable (kPosDauTof , posDaughter.tofNSigmaPi ());
356+ }
357+ if (negDaughter.hasTOF ()) {
358+ this ->evaluateObservable (kNegDauTof , negDaughter.tofNSigmaPr ());
359+ }
329360 } else {
330361 LOG (warn) << " Encountered Cascade candidate with 0 charge" ;
331362 }
0 commit comments