Skip to content

Commit 6468788

Browse files
committed
PWGEM/Dilepton: update EMTrackCut
1 parent 455acd9 commit 6468788

File tree

4 files changed

+87
-76
lines changed

4 files changed

+87
-76
lines changed

PWGEM/Dilepton/Core/DileptonHadronMPC.h

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -281,20 +281,21 @@ struct DileptonHadronMPC {
281281
std::string prefix = "trackcut_group";
282282
Configurable<float> cfg_min_pt_track{"cfg_min_pt_track", 0.2, "min pT for ref. track"};
283283
Configurable<float> cfg_max_pt_track{"cfg_max_pt_track", 3.0, "max pT for ref. track"};
284-
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -1.2, "min eta for ref. track"};
285-
Configurable<float> cfg_max_eta_track{"cfg_max_eta_track", +1.2, "max eta for ref. track"};
286-
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0., "min phi for ref. track"};
284+
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -0.8, "min eta for ref. track"};
285+
Configurable<float> cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for ref. track"};
286+
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.0, "min phi for ref. track"};
287287
Configurable<float> cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for ref. track"};
288-
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
289-
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
290-
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"};
291-
Configurable<float> cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"};
292-
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
293-
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
294288
Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 0.5, "max dca XY for single track in cm"};
295289
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 0.5, "max dca Z for single track in cm"};
296-
Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"};
297-
Configurable<bool> cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"};
290+
Configurable<uint16_t> cfg_track_bits{"cfg_track_bits", 645, "required track bits"}; // default:645, loose:0, tight:778
291+
// Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
292+
// Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
293+
// Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"};
294+
// Configurable<float> cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"};
295+
// Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
296+
// Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
297+
// Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"};
298+
// Configurable<bool> cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"};
298299
} trackcuts;
299300

300301
o2::aod::rctsel::RCTFlagsChecker rctChecker;
@@ -682,17 +683,18 @@ struct DileptonHadronMPC {
682683
fEMTrackCut.SetTrackPtRange(trackcuts.cfg_min_pt_track, trackcuts.cfg_max_pt_track);
683684
fEMTrackCut.SetTrackEtaRange(trackcuts.cfg_min_eta_track, trackcuts.cfg_max_eta_track);
684685
fEMTrackCut.SetTrackPhiRange(trackcuts.cfg_min_phi_track, trackcuts.cfg_max_phi_track);
685-
fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc);
686-
fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows);
687-
fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);
688-
fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc);
689-
fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc);
690-
fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its);
691-
fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7);
692686
fEMTrackCut.SetTrackMaxDcaXY(trackcuts.cfg_max_dcaxy);
693687
fEMTrackCut.SetTrackMaxDcaZ(trackcuts.cfg_max_dcaz);
694-
fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any);
695-
fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st);
688+
fEMTrackCut.SetTrackBit(trackcuts.cfg_track_bits);
689+
// fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc);
690+
// fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows);
691+
// fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);
692+
// fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc);
693+
// fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc);
694+
// fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its);
695+
// fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7);
696+
// fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any);
697+
// fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st);
696698
}
697699

698700
template <int ev_id, typename TCollision, typename TTrack1, typename TTrack2, typename TCut, typename TAllTracks>

PWGEM/Dilepton/Core/EMTrackCut.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ void EMTrackCut::RequireITSib1st(bool flag)
112112
LOG(info) << "EMTrack Cut, require ITS ib 1st: " << mRequireITSib1st;
113113
}
114114

115-
void EMTrackCut::SetTrackBits(uint16_t bits)
115+
void EMTrackCut::SetTrackBit(uint16_t bit)
116116
{
117-
mTrackBits = bits;
118-
LOG(info) << "EMTrack Cut, require track bits: " << mTrackBits;
117+
mTrackBit = bit;
118+
LOG(info) << "EMTrack Cut, require track bits: " << mTrackBit;
119119
}

