@@ -479,14 +479,39 @@ struct FemtoUniverseProducerTask {
479479 }
480480
481481 template <class T>
482- using hasStrangeTOF = decltype(std::declval<T&>().tofNSigmaXiLaPi());
482+ using hasStrangeTOFinV0 = decltype(std::declval<T&>().tofNSigmaLaPr());
483+
484+ /// bitmask to save strangeness TOF for V0 analysis
485+ template <typename V0Type>
486+ aod::femtouniverseparticle::CutContainerType PIDStrangeTOFBitmaskV0(const V0Type& v0)
487+ {
488+ aod::femtouniverseparticle::CutContainerType mask = 0u;
489+ if constexpr (std::experimental::is_detected<hasStrangeTOFinV0, V0Type>::value) {
490+ if (v0.tofNSigmaLaPr() < ConfPIDBitmask.confNsigmaTOFParticleChild)
491+ mask |= (1u);
492+ if (v0.tofNSigmaLaPi() < ConfPIDBitmask.confNsigmaTOFParticleChild)
493+ mask |= (2u);
494+ if (v0.tofNSigmaALaPr() < ConfPIDBitmask.confNsigmaTOFParticleChild)
495+ mask |= (4u);
496+ if (v0.tofNSigmaALaPi() < ConfPIDBitmask.confNsigmaTOFParticleChild)
497+ mask |= (8u);
498+ if (v0.tofNSigmaK0PiPlus() < ConfPIDBitmask.confNsigmaTOFParticleChild)
499+ mask |= (16u);
500+ if (v0.tofNSigmaK0PiMinus() < ConfPIDBitmask.confNsigmaTOFParticleChild)
501+ mask |= (32u);
502+ }
503+ return mask;
504+ }
505+
506+ template <class T>
507+ using hasStrangeTOFinCasc = decltype(std::declval<T&>().tofNSigmaXiLaPi());
483508
484509 /// bitmask to save strangeness TOF for cascade analysis
485510 template <typename CascType>
486- aod::femtouniverseparticle::CutContainerType PIDStrangeTOFBitmask (const CascType& casc)
511+ aod::femtouniverseparticle::CutContainerType PIDStrangeTOFBitmaskCasc (const CascType& casc)
487512 {
488513 aod::femtouniverseparticle::CutContainerType mask = 0u;
489- if constexpr (std::experimental::is_detected<hasStrangeTOF , CascType>::value) {
514+ if constexpr (std::experimental::is_detected<hasStrangeTOFinCasc , CascType>::value) {
490515 if (casc.tofNSigmaXiLaPi() < ConfPIDBitmask.confNsigmaTOFParticleChild)
491516 mask |= (1u);
492517 if (casc.tofNSigmaXiLaPr() < ConfPIDBitmask.confNsigmaTOFParticleChild)
@@ -718,18 +743,34 @@ struct FemtoUniverseProducerTask {
718743 void fillDebugParticle(ParticleType const& particle)
719744 {
720745 if constexpr (isTrackOrV0) {
721- outputDebugParts(particle.sign(), (uint8_t)particle.tpcNClsFound(),
722- particle.tpcNClsFindable(),
723- (uint8_t)particle.tpcNClsCrossedRows(),
724- particle.tpcNClsShared(), particle.tpcFractionSharedCls(), particle.tpcInnerParam(),
725- particle.itsNCls(), particle.itsNClsInnerBarrel(),
726- particle.dcaXY(), particle.dcaZ(), particle.tpcSignal(),
727- particle.tpcNSigmaStoreEl(), particle.tpcNSigmaStorePi(),
728- particle.tpcNSigmaStoreKa(), particle.tpcNSigmaStorePr(),
729- particle.tpcNSigmaStoreDe(), particle.tofNSigmaStoreEl(),
730- particle.tofNSigmaStorePi(), particle.tofNSigmaStoreKa(),
731- particle.tofNSigmaStorePr(), particle.tofNSigmaStoreDe(),
732- -999., -999., -999., -999., -999., -999.);
746+ if constexpr (std::experimental::is_detected<hasStrangeTOFinV0, ParticleType>::value) {
747+ outputDebugParts(particle.sign(), (uint8_t)particle.tpcNClsFound(),
748+ particle.tpcNClsFindable(),
749+ (uint8_t)particle.tpcNClsCrossedRows(),
750+ particle.tpcNClsShared(), particle.tpcFractionSharedCls(), particle.tpcInnerParam(),
751+ particle.itsNCls(), particle.itsNClsInnerBarrel(),
752+ particle.dcaXY(), particle.dcaZ(), particle.tpcSignal(),
753+ particle.tpcNSigmaStoreEl(), particle.tpcNSigmaStorePi(),
754+ particle.tpcNSigmaStoreKa(), particle.tpcNSigmaStorePr(),
755+ particle.tpcNSigmaStoreDe(), particle.tofNSigmaStoreEl(),
756+ particle.tofNSigmaStorePi(), particle.tofNSigmaStoreKa(),
757+ particle.tofNSigmaStorePr(), particle.tofNSigmaStoreDe(),
758+ particle.tofNSigmaLaPr(), particle.tofNSigmaLaPi(), particle.tofNSigmaALaPr(),
759+ particle.tofNSigmaALaPi(), particle.tofNSigmaK0PiPlus(), particle.tofNSigmaK0PiMinus());
760+ } else {
761+ outputDebugParts(particle.sign(), (uint8_t)particle.tpcNClsFound(),
762+ particle.tpcNClsFindable(),
763+ (uint8_t)particle.tpcNClsCrossedRows(),
764+ particle.tpcNClsShared(), particle.tpcFractionSharedCls(), particle.tpcInnerParam(),
765+ particle.itsNCls(), particle.itsNClsInnerBarrel(),
766+ particle.dcaXY(), particle.dcaZ(), particle.tpcSignal(),
767+ particle.tpcNSigmaStoreEl(), particle.tpcNSigmaStorePi(),
768+ particle.tpcNSigmaStoreKa(), particle.tpcNSigmaStorePr(),
769+ particle.tpcNSigmaStoreDe(), particle.tofNSigmaStoreEl(),
770+ particle.tofNSigmaStorePi(), particle.tofNSigmaStoreKa(),
771+ particle.tofNSigmaStorePr(), particle.tofNSigmaStoreDe(),
772+ -999., -999., -999., -999., -999., -999.);
773+ }
733774 } else if constexpr (isPhiOrD0) {
734775 outputDebugParts(-999., -999., -999., -999., -999., -999., -999., -999., -999.,
735776 -999., -999., -999., -999., -999., -999., -999., -999.,
@@ -738,7 +779,7 @@ struct FemtoUniverseProducerTask {
738779 -999., -999., -999.,
739780 -999.); // QA for phi or D0/D0bar children
740781 } else if constexpr (isCasc) {
741- if constexpr (std::experimental::is_detected<hasStrangeTOF , ParticleType>::value) {
782+ if constexpr (std::experimental::is_detected<hasStrangeTOFinCasc , ParticleType>::value) {
742783 outputDebugParts(-999., -999., -999., -999., -999., -999., -999., -999., -999.,
743784 -999., -999., -999., -999., -999., -999., -999., particle.tofNSigmaXiLaPi(),
744785 particle.tofNSigmaXiLaPr(), particle.tofNSigmaXiPi(), particle.tofNSigmaOmLaPi(),
@@ -1277,7 +1318,7 @@ struct FemtoUniverseProducerTask {
12771318 v0.phi(),
12781319 aod::femtouniverseparticle::ParticleType::kV0,
12791320 cutContainerV0.at(femto_universe_v0_selection::V0ContainerPosition::kV0),
1280- 0 ,
1321+ PIDStrangeTOFBitmaskV0(v0) ,
12811322 v0.v0cosPA(),
12821323 indexChildID,
12831324 v0.mLambda(),
@@ -1489,7 +1530,7 @@ struct FemtoUniverseProducerTask {
14891530 casc.phi(),
14901531 aod::femtouniverseparticle::ParticleType::kCascade,
14911532 0,
1492- PIDStrangeTOFBitmask (casc),
1533+ PIDStrangeTOFBitmaskCasc (casc),
14931534 0,
14941535 indexCascChildID,
14951536 casc.mXi(),
@@ -2311,7 +2352,7 @@ struct FemtoUniverseProducerTask {
23112352 void processTrackV0Cascade(aod::FemtoFullCollision const& col,
23122353 aod::BCsWithTimestamps const&,
23132354 soa::Filtered<aod::FemtoFullTracks> const& tracks,
2314- o2::aod::V0Datas const& fullV0s,
2355+ soa::Join< o2::aod::V0Datas, o2::aod::V0TOFNSigmas> const& fullV0s,
23152356 soa::Join<o2::aod::CascDatas, o2::aod::CascTOFNSigmas> const& fullCascades)
23162357 {
23172358 getMagneticFieldTesla(col.bc_as<aod::BCsWithTimestamps>());
0 commit comments