@@ -76,18 +76,24 @@ 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" };
82+
8083
8184struct ConfXiBits : o2::framework::ConfigurableGroup {
8285 std::string prefix = std::string(" XiBits" );
8386 CASCADE_DEFAULT_BITS
8487 o2::framework::Configurable<std::vector<float >> bachelorTpcPion{" bachelorTpcPion" , {5 .f }, " Maximum |nsimga_Pion| TPC for bachelor tracks" };
88+ o2::framework::Configurable<std::vector<float >> bachelorTofPion{" bachelorTofPion" , {}, " Maximum |nsimga_Pion| TOF for bachelor tracks" };
89+
8590};
8691
8792struct ConfOmegaBits : o2::framework::ConfigurableGroup {
8893 std::string prefix = std::string(" OmegaBits" );
8994 CASCADE_DEFAULT_BITS
9095 o2::framework::Configurable<std::vector<float >> bachelorTpcKaon{" bachelorTpcKaon" , {5 .f }, " Maximum |nsimga_Kaon| TPC for bachelor tracks" };
96+ o2::framework::Configurable<std::vector<float >> bachelorTofKaon{" bachelorTofKaon" , {}, " Maximum |nsimga_Kaon| TOF for bachelor tracks" };
9197};
9298
9399#undef CASCADE_DEFAULT_BITS
@@ -139,10 +145,14 @@ enum CascadeSels {
139145 // PID selection for cascade bachelor
140146 kBachelorTpcPion , // /< TPC Pion PID for bachelor
141147 kBachelorTpcKaon , // /< TPC Kaon PID for bachelor
148+ kBachelorTofPion , // /< TOF Pion PID for bachelor
149+ kBachelorTofKaon , // /< TOF Kaon PID for bachelor
142150 // /
143151 // PID selection for lambda daughers
144152 kPosDauTpc , // /< TPC PID for positive daughter
145153 kNegDauTpc , // /< TPC PID for negative daughter
154+ kPosDauTof , // /< TOF PID for positive daughter
155+ kNegDauTof , // /< TOF PID for negative daughter
146156
147157 kCascadeSelsMax
148158};
@@ -166,9 +176,12 @@ const std::unordered_map<CascadeSels, std::string> cascadeSelectionNames = {
166176
167177 {kBachelorTpcPion , " Bachelor TPC Pion PID" },
168178 {kBachelorTpcKaon , " Bachelor TPC Kaon PID" },
169-
179+ {kBachelorTofPion , " Bachelor TOF Pion PID" },
180+ {kBachelorTofKaon , " Bachelor TOF Kaon PID" },
170181 {kPosDauTpc , " Positive Daughter TPC PID" },
171182 {kNegDauTpc , " Negative Daughter TPC PID" },
183+ {kPosDauTof , " Positive Daughter TOF PID" },
184+ {kNegDauTof , " Negative Daughter TOF PID" },
172185
173186 {kCascadeSelsMax , " Cascade Selections Max" }};
174187
@@ -231,6 +244,7 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
231244 mOmegaMassLowerLimit = filter.rejectMassOmegaMin .value ;
232245 mOmegaMassUpperLimit = filter.rejectMassOmegaMax .value ;
233246 this ->addSelection (kBachelorTpcPion , cascadeSelectionNames.at (kBachelorTpcPion ), config.bachelorTpcPion .value , limits::kAbsUpperLimit , true , true , false );
247+ this ->addSelection (kBachelorTofPion , cascadeSelectionNames.at (kBachelorTofPion ), config.bachelorTofPion .value , limits::kAbsUpperLimit , true , true , false );
234248 }
235249 if constexpr (modes::isEqual (cascadeType, modes::Cascade::kOmega )) {
236250 mOmegaMassLowerLimit = filter.massOmegaMin .value ;
@@ -239,6 +253,7 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
239253 mXiMassLowerLimit = filter.rejectMassXiMin .value ;
240254 mXiMassUpperLimit = filter.rejectMassXiMax .value ;
241255 this ->addSelection (kBachelorTpcKaon , cascadeSelectionNames.at (kBachelorTpcKaon ), config.bachelorTpcKaon .value , limits::kAbsUpperLimit , true , true , false );
256+ this ->addSelection (kBachelorTofKaon , cascadeSelectionNames.at (kBachelorTofKaon ), config.bachelorTofKaon .value , limits::kAbsUpperLimit , true , true , false );
242257 }
243258
244259 mPtMin = filter.ptMin .value ;
@@ -252,6 +267,8 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
252267
253268 this ->addSelection (kPosDauTpc , cascadeSelectionNames.at (kPosDauTpc ), config.posDauTpc .value , limits::kAbsUpperLimit , true , true , false );
254269 this ->addSelection (kNegDauTpc , cascadeSelectionNames.at (kNegDauTpc ), config.negDauTpc .value , limits::kAbsUpperLimit , true , true , false );
270+ this ->addSelection (kPosDauTof , cascadeSelectionNames.at (kPosDauTof ), config.posDauTof .value , limits::kAbsUpperLimit , true , true , false );
271+ this ->addSelection (kNegDauTof , cascadeSelectionNames.at (kNegDauTof ), config.negDauTof .value , limits::kAbsUpperLimit , true , true , false );
255272
256273 this ->addSelection (kCascadeCpaMin , cascadeSelectionNames.at (kCascadeCpaMin ), config.cascadeCpaMin .value , limits::kLowerLimit , true , true , false );
257274 this ->addSelection (kCascadeTransRadMin , cascadeSelectionNames.at (kCascadeTransRadMin ), config.cascadeTransRadMin .value , limits::kLowerLimit , true , true , false );
@@ -318,14 +335,30 @@ class CascadeSelection : public baseselection::BaseSelection<float, o2::analysis
318335 // check both pion and kaon PID for xi and omega
319336 this ->evaluateObservable (kBachelorTpcPion , bachelor.tpcNSigmaPi ());
320337 this ->evaluateObservable (kBachelorTpcKaon , bachelor.tpcNSigmaKa ());
338+ if (bachelor.hasTOF ()) {
339+ this ->evaluateObservable (kBachelorTofPion , bachelor.tofNSigmaPi ());
340+ this ->evaluateObservable (kBachelorTofKaon , bachelor.tofNSigmaKa ());
341+ }
321342
322343 // depending on the charge, we check lambda or antilambda hypothesis
323344 if (cascade.sign () < 0 ) {
324345 this ->evaluateObservable (kPosDauTpc , posDaughter.tpcNSigmaPr ());
325346 this ->evaluateObservable (kNegDauTpc , negDaughter.tpcNSigmaPi ());
347+ if (posDaughter.hasTOF ()) {
348+ this ->evaluateObservable (kPosDauTof , posDaughter.tofNSigmaPr ());
349+ }
350+ if (negDaughter.hasTOF ()) {
351+ this ->evaluateObservable (kNegDauTof , negDaughter.tofNSigmaPi ());
352+ }
326353 } else if (cascade.sign () > 0 ) {
327354 this ->evaluateObservable (kPosDauTpc , posDaughter.tpcNSigmaPi ());
328355 this ->evaluateObservable (kNegDauTpc , negDaughter.tpcNSigmaPr ());
356+ if (posDaughter.hasTOF ()) {
357+ this ->evaluateObservable (kPosDauTof , posDaughter.tofNSigmaPi ());
358+ }
359+ if (negDaughter.hasTOF ()) {
360+ this ->evaluateObservable (kNegDauTof , negDaughter.tofNSigmaPr ());
361+ }
329362 } else {
330363 LOG (warn) << " Encountered Cascade candidate with 0 charge" ;
331364 }
0 commit comments