Skip to content

Commit e8bca9a

Browse files
dsekihatMATTEI
authored andcommitted
[PWGEM/Dilepton] update EMTrackCut (AliceO2Group#12279)
1 parent d7cecf4 commit e8bca9a

File tree

5 files changed

+99
-87
lines changed

5 files changed

+99
-87
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;

PWGEM/PhotonMeson/TableProducer/skimmerPrimaryElectronFromDalitzEE.cxx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ using namespace o2::framework::expressions;
4242
using namespace o2::constants::physics;
4343
using namespace o2::pwgem::photonmeson;
4444

45-
using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::EMEvSels, aod::EMEventsNgPCM>;
45+
// using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::EMEvSels, aod::EMEventsNgPCM>;
46+
using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::EMEvSels>;
4647
using MyCollisionsWithSWT = soa::Join<MyCollisions, aod::EMSWTriggerInfosTMP>;
4748

4849
using MyCollisionsMC = soa::Join<MyCollisions, aod::McCollisionLabels>;
@@ -71,7 +72,7 @@ struct skimmerPrimaryElectronFromDalitzEE {
7172
Configurable<int> min_ncluster_its{"min_ncluster_its", 4, "min ncluster its"};
7273
Configurable<int> min_ncluster_itsib{"min_ncluster_itsib", 1, "min ncluster itsib"};
7374
Configurable<float> maxchi2tpc{"maxchi2tpc", 5.0, "max. chi2/NclsTPC"};
74-
Configurable<float> maxchi2its{"maxchi2its", 6.0, "max. chi2/NclsITS"};
75+
Configurable<float> maxchi2its{"maxchi2its", 36.0, "max. chi2/NclsITS"};
7576
Configurable<float> minpt{"minpt", 0.05, "min pt for ITS-TPC track"};
7677
Configurable<float> maxeta{"maxeta", 2.0, "max eta acceptance"};
7778
Configurable<float> dca_xy_max{"dca_xy_max", 1, "max DCAxy in cm"};
@@ -444,9 +445,9 @@ struct skimmerPrimaryElectronFromDalitzEE {
444445
continue;
445446
}
446447

447-
if (collision.ngpcm() < 1) {
448-
continue;
449-
}
448+
// if (collision.ngpcm() < 1) {
449+
// continue;
450+
// }
450451

451452
auto posTracks_per_coll = posTracks->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache);
452453
auto negTracks_per_coll = negTracks->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache);
@@ -474,9 +475,9 @@ struct skimmerPrimaryElectronFromDalitzEE {
474475
continue;
475476
}
476477

477-
if (collision.ngpcm() < 1) {
478-
continue;
479-
}
478+
// if (collision.ngpcm() < 1) {
479+
// continue;
480+
// }
480481

481482
if (collision.swtaliastmp_raw() == 0) {
482483
continue;
@@ -515,9 +516,9 @@ struct skimmerPrimaryElectronFromDalitzEE {
515516
auto bc = collision.template foundBC_as<aod::BCsWithTimestamps>();
516517
initCCDB(bc);
517518

518-
if (collision.ngpcm() < 1) {
519-
continue;
520-
}
519+
// if (collision.ngpcm() < 1) {
520+
// continue;
521+
// }
521522

522523
auto posTracks_per_coll = posTracksMC->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache);
523524
auto negTracks_per_coll = negTracksMC->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache);

0 commit comments

Comments
 (0)