PWGEM/Dilepton/Core/EMTrackCut.h

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ class EMTrackCut : public TNamed
4747
kTrackPhiRange,
4848
kDCAxy,
4949
kDCAz,
50-
kTPCNCls,
51-
kTPCCrossedRows,
52-
kTPCCrossedRowsOverNCls,
53-
kTPCFracSharedClusters,
54-
kTPCChi2NDF,
55-
kITSNCls,
56-
kITSChi2NDF,
57-
kTrackBits,
50+
// kTPCNCls,
51+
// kTPCCrossedRows,
52+
// kTPCCrossedRowsOverNCls,
53+
// kTPCFracSharedClusters,
54+
// kTPCChi2NDF,
55+
// kITSNCls,
56+
// kITSChi2NDF,
57+
kTrackBit,
5858
kNCuts
5959
};
6060

@@ -81,7 +81,7 @@ class EMTrackCut : public TNamed
8181
if (!IsSelectedTrack(track, EMTrackCuts::kDCAz)) {
8282
return false;
8383
}
84-
if (!IsSelectedTrack(track, EMTrackCuts::kTrackBits)) {
84+
if (!IsSelectedTrack(track, EMTrackCuts::kTrackBit)) {
8585
return false;
8686
}
8787

@@ -146,29 +146,36 @@ class EMTrackCut : public TNamed
146146
case EMTrackCuts::kDCAz:
147147
return std::fabs(track.dcaZ()) < mMaxDcaZ;
148148

149-
case EMTrackCuts::kTrackBits:
150-
return true;
151-
152-
// case EMTrackCuts::kTPCNCls:
153-
// return track.tpcNClsFound() >= mMinNClustersTPC;
154-
//
155-
// case EMTrackCuts::kTPCCrossedRows:
156-
// return track.tpcNClsCrossedRows() >= mMinNCrossedRowsTPC;
157-
//
158-
// case EMTrackCuts::kTPCCrossedRowsOverNCls:
159-
// return track.tpcCrossedRowsOverFindableCls() > mMinNCrossedRowsOverFindableClustersTPC;
160-
//
161-
// case EMTrackCuts::kTPCFracSharedClusters:
162-
// return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC;
163-
//
164-
// case EMTrackCuts::kTPCChi2NDF:
165-
// return mMinChi2PerClusterTPC < track.tpcChi2NCl() && track.tpcChi2NCl() < mMaxChi2PerClusterTPC;
166-
//
167-
// case EMTrackCuts::kITSNCls:
168-
// return mMinNClustersITS <= track.itsNCls() && track.itsNCls() <= mMaxNClustersITS;
169-
//
170-
// case EMTrackCuts::kITSChi2NDF:
171-
// return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS;
149+
case EMTrackCuts::kTrackBit: {
150+
// for (int i = 0; i < 10; i++) {
151+
// if ((mTrackBit & (1 << i)) > 0 && !((track.trackBit() & (1 << i)) > 0)) {
152+
// return false;
153+
// }
154+
// }
155+
// return true;
156+
return (track.trackBit() & mTrackBit) >= mTrackBit;
157+
}
158+
159+
// case EMTrackCuts::kTPCNCls:
160+
// return track.tpcNClsFound() >= mMinNClustersTPC;
161+
162+
// case EMTrackCuts::kTPCCrossedRows:
163+
// return track.tpcNClsCrossedRows() >= mMinNCrossedRowsTPC;
164+
165+
// case EMTrackCuts::kTPCCrossedRowsOverNCls:
166+
// return track.tpcCrossedRowsOverFindableCls() > mMinNCrossedRowsOverFindableClustersTPC;
167+
168+
// case EMTrackCuts::kTPCFracSharedClusters:
169+
// return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC;
170+
171+
// case EMTrackCuts::kTPCChi2NDF:
172+
// return mMinChi2PerClusterTPC < track.tpcChi2NCl() && track.tpcChi2NCl() < mMaxChi2PerClusterTPC;
173+
174+
// case EMTrackCuts::kITSNCls:
175+
// return mMinNClustersITS <= track.itsNCls() && track.itsNCls() <= mMaxNClustersITS;
176+
177+
// case EMTrackCuts::kITSChi2NDF:
178+
// return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS;
172179

173180
default:
174181
return false;
@@ -193,7 +200,7 @@ class EMTrackCut : public TNamed
193200
void SetTrackMaxDcaXYPtDep(std::function<float(float)> ptDepCut);
194201
void RequireITSibAny(bool flag);
195202
void RequireITSib1st(bool flag);
196-
void SetTrackBits(uint16_t bits);
203+
void SetTrackBit(uint16_t bits);
197204

198205
private:
199206
static const std::pair<int8_t, std::set<uint8_t>> its_ib_any_Requirement;
@@ -214,7 +221,7 @@ class EMTrackCut : public TNamed
214221
float mMinChi2PerClusterITS{0.f}, mMaxChi2PerClusterITS{1e10f}; // max its fit chi2 per ITS cluster
215222
bool mRequireITSibAny{true};
216223
bool mRequireITSib1st{false};
217-
uint16_t mTrackBits{0};
224+
uint16_t mTrackBit{0};
218225

219226
float mMaxDcaXY{1.0f}; // max dca in xy plane
220227
float mMaxDcaZ{1.0f}; // max dca in z direction

PWGEM/PhotonMeson/Core/DiphotonHadronMPC.h

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -209,16 +209,17 @@ struct DiphotonHadronMPC {
209209
Configurable<float> cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for ref. track"};
210210
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.0, "min phi for ref. track"};
211211
Configurable<float> cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for ref. track"};
212-
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
213-
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
214-
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"};
215-
Configurable<float> cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"};
216-
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
217-
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
218-
Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 1.0, "max dca XY for single track in cm"};
219-
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"};
220-
Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"};
221-
Configurable<bool> cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"};
212+
Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 0.5, "max dca XY for single track in cm"};
213+
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 0.5, "max dca Z for single track in cm"};
214+
Configurable<uint16_t> cfg_track_bits{"cfg_track_bits", 645, "required track bits"}; // default:645, loose:0, tight:778
215+
// Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
216+
// Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
217+
// Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 70, "min ncrossed rows"};
218+
// Configurable<float> cfg_max_frac_shared_clusters_tpc{"cfg_max_frac_shared_clusters_tpc", 0.7, "max fraction of shared clusters in TPC"};
219+
// Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
220+
// Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
221+
// Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", true, "flag to require ITS ib any hits"};
222+
// Configurable<bool> cfg_require_itsib_1st{"cfg_require_itsib_1st", false, "flag to require ITS ib 1st hit"};
222223
} trackcuts;
223224

