2828#include " PWGHF/Core/HfHelper.h"
2929#include " PWGHF/DataModel/CandidateReconstructionTables.h"
3030#include " PWGHF/DataModel/CandidateSelectionTables.h"
31+ #include " PWGLF/DataModel/LFStrangenessPIDTables.h"
3132#include " PWGLF/DataModel/LFStrangenessTables.h"
3233
3334#include " Common/CCDB/ctpRateFetcher.h"
@@ -472,6 +473,31 @@ struct FemtoUniverseProducerTask {
472473 return mask;
473474 }
474475
476+ template <class T >
477+ using hasStrangeTOF = decltype (std::declval<T&>().tofNSigmaXiLaPi());
478+
479+ // / bitmask to save strangeness TOF for cascade analysis
480+ template <typename CascType>
481+ aod::femtouniverseparticle::CutContainerType PIDStrangeTOFBitmask (const CascType& casc)
482+ {
483+ aod::femtouniverseparticle::CutContainerType mask = 0u ;
484+ if constexpr (std::experimental::is_detected<hasStrangeTOF, CascType>::value) {
485+ if (casc.tofNSigmaXiLaPi () < ConfPIDBitmask.confNsigmaTOFParticleChild )
486+ mask |= (1u );
487+ if (casc.tofNSigmaXiLaPr () < ConfPIDBitmask.confNsigmaTOFParticleChild )
488+ mask |= (2u );
489+ if (casc.tofNSigmaXiPi () < ConfPIDBitmask.confNsigmaTOFParticleChild )
490+ mask |= (4u );
491+ if (casc.tofNSigmaOmLaPi () < ConfPIDBitmask.confNsigmaTOFParticleChild )
492+ mask |= (8u );
493+ if (casc.tofNSigmaOmLaPr () < ConfPIDBitmask.confNsigmaTOFParticleChild )
494+ mask |= (16u );
495+ if (casc.tofNSigmaOmKa () < ConfPIDBitmask.confNsigmaTOFParticleChild )
496+ mask |= (32u );
497+ }
498+ return mask;
499+ }
500+
475501 Zorro zorro;
476502 OutputObj<ZorroSummary> zorroSummary{" zorroSummary" };
477503 int mRunNumberZorro = 0 ;
@@ -683,7 +709,7 @@ struct FemtoUniverseProducerTask {
683709 mRunNumber = bc.runNumber ();
684710 }
685711
686- template <bool isTrackOrV0, bool isPhiOrD0, bool isXi , typename ParticleType>
712+ template <bool isTrackOrV0, bool isPhiOrD0, bool isCasc , typename ParticleType>
687713 void fillDebugParticle (ParticleType const & particle)
688714 {
689715 if constexpr (isTrackOrV0) {
@@ -706,13 +732,15 @@ struct FemtoUniverseProducerTask {
706732 -999 ., -999 .,
707733 -999 ., -999 ., -999 .,
708734 -999 .); // QA for phi or D0/D0bar children
709- } else if constexpr (isXi) {
710- outputDebugParts (-999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 .,
711- -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 .,
712- -999 ., -999 ., -999 ., -999 ., -999 .,
713- particle.dcacascdaughters (), particle.cascradius (),
714- particle.x (), particle.y (), particle.z (),
715- particle.mOmega ()); // QA for Xi Cascades (later do the same for Omegas)
735+ } else if constexpr (isCasc) {
736+ if constexpr (std::experimental::is_detected<hasStrangeTOF, ParticleType>::value) {
737+ outputDebugParts (-999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 .,
738+ -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., particle.tofNSigmaXiLaPi (),
739+ particle.tofNSigmaXiLaPr (), particle.tofNSigmaXiPi (), particle.tofNSigmaOmLaPi (),
740+ particle.tofNSigmaOmLaPr (), particle.tofNSigmaOmKa (),
741+ particle.dcacascdaughters (), particle.cascradius (),
742+ particle.x (), particle.y (), particle.z (), -999 .);
743+ }
716744 } else {
717745 // LOGF(info, "isTrack0orV0: %d, isPhi: %d", isTrackOrV0, isPhiOrD0);
718746 outputDebugParts (-999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 ., -999 .,
@@ -1246,8 +1274,8 @@ struct FemtoUniverseProducerTask {
12461274 casc.positiveeta (),
12471275 casc.positivephi (),
12481276 aod::femtouniverseparticle::ParticleType::kV0Child ,
1249- 0 , // cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kPosCuts),
1250- PIDBitmask (posTrackCasc), // cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kPosPID),
1277+ 0 ,
1278+ PIDBitmask (posTrackCasc),
12511279 hasTOF,
12521280 childIDs,
12531281 0 ,
@@ -1268,8 +1296,8 @@ struct FemtoUniverseProducerTask {
12681296 casc.negativeeta (),
12691297 casc.negativephi (),
12701298 aod::femtouniverseparticle::ParticleType::kV0Child ,
1271- 0 , // cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kNegCuts),
1272- PIDBitmask (negTrackCasc), // cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kNegPID),
1299+ 0 ,
1300+ PIDBitmask (negTrackCasc),
12731301 hasTOF,
12741302 childIDs,
12751303 0 ,
@@ -1291,8 +1319,8 @@ struct FemtoUniverseProducerTask {
12911319 casc.bacheloreta (),
12921320 casc.bachelorphi (),
12931321 aod::femtouniverseparticle::ParticleType::kCascadeBachelor ,
1294- 0 , // cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kNegCuts),
1295- PIDBitmask (bachTrackCasc), // cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kNegPID),
1322+ 0 ,
1323+ PIDBitmask (bachTrackCasc),
12961324 hasTOF,
12971325 childIDs,
12981326 0 ,
@@ -1308,8 +1336,8 @@ struct FemtoUniverseProducerTask {
13081336 casc.eta (),
13091337 casc.phi (),
13101338 aod::femtouniverseparticle::ParticleType::kCascade ,
1311- 0 , // cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kV0),
13121339 0 ,
1340+ PIDStrangeTOFBitmask (casc),
13131341 0 ,
13141342 indexCascChildID,
13151343 casc.mXi (),
@@ -2112,7 +2140,7 @@ struct FemtoUniverseProducerTask {
21122140 aod::BCsWithTimestamps const &,
21132141 soa::Filtered<aod::FemtoFullTracks> const & tracks,
21142142 o2::aod::V0Datas const & fullV0s,
2115- o2::aod::CascDatas const & fullCascades)
2143+ soa::Join< o2::aod::CascDatas, o2::aod::CascTOFNSigmas> const & fullCascades)
21162144 {
21172145 getMagneticFieldTesla (col.bc_as <aod::BCsWithTimestamps>());
21182146 const auto colcheck = fillCollisions<false >(col, tracks);
0 commit comments