@@ -30,12 +30,14 @@ namespace o2::analysis::femto::closetripletrejection
3030constexpr const char PrefixCtrTrackTrackTrack[] = " CtrTrackTrackTrack" ;
3131constexpr const char PrefixCtrTrackTrackV0[] = " CtrTrackTrackV0" ;
3232constexpr const char PrefixCtrTrackTrackCascade[] = " CtrTrackTrackCascade" ;
33+ constexpr const char PrefixCtrTrackTrackSigma0[] = " CtrTrackTrackSigma0" ;
3334constexpr const char PrefixCtrMcParticleMcParticleMcParticle[] = " CtrMcParticleMcParticleMcParticle" ;
3435
3536// Q3 (not kstar) is the natural kinematic variable for triplets, so it is the default here
3637using ConfCtrTrackTrackTrack = closepairrejection::ConfCpr<PrefixCtrTrackTrackTrack, true , modes::KinematicVariable::kQ3 >;
3738using ConfCtrTrackTrackV0 = closepairrejection::ConfCpr<PrefixCtrTrackTrackV0, true , modes::KinematicVariable::kQ3 >;
3839using ConfCtrTrackTrackCascade = closepairrejection::ConfCpr<PrefixCtrTrackTrackCascade, true , modes::KinematicVariable::kQ3 >;
40+ using ConfCtrTrackTrackSigma0 = closepairrejection::ConfCpr<PrefixCtrTrackTrackSigma0>;
3941// generated particles, no cut by default (close triplet rejection corrects a detector effect)
4042using ConfCtrMcParticleMcParticleMcParticle = closepairrejection::ConfCpr<PrefixCtrMcParticleMcParticleMcParticle, false , modes::KinematicVariable::kQ3 >;
4143
@@ -74,6 +76,11 @@ constexpr char PrefixTrack2CascadeBachelorSe[] = "CPR_Track2CascadeBachelor/SE/"
7476constexpr char PrefixTrack1CascadeBachelorMe[] = " CPR_Track1CascadeBachelor/ME/" ;
7577constexpr char PrefixTrack2CascadeBachelorMe[] = " CPR_Track2CascadeBachelor/ME/" ;
7678
79+ constexpr char PrefixTrack1Sigma0Se[] = " CPR_Track1Sigma0/SE/" ;
80+ constexpr char PrefixTrack2Sigma0Se[] = " CPR_Track2Sigma0/SE/" ;
81+ constexpr char PrefixTrack1Sigma0Me[] = " CPR_Track1Sigma0/ME/" ;
82+ constexpr char PrefixTrack2Sigma0Me[] = " CPR_Track2Sigma0/ME/" ;
83+
7784template <auto & prefixTrack1Track2,
7885 auto & prefixTrack2Track3,
7986 auto & prefixTrack1Track3>
@@ -217,6 +224,49 @@ class CloseTripletRejectionTrackTrackCascade
217224 closepairrejection::ClosePairRejectionTrackCascade<prefixTrack2Bachelor, prefixTrack2V0Daughter> mCtrTrack2Cascade ;
218225};
219226
227+ template <auto & prefixTrack1Track2, auto & prefixTrack1Sigma0, auto & prefixTrack2Sigma0>
228+ class CloseTripletRejectionTrackTrackSigma0
229+ {
230+ public:
231+ CloseTripletRejectionTrackTrackSigma0 () = default ;
232+ ~CloseTripletRejectionTrackTrackSigma0 () = default ;
233+
234+ template <typename T1 >
235+ void init (o2::framework::HistogramRegistry* registry,
236+ std::map<closepairrejection::CprHist, std::vector<o2::framework::AxisSpec>> const & specs,
237+ T1 const & confCpr,
238+ int absChargeTrack1,
239+ int absChargeTrack2)
240+ {
241+ mCtrTrack12 .init (registry, specs, confCpr, absChargeTrack1, absChargeTrack2);
242+ mCtrTrack1Sigma0 .init (registry, specs, confCpr, absChargeTrack1);
243+ mCtrTrack2Sigma0 .init (registry, specs, confCpr, absChargeTrack2);
244+ }
245+
246+ void setMagField (float magField)
247+ {
248+ mCtrTrack12 .setMagField (magField);
249+ mCtrTrack1Sigma0 .setMagField (magField);
250+ mCtrTrack2Sigma0 .setMagField (magField);
251+ }
252+
253+ // checks track1-track2, track1-v0 and track2-v0 (from sigma0); fills the deta-dphi/kinematic
254+ // histograms of each pair internally and returns whether the triplet is rejected.
255+ template <typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
256+ [[nodiscard]] bool isCloseTriplet (T1 const & track1, T2 const & track2, T3 const & sigma0, T4 const & trackTable, T5 const & tripletHistManager)
257+ {
258+ bool isClose12 = mCtrTrack12 .isClosePair (track1, track2, trackTable, tripletHistManager);
259+ bool isClose1Sigma0 = mCtrTrack1Sigma0 .isClosePair (track1, sigma0, trackTable, tripletHistManager);
260+ bool isClose2Sigma0 = mCtrTrack2Sigma0 .isClosePair (track2, sigma0, trackTable, tripletHistManager);
261+ return isClose12 || isClose1Sigma0|| isClose2Sigma0;
262+ }
263+
264+ private:
265+ closepairrejection::ClosePairRejectionTrackTrack<prefixTrack1Track2> mCtrTrack12 ;
266+ closepairrejection::ClosePairRejectionTrackSigma0<prefixTrack1Sigma0> mCtrTrack1Sigma0 ;
267+ closepairrejection::ClosePairRejectionTrackSigma0<prefixTrack2Sigma0> mCtrTrack2Sigma0 ;
268+ };
269+
220270// close triplet rejection for triplets of generated particles; checks all three constituent pairs
221271template <auto & prefixMcParticle1McParticle2,
222272 auto & prefixMcParticle2McParticle3,
0 commit comments