224225
o2::aod::rctsel::RCTFlagsChecker rctChecker;
@@ -478,17 +479,18 @@ struct DiphotonHadronMPC {
478479
fEMTrackCut.SetTrackPtRange(trackcuts.cfg_min_pt_track, trackcuts.cfg_max_pt_track);
479480
fEMTrackCut.SetTrackEtaRange(trackcuts.cfg_min_eta_track, trackcuts.cfg_max_eta_track);
480481
fEMTrackCut.SetTrackPhiRange(trackcuts.cfg_min_phi_track, trackcuts.cfg_max_phi_track);
481-
fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc);
482-
fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows);
483-
fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);
484-
fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc);
485-
fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc);
486-
fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its);
487-
fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7);
488482
fEMTrackCut.SetTrackMaxDcaXY(trackcuts.cfg_max_dcaxy);
489483
fEMTrackCut.SetTrackMaxDcaZ(trackcuts.cfg_max_dcaz);
490-
fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any);
491-
fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st);
484+
fEMTrackCut.SetTrackBit(trackcuts.cfg_track_bits);
485+
// fEMTrackCut.SetMinNClustersTPC(trackcuts.cfg_min_ncluster_tpc);
486+
// fEMTrackCut.SetMinNCrossedRowsTPC(trackcuts.cfg_min_ncrossedrows);
487+
// fEMTrackCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);
488+
// fEMTrackCut.SetMaxFracSharedClustersTPC(trackcuts.cfg_max_frac_shared_clusters_tpc);
489+
// fEMTrackCut.SetChi2PerClusterTPC(0.0, trackcuts.cfg_max_chi2tpc);
490+
// fEMTrackCut.SetChi2PerClusterITS(0.0, trackcuts.cfg_max_chi2its);
491+
// fEMTrackCut.SetNClustersITS(trackcuts.cfg_min_ncluster_its, 7);
492+
// fEMTrackCut.RequireITSibAny(trackcuts.cfg_require_itsib_any);
493+
// fEMTrackCut.RequireITSib1st(trackcuts.cfg_require_itsib_1st);
492494
}
493495

494496
SliceCache cache;

0 commit comments

Comments
 (0)