@@ -41,6 +41,11 @@ constexpr char PrefixTrack1Track2Me[] = "CPR_Track1Track2/ME/";
4141constexpr char PrefixTrack2Track3Me[] = " CPR_Track2Track3/ME/" ;
4242constexpr char PrefixTrack1Track3Me[] = " CPR_Track1Track3/ME/" ;
4343
44+ constexpr char PrefixTrack1V0Se[] = " CPR_Track1V0/SE/" ;
45+ constexpr char PrefixTrack2V0Se[] = " CPR_Track2V0/SE/" ;
46+ constexpr char PrefixTrack1V0Me[] = " CPR_Track1V0/ME/" ;
47+ constexpr char PrefixTrack2V0Me[] = " CPR_Track2V0/ME/" ;
48+
4449template <const char * prefixTrack1Track2,
4550 const char * prefixTrack2Track3,
4651 const char * prefixTrack1Track3>
@@ -58,40 +63,92 @@ class CloseTripletRejectionTrackTrackTrack
5863 int absChargeTrack2,
5964 int absChargeTrack3)
6065 {
61- mCtr1 .init (registry, specs, confCpr, absChargeTrack1, absChargeTrack2);
62- mCtr2 .init (registry, specs, confCpr, absChargeTrack2, absChargeTrack3);
63- mCtr3 .init (registry, specs, confCpr, absChargeTrack1, absChargeTrack3);
66+ mCtrTrack12 .init (registry, specs, confCpr, absChargeTrack1, absChargeTrack2);
67+ mCtrTrack23 .init (registry, specs, confCpr, absChargeTrack2, absChargeTrack3);
68+ mCtrTrack13 .init (registry, specs, confCpr, absChargeTrack1, absChargeTrack3);
69+ }
70+
71+ void setMagField (float magField)
72+ {
73+ mCtrTrack12 .setMagField (magField);
74+ mCtrTrack23 .setMagField (magField);
75+ mCtrTrack13 .setMagField (magField);
76+ }
77+ template <typename T1, typename T2, typename T3, typename T4>
78+ void setTriplet (T1 const & track1, T2 const & track2, T3 const & track3, T4 const & trackTable)
79+ {
80+ mCtrTrack12 .setPair (track1, track2, trackTable);
81+ mCtrTrack23 .setPair (track2, track3, trackTable);
82+ mCtrTrack13 .setPair (track1, track3, trackTable);
83+ }
84+ bool isCloseTriplet () const
85+ {
86+ return mCtrTrack12 .isClosePair () || mCtrTrack23 .isClosePair () || mCtrTrack13 .isClosePair ();
87+ }
88+
89+ void fill (float q3)
90+ {
91+ mCtrTrack12 .fill (q3);
92+ mCtrTrack23 .fill (q3);
93+ mCtrTrack13 .fill (q3);
94+ }
95+
96+ private:
97+ closepairrejection::ClosePairRejectionTrackTrack<prefixTrack1Track2> mCtrTrack12 ;
98+ closepairrejection::ClosePairRejectionTrackTrack<prefixTrack2Track3> mCtrTrack23 ;
99+ closepairrejection::ClosePairRejectionTrackTrack<prefixTrack1Track3> mCtrTrack13 ;
100+ };
101+
102+ template <const char * prefixTrack1Track2,
103+ const char * prefixTrack1V0,
104+ const char * prefixTrack2V0>
105+ class CloseTripletRejectionTrackTrackV0
106+ {
107+ public:
108+ CloseTripletRejectionTrackTrackV0 () = default ;
109+ ~CloseTripletRejectionTrackTrackV0 () = default ;
110+
111+ template <typename T>
112+ void init (o2::framework::HistogramRegistry* registry,
113+ std::map<closepairrejection::CprHist, std::vector<o2::framework::AxisSpec>> const & specs,
114+ T const & confCpr,
115+ int absChargeTrack1,
116+ int absChargeTrack2)
117+ {
118+ mCtrTrack12 .init (registry, specs, confCpr, absChargeTrack1, absChargeTrack2);
119+ mCtrTrack1V0 .init (registry, specs, confCpr, absChargeTrack1);
120+ mCtrTrack2V0 .init (registry, specs, confCpr, absChargeTrack2);
64121 }
65122
66123 void setMagField (float magField)
67124 {
68- mCtr1 .setMagField (magField);
69- mCtr2 .setMagField (magField);
70- mCtr3 .setMagField (magField);
125+ mCtrTrack12 .setMagField (magField);
126+ mCtrTrack1V0 .setMagField (magField);
127+ mCtrTrack2V0 .setMagField (magField);
71128 }
72129 template <typename T1, typename T2, typename T3, typename T4>
73- void setTriplet (T1 const & track1, T2 const & track2, T3 const & track3 , T4 const & /* tracks */ )
130+ void setTriplet (T1 const & track1, T2 const & track2, T3 const & v0 , T4 const & trackTable )
74131 {
75- mCtr1 . compute (track1, track2);
76- mCtr2 . compute (track2, track3 );
77- mCtr3 . compute (track1, track3 );
132+ mCtrTrack12 . setPair (track1, track2, trackTable );
133+ mCtrTrack1V0 . setPair (track1, v0, trackTable );
134+ mCtrTrack2V0 . setPair (track2, v0, trackTable );
78135 }
79136 bool isCloseTriplet () const
80137 {
81- return mCtr1 .isClosePair () || mCtr2 .isClosePair () || mCtr3 .isClosePair ();
138+ return mCtrTrack12 .isClosePair () || mCtrTrack1V0 .isClosePair () || mCtrTrack2V0 .isClosePair ();
82139 }
83140
84141 void fill (float q3)
85142 {
86- mCtr1 .fill (q3);
87- mCtr2 .fill (q3);
88- mCtr3 .fill (q3);
143+ mCtrTrack12 .fill (q3);
144+ mCtrTrack1V0 .fill (q3);
145+ mCtrTrack2V0 .fill (q3);
89146 }
90147
91148 private:
92- closepairrejection::CloseTrackRejection <prefixTrack1Track2> mCtr1 ;
93- closepairrejection::CloseTrackRejection<prefixTrack2Track3> mCtr2 ;
94- closepairrejection::CloseTrackRejection<prefixTrack1Track3> mCtr3 ;
149+ closepairrejection::ClosePairRejectionTrackTrack <prefixTrack1Track2> mCtrTrack12 ;
150+ closepairrejection::ClosePairRejectionTrackV0<prefixTrack1V0> mCtrTrack1V0 ;
151+ closepairrejection::ClosePairRejectionTrackV0<prefixTrack2V0> mCtrTrack2V0 ;
95152};
96153
97154}; // namespace closetripletrejection
0 commit comments