@@ -644,6 +644,18 @@ auto InvMassDPlus(const T& candidate)
644644 return candidate.m (array{RecoDecay::getMassPDG (kPiPlus ), RecoDecay::getMassPDG (kKPlus ), RecoDecay::getMassPDG (kPiPlus )});
645645}
646646
647+ template <typename T>
648+ auto InvMassDsKKpi (const T& candidate)
649+ {
650+ return candidate.m (array{RecoDecay::getMassPDG (kKPlus ), RecoDecay::getMassPDG (kKMinus ), RecoDecay::getMassPDG (kPiPlus )});
651+ }
652+
653+ template <typename T>
654+ auto InvMassDspiKK (const T& candidate)
655+ {
656+ return candidate.m (array{RecoDecay::getMassPDG (kPiPlus ), RecoDecay::getMassPDG (kKMinus ), RecoDecay::getMassPDG (kKPlus )});
657+ }
658+
647659// Λc± → p± K∓ π±
648660
649661template <typename T>
@@ -1206,6 +1218,95 @@ DECLARE_SOA_TABLE(HfCandLbMCRec, "AOD", "HFCANDLBMCREC", //!
12061218DECLARE_SOA_TABLE (HfCandLbMCGen, " AOD" , " HFCANDLBMCGEN" , // !
12071219 hf_cand_lb::FlagMCMatchGen,
12081220 hf_cand_lb::OriginMCGen);
1221+
1222+ // specific Bs candidate properties
1223+ namespace hf_cand_bs
1224+ {
1225+ DECLARE_SOA_INDEX_COLUMN_FULL (Index0, index0, int , HfCandProng3, " _0" ); // Bs index
1226+ // MC matching result:
1227+ DECLARE_SOA_COLUMN (FlagMCMatchRec, flagMCMatchRec, int8_t ); // reconstruction level
1228+ DECLARE_SOA_COLUMN (FlagMCMatchGen, flagMCMatchGen, int8_t ); // generator level
1229+ DECLARE_SOA_COLUMN (OriginMCRec, originMCRec, int8_t ); // particle origin, reconstruction level
1230+ DECLARE_SOA_COLUMN (OriginMCGen, originMCGen, int8_t ); // particle origin, generator level
1231+ DECLARE_SOA_COLUMN (DebugMCRec, debugMCRec, int8_t ); // debug flag for mis-association reconstruction level
1232+ // mapping of decay types
1233+ enum DecayType { BsToDsPi }; // move this to a dedicated cascade namespace in the future?
1234+
1235+ // Bs → Ds+ π- → K+ K- π+ π-
1236+ // float massBs = RecoDecay::getMassPDG(pdg::Code::kBs);
1237+ template <typename T>
1238+ auto CtBs (const T& candidate)
1239+ {
1240+ return candidate.ct (RecoDecay::getMassPDG (pdg::Code::kBs ));
1241+ }
1242+
1243+ template <typename T>
1244+ auto YBs (const T& candidate)
1245+ {
1246+ return candidate.y (RecoDecay::getMassPDG (pdg::Code::kBs ));
1247+ }
1248+
1249+ template <typename T>
1250+ auto EBs (const T& candidate)
1251+ {
1252+ return candidate.e (RecoDecay::getMassPDG (pdg::Code::kBs ));
1253+ }
1254+ template <typename T>
1255+ auto InvMassBsToDsPi (const T& candidate)
1256+ {
1257+ return candidate.m (array{RecoDecay::getMassPDG (pdg::Code::kDs ), RecoDecay::getMassPDG (kPiMinus )});
1258+ }
1259+ } // namespace hf_cand_bs
1260+
1261+ // declare dedicated Bs candidate table
1262+ DECLARE_SOA_TABLE (HfCandBsBase, " AOD" , " HFCANDBSBASE" ,
1263+ // general columns
1264+ HFCAND_COLUMNS ,
1265+ // 3-prong specific columns
1266+ hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0,
1267+ hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1,
1268+ hf_cand::ImpactParameter0, hf_cand::ImpactParameter1,
1269+ hf_cand::ErrorImpactParameter0, hf_cand::ErrorImpactParameter1,
1270+ hf_cand_bs::Index0Id, hf_track_index::Index1Id,
1271+ hf_track_index::HFflag,
1272+ /* dynamic columns */
1273+ hf_cand_prong2::M<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1>,
1274+ hf_cand_prong2::M2 <hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1>,
1275+ hf_cand_prong2::ImpactParameterProduct<hf_cand::ImpactParameter0, hf_cand::ImpactParameter1>,
1276+ /* dynamic columns that use candidate momentum components */
1277+ hf_cand::Pt<hf_cand_prong2::Px, hf_cand_prong2::Py>,
1278+ hf_cand::Pt2<hf_cand_prong2::Px, hf_cand_prong2::Py>,
1279+ hf_cand::P<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1280+ hf_cand::P2 <hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1281+ hf_cand::PVector<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1282+ hf_cand::CPA <collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1283+ hf_cand::CPAXY <collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py>,
1284+ hf_cand::Ct<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1285+ hf_cand::ImpactParameterXY<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1286+ hf_cand_prong2::MaxNormalisedDeltaIP<collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ErrorDecayLengthXY, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand::ImpactParameter0, hf_cand::ErrorImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ErrorImpactParameter1, hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PxProng1, hf_cand::PyProng1>,
1287+ hf_cand::Eta<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1288+ hf_cand::Phi<hf_cand_prong2::Px, hf_cand_prong2::Py>,
1289+ hf_cand::Y<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1290+ hf_cand::E<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
1291+ hf_cand::E2 <hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>);
1292+
1293+ // extended table with expression columns that can be used as arguments of dynamic columns
1294+ DECLARE_SOA_EXTENDED_TABLE_USER (HfCandBsExt, HfCandBsBase, " HFCANDBSEXT" ,
1295+ hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz);
1296+
1297+ using HfCandBs = HfCandBsExt;
1298+
1299+ // table with results of reconstruction level MC matching
1300+ DECLARE_SOA_TABLE (HfCandBsMCRec, " AOD" , " HFCANDBSMCREC" , // !
1301+ hf_cand_bs::FlagMCMatchRec,
1302+ hf_cand_bs::OriginMCRec,
1303+ hf_cand_bs::DebugMCRec);
1304+
1305+ // table with results of generator level MC matching
1306+ DECLARE_SOA_TABLE (HfCandBsMCGen, " AOD" , " HFCANDBSMCGEN" , // !
1307+ hf_cand_bs::FlagMCMatchGen,
1308+ hf_cand_bs::OriginMCGen);
1309+
12091310} // namespace o2::aod
12101311
12111312#endif // O2_ANALYSIS_HFSECONDARYVERTEX_H_
0 commit comments