diff --git a/PWGEM/Dilepton/Core/DileptonHadronMPC.h b/PWGEM/Dilepton/Core/DileptonHadronMPC.h index fe1c3f7c036..9a0a2a551d3 100644 --- a/PWGEM/Dilepton/Core/DileptonHadronMPC.h +++ b/PWGEM/Dilepton/Core/DileptonHadronMPC.h @@ -281,20 +281,21 @@ struct DileptonHadronMPC { std::string prefix = "trackcut_group"; Configurable cfg_min_pt_track{"cfg_min_pt_track", 0.2, "min pT for ref. track"}; Configurable cfg_max_pt_track{"cfg_max_pt_track", 3.0, "max pT for ref. track"}; - Configurable cfg_min_eta_track{"cfg_min_eta_track", -1.2, "min eta for ref. track"}; - Configurable cfg_max_eta_track{"cfg_max_eta_track", +1.2, "max eta for ref. track"}; - Configurable cfg_min_phi_track{"cfg_min_phi_track", 0., "min phi for ref. track"}; + Configurable cfg_min_eta_track{"cfg_min_eta_track", -0.8, "min eta for ref. track"}; + Configurable cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for ref. track"}; + Configurable cfg_min_phi_track{"cfg_min_phi_track", 0.0, "min phi for ref. track"}; Configurable cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for ref. track"}; - Configurable cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"}; - Configurable cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"}; - Configurable cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"}; - Configurable cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"}; - Configurable cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"}; - Configurable cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"}; Configurable cfg_max_dcaxy{"cfg_max_dcaxy", 0.5, "max dca XY for single track in cm"}; Configurable cfg_max_dcaz{"cfg_max_dcaz", 0.5, "max dca Z for single track in cm"}; - Configurable cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"}; - Configurable cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"}; + Configurable cfg_track_bits{"cfg_track_bits", 645, "required track bits"}; // default:645, loose:0, tight:778 + // Configurable cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"}; + // Configurable cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"}; + // Configurable cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"}; + // Configurable cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"}; + // Configurable cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"}; + // Configurable cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"}; + // Configurable cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"}; + // Configurable cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"}; } trackcuts; o2::aod::rctsel::RCTFlagsChecker rctChecker; @@ -682,17 +683,18 @@ struct DileptonHadronMPC { fEMTrackCut.SetTrackPtRange(trackcuts.cfg_min_pt_track, trackcuts.cfg_max_pt_track); fEMTrackCut.SetTrackEtaRange(trackcuts.cfg_min_eta_track, trackcuts.cfg_max_eta_track); fEMTrackCut.SetTrackPhiRange(trackcuts.cfg_min_phi_track, trackcuts.cfg_max_phi_track); - fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc); - fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows); - fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8); - fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc); - fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc); - fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its); - fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7); fEMTrackCut.SetTrackMaxDcaXY(trackcuts.cfg_max_dcaxy); fEMTrackCut.SetTrackMaxDcaZ(trackcuts.cfg_max_dcaz); - fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any); - fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st); + fEMTrackCut.SetTrackBit(trackcuts.cfg_track_bits); + // fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc); + // fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows); + // fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8); + // fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc); + // fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc); + // fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its); + // fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7); + // fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any); + // fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st); } template diff --git a/PWGEM/Dilepton/Core/EMTrackCut.cxx b/PWGEM/Dilepton/Core/EMTrackCut.cxx index a875a644ce8..2ea7934a30b 100644 --- a/PWGEM/Dilepton/Core/EMTrackCut.cxx +++ b/PWGEM/Dilepton/Core/EMTrackCut.cxx @@ -112,8 +112,8 @@ void EMTrackCut::RequireITSib1st(bool flag) LOG(info) << "EMTrack Cut, require ITS ib 1st: " << mRequireITSib1st; } -void EMTrackCut::SetTrackBits(uint16_t bits) +void EMTrackCut::SetTrackBit(uint16_t bit) { - mTrackBits = bits; - LOG(info) << "EMTrack Cut, require track bits: " << mTrackBits; + mTrackBit = bit; + LOG(info) << "EMTrack Cut, require track bits: " << mTrackBit; } diff --git a/PWGEM/Dilepton/Core/EMTrackCut.h b/PWGEM/Dilepton/Core/EMTrackCut.h index 0df094c8ff1..a5d62b45ac0 100644 --- a/PWGEM/Dilepton/Core/EMTrackCut.h +++ b/PWGEM/Dilepton/Core/EMTrackCut.h @@ -47,14 +47,14 @@ class EMTrackCut : public TNamed kTrackPhiRange, kDCAxy, kDCAz, - kTPCNCls, - kTPCCrossedRows, - kTPCCrossedRowsOverNCls, - kTPCFracSharedClusters, - kTPCChi2NDF, - kITSNCls, - kITSChi2NDF, - kTrackBits, + // kTPCNCls, + // kTPCCrossedRows, + // kTPCCrossedRowsOverNCls, + // kTPCFracSharedClusters, + // kTPCChi2NDF, + // kITSNCls, + // kITSChi2NDF, + kTrackBit, kNCuts }; @@ -81,7 +81,7 @@ class EMTrackCut : public TNamed if (!IsSelectedTrack(track, EMTrackCuts::kDCAz)) { return false; } - if (!IsSelectedTrack(track, EMTrackCuts::kTrackBits)) { + if (!IsSelectedTrack(track, EMTrackCuts::kTrackBit)) { return false; } @@ -146,29 +146,36 @@ class EMTrackCut : public TNamed case EMTrackCuts::kDCAz: return std::fabs(track.dcaZ()) < mMaxDcaZ; - case EMTrackCuts::kTrackBits: - return true; - - // case EMTrackCuts::kTPCNCls: - // return track.tpcNClsFound() >= mMinNClustersTPC; - // - // case EMTrackCuts::kTPCCrossedRows: - // return track.tpcNClsCrossedRows() >= mMinNCrossedRowsTPC; - // - // case EMTrackCuts::kTPCCrossedRowsOverNCls: - // return track.tpcCrossedRowsOverFindableCls() > mMinNCrossedRowsOverFindableClustersTPC; - // - // case EMTrackCuts::kTPCFracSharedClusters: - // return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC; - // - // case EMTrackCuts::kTPCChi2NDF: - // return mMinChi2PerClusterTPC < track.tpcChi2NCl() && track.tpcChi2NCl() < mMaxChi2PerClusterTPC; - // - // case EMTrackCuts::kITSNCls: - // return mMinNClustersITS <= track.itsNCls() && track.itsNCls() <= mMaxNClustersITS; - // - // case EMTrackCuts::kITSChi2NDF: - // return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS; + case EMTrackCuts::kTrackBit: { + // for (int i = 0; i < 10; i++) { + // if ((mTrackBit & (1 << i)) > 0 && !((track.trackBit() & (1 << i)) > 0)) { + // return false; + // } + // } + // return true; + return (track.trackBit() & mTrackBit) >= mTrackBit; + } + + // case EMTrackCuts::kTPCNCls: + // return track.tpcNClsFound() >= mMinNClustersTPC; + + // case EMTrackCuts::kTPCCrossedRows: + // return track.tpcNClsCrossedRows() >= mMinNCrossedRowsTPC; + + // case EMTrackCuts::kTPCCrossedRowsOverNCls: + // return track.tpcCrossedRowsOverFindableCls() > mMinNCrossedRowsOverFindableClustersTPC; + + // case EMTrackCuts::kTPCFracSharedClusters: + // return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC; + + // case EMTrackCuts::kTPCChi2NDF: + // return mMinChi2PerClusterTPC < track.tpcChi2NCl() && track.tpcChi2NCl() < mMaxChi2PerClusterTPC; + + // case EMTrackCuts::kITSNCls: + // return mMinNClustersITS <= track.itsNCls() && track.itsNCls() <= mMaxNClustersITS; + + // case EMTrackCuts::kITSChi2NDF: + // return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS; default: return false; @@ -193,7 +200,7 @@ class EMTrackCut : public TNamed void SetTrackMaxDcaXYPtDep(std::function ptDepCut); void RequireITSibAny(bool flag); void RequireITSib1st(bool flag); - void SetTrackBits(uint16_t bits); + void SetTrackBit(uint16_t bits); private: static const std::pair> its_ib_any_Requirement; @@ -214,7 +221,7 @@ class EMTrackCut : public TNamed float mMinChi2PerClusterITS{0.f}, mMaxChi2PerClusterITS{1e10f}; // max its fit chi2 per ITS cluster bool mRequireITSibAny{true}; bool mRequireITSib1st{false}; - uint16_t mTrackBits{0}; + uint16_t mTrackBit{0}; float mMaxDcaXY{1.0f}; // max dca in xy plane float mMaxDcaZ{1.0f}; // max dca in z direction diff --git a/PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h b/PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h index 7ceb009cbd8..a0811629c32 100644 --- a/PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h +++ b/PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h @@ -209,16 +209,17 @@ struct DiphotonHadronMPC { Configurable cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for ref. track"}; Configurable cfg_min_phi_track{"cfg_min_phi_track", 0.0, "min phi for ref. track"}; Configurable cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for ref. track"}; - Configurable cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"}; - Configurable cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"}; - Configurable cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"}; - Configurable cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"}; - Configurable cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"}; - Configurable cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"}; - Configurable cfg_max_dcaxy{"cfg_max_dcaxy", 1.0, "max dca XY for single track in cm"}; - Configurable cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"}; - Configurable cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"}; - Configurable cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"}; + Configurable cfg_max_dcaxy{"cfg_max_dcaxy", 0.5, "max dca XY for single track in cm"}; + Configurable cfg_max_dcaz{"cfg_max_dcaz", 0.5, "max dca Z for single track in cm"}; + Configurable cfg_track_bits{"cfg_track_bits", 645, "required track bits"}; // default:645, loose:0, tight:778 + // Configurable cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"}; + // Configurable cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"}; + // Configurable cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"}; + // Configurable cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"}; + // Configurable cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"}; + // Configurable cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"}; + // Configurable cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"}; + // Configurable cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"}; } trackcuts; o2::aod::rctsel::RCTFlagsChecker rctChecker; @@ -478,17 +479,18 @@ struct DiphotonHadronMPC { fEMTrackCut.SetTrackPtRange(trackcuts.cfg_min_pt_track, trackcuts.cfg_max_pt_track); fEMTrackCut.SetTrackEtaRange(trackcuts.cfg_min_eta_track, trackcuts.cfg_max_eta_track); fEMTrackCut.SetTrackPhiRange(trackcuts.cfg_min_phi_track, trackcuts.cfg_max_phi_track); - fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc); - fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows); - fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8); - fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc); - fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc); - fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its); - fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7); fEMTrackCut.SetTrackMaxDcaXY(trackcuts.cfg_max_dcaxy); fEMTrackCut.SetTrackMaxDcaZ(trackcuts.cfg_max_dcaz); - fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any); - fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st); + fEMTrackCut.SetTrackBit(trackcuts.cfg_track_bits); + // fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc); + // fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows); + // fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8); + // fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc); + // fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc); + // fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its); + // fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7); + // fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any); + // fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st); } SliceCache cache; diff --git a/PWGEM/PhotonMeson/TableProducer/skimmerPrimaryElectronFromDalitzEE.cxx b/PWGEM/PhotonMeson/TableProducer/skimmerPrimaryElectronFromDalitzEE.cxx index bdd24cbfd90..b773c43cea6 100644 --- a/PWGEM/PhotonMeson/TableProducer/skimmerPrimaryElectronFromDalitzEE.cxx +++ b/PWGEM/PhotonMeson/TableProducer/skimmerPrimaryElectronFromDalitzEE.cxx @@ -42,7 +42,8 @@ using namespace o2::framework::expressions; using namespace o2::constants::physics; using namespace o2::pwgem::photonmeson; -using MyCollisions = soa::Join; +// using MyCollisions = soa::Join; +using MyCollisions = soa::Join; using MyCollisionsWithSWT = soa::Join; using MyCollisionsMC = soa::Join; @@ -71,7 +72,7 @@ struct skimmerPrimaryElectronFromDalitzEE { Configurable min_ncluster_its{"min_ncluster_its", 4, "min ncluster its"}; Configurable min_ncluster_itsib{"min_ncluster_itsib", 1, "min ncluster itsib"}; Configurable maxchi2tpc{"maxchi2tpc", 5.0, "max. chi2/NclsTPC"}; - Configurable maxchi2its{"maxchi2its", 6.0, "max. chi2/NclsITS"}; + Configurable maxchi2its{"maxchi2its", 36.0, "max. chi2/NclsITS"}; Configurable minpt{"minpt", 0.05, "min pt for ITS-TPC track"}; Configurable maxeta{"maxeta", 2.0, "max eta acceptance"}; Configurable dca_xy_max{"dca_xy_max", 1, "max DCAxy in cm"}; @@ -444,9 +445,9 @@ struct skimmerPrimaryElectronFromDalitzEE { continue; } - if (collision.ngpcm() < 1) { - continue; - } + // if (collision.ngpcm() < 1) { + // continue; + // } auto posTracks_per_coll = posTracks->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache); auto negTracks_per_coll = negTracks->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache); @@ -474,9 +475,9 @@ struct skimmerPrimaryElectronFromDalitzEE { continue; } - if (collision.ngpcm() < 1) { - continue; - } + // if (collision.ngpcm() < 1) { + // continue; + // } if (collision.swtaliastmp_raw() == 0) { continue; @@ -515,9 +516,9 @@ struct skimmerPrimaryElectronFromDalitzEE { auto bc = collision.template foundBC_as(); initCCDB(bc); - if (collision.ngpcm() < 1) { - continue; - } + // if (collision.ngpcm() < 1) { + // continue; + // } auto posTracks_per_coll = posTracksMC->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache); auto negTracks_per_coll = negTracksMC->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache);