@@ -77,7 +77,8 @@ class DielectronCut : public TNamed
7777 kTPConly = 3 ,
7878 kTOFif = 4 ,
7979 kPIDML = 5 ,
80- kTPChadrejORTOFreq_woTOFif = 6
80+ kTPChadrejORTOFreq_woTOFif = 6 ,
81+ kTPChadrejORTOFreqLowB = 7 ,
8182 };
8283
8384 template <typename T = int , typename TPair>
@@ -261,6 +262,9 @@ class DielectronCut : public TNamed
261262 case static_cast <int >(PIDSchemes::kTPChadrejORTOFreq ):
262263 return PassTPChadrej (track) || PassTOFreq (track);
263264
265+ case static_cast <int >(PIDSchemes::kTPChadrejORTOFreqLowB ):
266+ return PassTPChadrej (track) || PassTOFreqLowB (track);
267+
264268 case static_cast <int >(PIDSchemes::kTPConly ):
265269 return PassTPConly (track);
266270
@@ -281,6 +285,17 @@ class DielectronCut : public TNamed
281285 }
282286 }
283287
288+ template <typename T>
289+ bool PassTOFreqLowB (T const & track) const
290+ {
291+ bool is_el_included_TPC = mMinTPCNsigmaEl < track.tpcNSigmaEl () && track.tpcNSigmaEl () < mMaxTPCNsigmaEl ;
292+ bool is_pi_excluded_TPC = (track.tpcInnerParam () < mMinPinForPionRejectionTPC && track.tpcInnerParam () < mMaxPinForPionRejectionTPC ) ? (track.tpcNSigmaPi () < mMinTPCNsigmaPi || mMaxTPCNsigmaPi < track.tpcNSigmaPi ()) : true ;
293+ bool is_el_included_TOF = (mMinTOFNsigmaEl < track.tofNSigmaEl () && track.tofNSigmaEl () < mMaxTOFNsigmaEl ) && (track.hasTOF () && track.tofChi2 () < mMaxChi2TOF );
294+ bool is_ka_excluded_ITS = (mMinP_ITSNsigmaKa < track.p () && track.p () < mMaxP_ITSNsigmaKa ) ? (track.itsNSigmaKa () < mMinITSNsigmaKa || mMaxITSNsigmaKa < track.itsNSigmaKa ()) : true ;
295+ bool is_pr_excluded_ITS = (mMinP_ITSNsigmaPr < track.p () && track.p () < mMaxP_ITSNsigmaPr ) ? (track.itsNSigmaPr () < mMinITSNsigmaPr || mMaxITSNsigmaPr < track.itsNSigmaPr ()) : true ;
296+ return is_el_included_TPC && is_pi_excluded_TPC && is_el_included_TOF && is_ka_excluded_ITS && is_pr_excluded_ITS;
297+ }
298+
284299 template <typename T>
285300 bool PassTOFreq (T const & track) const
286301 {
@@ -306,6 +321,20 @@ class DielectronCut : public TNamed
306321 return is_el_included_TPC && is_mu_excluded_TPC && is_pi_excluded_TPC && is_ka_excluded_TPC && is_pr_excluded_TPC && is_el_included_TOF && is_ka_excluded_ITS && is_pr_excluded_ITS;
307322 }
308323
324+ template <typename T>
325+ bool PassTPChadrejLowB (T const & track) const
326+ {
327+ bool is_el_included_TPC = mMinTPCNsigmaEl < track.tpcNSigmaEl () && track.tpcNSigmaEl () < mMaxTPCNsigmaEl ;
328+ bool is_mu_excluded_TPC = mMuonExclusionTPC ? track.tpcNSigmaMu () < mMinTPCNsigmaMu || mMaxTPCNsigmaMu < track.tpcNSigmaMu () : true ;
329+ bool is_pi_excluded_TPC = track.tpcInnerParam () < mMaxPinForPionRejectionTPC ? (track.tpcNSigmaPi () < mMinTPCNsigmaPi || mMaxTPCNsigmaPi < track.tpcNSigmaPi ()) : true ;
330+ bool is_ka_excluded_TPC = track.tpcNSigmaKa () < mMinTPCNsigmaKa || mMaxTPCNsigmaKa < track.tpcNSigmaKa ();
331+ bool is_pr_excluded_TPC = track.tpcNSigmaPr () < mMinTPCNsigmaPr || mMaxTPCNsigmaPr < track.tpcNSigmaPr ();
332+ bool is_el_included_TOF = track.hasTOF () ? (mMinTOFNsigmaEl < track.tofNSigmaEl () && track.tofNSigmaEl () < mMaxTOFNsigmaEl && track.tofChi2 () < mMaxChi2TOF ) : true ;
333+ bool is_ka_excluded_ITS = (mMinP_ITSNsigmaKa < track.p () && track.p () < mMaxP_ITSNsigmaKa ) ? (track.itsNSigmaKa () < mMinITSNsigmaKa || mMaxITSNsigmaKa < track.itsNSigmaKa ()) : true ;
334+ bool is_pr_excluded_ITS = (mMinP_ITSNsigmaPr < track.p () && track.p () < mMaxP_ITSNsigmaPr ) ? (track.itsNSigmaPr () < mMinITSNsigmaPr || mMaxITSNsigmaPr < track.itsNSigmaPr ()) : true ;
335+ return is_el_included_TPC && is_mu_excluded_TPC && is_pi_excluded_TPC && is_ka_excluded_TPC && is_pr_excluded_TPC && is_el_included_TOF && is_ka_excluded_ITS && is_pr_excluded_ITS;
336+ }
337+
309338 template <typename T>
310339 bool PassTPConly (T const & track) const
311340 {
@@ -445,7 +474,7 @@ class DielectronCut : public TNamed
445474 void SetPRangeForITSNsigmaPr (float min, float max);
446475
447476 void SetMaxPinMuonTPConly (float max);
448- void SetMaxPinForPionRejectionTPC ( float max);
477+ void SetPinRangeForPionRejectionTPC ( float min, float max);
449478 void RequireITSibAny (bool flag);
450479 void RequireITSib1st (bool flag);
451480
@@ -487,16 +516,16 @@ class DielectronCut : public TNamed
487516 float mMinTrackPhi {0 .f }, mMaxTrackPhi {2 .f * M_PI}; // range in phi
488517
489518 // track quality cuts
490- int mMinNClustersTPC {0 }; // min number of TPC clusters
491- int mMinNCrossedRowsTPC {0 }; // min number of crossed rows in TPC
492- float mMinChi2PerClusterTPC {-1e10f}, mMaxChi2PerClusterTPC {1e10f}; // max tpc fit chi2 per TPC cluster
493- float mMinNCrossedRowsOverFindableClustersTPC {0 .f }; // min ratio crossed rows / findable clusters
494- float mMaxFracSharedClustersTPC {999 .f }; // max ratio shared clusters / clusters in TPC
495- float mMinRelDiffPin {-1e10f}, mMaxRelDiffPin {1e10f}; // max relative difference between p at TPC inner wall and p at PV
496- int mMinNClustersITS {0 }, mMaxNClustersITS {7 }; // range in number of ITS clusters
497- float mMinChi2PerClusterITS {-1e10f}, mMaxChi2PerClusterITS {1e10f}; // max its fit chi2 per ITS cluster
498- float mMaxPinMuonTPConly {0 .2f }; // max pin cut for muon ID with TPConly
499- float mMaxPinForPionRejectionTPC {1e10f}; // max pin for pion rejection in TPC
519+ int mMinNClustersTPC {0 }; // min number of TPC clusters
520+ int mMinNCrossedRowsTPC {0 }; // min number of crossed rows in TPC
521+ float mMinChi2PerClusterTPC {-1e10f}, mMaxChi2PerClusterTPC {1e10f}; // max tpc fit chi2 per TPC cluster
522+ float mMinNCrossedRowsOverFindableClustersTPC {0 .f }; // min ratio crossed rows / findable clusters
523+ float mMaxFracSharedClustersTPC {999 .f }; // max ratio shared clusters / clusters in TPC
524+ float mMinRelDiffPin {-1e10f}, mMaxRelDiffPin {1e10f}; // max relative difference between p at TPC inner wall and p at PV
525+ int mMinNClustersITS {0 }, mMaxNClustersITS {7 }; // range in number of ITS clusters
526+ float mMinChi2PerClusterITS {-1e10f}, mMaxChi2PerClusterITS {1e10f}; // max its fit chi2 per ITS cluster
527+ float mMaxPinMuonTPConly {0 .2f }; // max pin cut for muon ID with TPConly
528+ float mMinPinForPionRejectionTPC { 0 . f }, mMaxPinForPionRejectionTPC {1e10f}; // pin range for pion rejection in TPC
500529 bool mRequireITSibAny {true };
501530 bool mRequireITSib1st {false };
502531 float mMinChi2TOF {-1e10f}, mMaxChi2TOF {1e10f}; // max tof chi2 per
0 commit comments