Skip to content

Commit f85568e

Browse files
authored
[PWGEM/Dilepton] update 2PC (#12254)
1 parent 7ad9acf commit f85568e

File tree

11 files changed

+582
-472
lines changed

11 files changed

+582
-472
lines changed

PWGEM/Dilepton/Core/DileptonHadronMPC.h

Lines changed: 150 additions & 235 deletions
Large diffs are not rendered by default.

PWGEM/Dilepton/Core/EMTrackCut.cxx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,9 @@ void EMTrackCut::RequireITSib1st(bool flag)
111111
mRequireITSib1st = flag;
112112
LOG(info) << "EMTrack Cut, require ITS ib 1st: " << mRequireITSib1st;
113113
}
114+
115+
void EMTrackCut::SetTrackBits(uint16_t bits)
116+
{
117+
mTrackBits = bits;
118+
LOG(info) << "EMTrack Cut, require track bits: " << mTrackBits;
119+
}

PWGEM/Dilepton/Core/EMTrackCut.h

Lines changed: 73 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#ifndef PWGEM_DILEPTON_CORE_EMTRACKCUT_H_
1717
#define PWGEM_DILEPTON_CORE_EMTRACKCUT_H_
1818

19-
// #include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
19+
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
2020

2121
#include "CommonConstants/PhysicsConstants.h"
2222
#include "Framework/DataTypes.h"
@@ -31,7 +31,7 @@
3131
#include <utility>
3232
#include <vector>
3333

34-
// using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
34+
using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
3535

3636
class EMTrackCut : public TNamed
3737
{
@@ -45,80 +45,84 @@ class EMTrackCut : public TNamed
4545
kTrackPtRange,
4646
kTrackEtaRange,
4747
kTrackPhiRange,
48+
kDCAxy,
49+
kDCAz,
4850
kTPCNCls,
4951
kTPCCrossedRows,
5052
kTPCCrossedRowsOverNCls,
5153
kTPCFracSharedClusters,
5254
kTPCChi2NDF,
53-
kDCAxy,
54-
kDCAz,
5555
kITSNCls,
5656
kITSChi2NDF,
57+
kTrackBits,
5758
kNCuts
5859
};
5960

6061
template <typename TTrack>
6162
bool IsSelected(TTrack const& track) const
6263
{
63-
if (!track.hasITS() || !track.hasTPC()) {
64-
return false;
65-
}
64+
// if (!track.hasITS() || !track.hasTPC()) {
65+
// return false;
66+
// }
6667

6768
if (!IsSelectedTrack(track, EMTrackCuts::kTrackPtRange)) {
6869
return false;
6970
}
7071
if (!IsSelectedTrack(track, EMTrackCuts::kTrackEtaRange)) {
7172
return false;
7273
}
73-
7474
if (!IsSelectedTrack(track, EMTrackCuts::kTrackPhiRange)) {
7575
return false;
7676
}
77+
7778
if (!IsSelectedTrack(track, EMTrackCuts::kDCAxy)) {
7879
return false;
7980
}
8081
if (!IsSelectedTrack(track, EMTrackCuts::kDCAz)) {
8182
return false;
8283
}
83-
84-
// ITS cuts
85-
if (!IsSelectedTrack(track, EMTrackCuts::kITSNCls)) {
84+
if (!IsSelectedTrack(track, EMTrackCuts::kTrackBits)) {
8685
return false;
8786
}
88-
if (!IsSelectedTrack(track, EMTrackCuts::kITSChi2NDF)) {
89-
return false;
90-
}
91-
92-
if (mRequireITSibAny) {
93-
auto hits_ib = std::count_if(its_ib_any_Requirement.second.begin(), its_ib_any_Requirement.second.end(), [&](auto&& requiredLayer) { return track.itsClusterMap() & (1 << requiredLayer); });
94-
if (hits_ib < its_ib_any_Requirement.first) {
95-
return false;
96-
}
97-
}
9887

99-
if (mRequireITSib1st) {
100-
auto hits_ib = std::count_if(its_ib_1st_Requirement.second.begin(), its_ib_1st_Requirement.second.end(), [&](auto&& requiredLayer) { return track.itsClusterMap() & (1 << requiredLayer); });
101-
if (hits_ib < its_ib_1st_Requirement.first) {
102-
return false;
103-
}
104-
}
105-
106-
// TPC cuts
107-
if (!IsSelectedTrack(track, EMTrackCuts::kTPCNCls)) {
108-
return false;
109-
}
110-
if (!IsSelectedTrack(track, EMTrackCuts::kTPCCrossedRows)) {
111-
return false;
112-
}
113-
if (!IsSelectedTrack(track, EMTrackCuts::kTPCCrossedRowsOverNCls)) {
114-
return false;
115-
}
116-
if (!IsSelectedTrack(track, EMTrackCuts::kTPCFracSharedClusters)) {
117-
return false;
118-
}
119-
if (!IsSelectedTrack(track, EMTrackCuts::kTPCChi2NDF)) {
120-
return false;
121-
}
88+
// // ITS cuts
89+
// if (!IsSelectedTrack(track, EMTrackCuts::kITSNCls)) {
90+
// return false;
91+
// }
92+
// if (!IsSelectedTrack(track, EMTrackCuts::kITSChi2NDF)) {
93+
// return false;
94+
// }
95+
//
96+
// if (mRequireITSibAny) {
97+
// auto hits_ib = std::count_if(its_ib_any_Requirement.second.begin(), its_ib_any_Requirement.second.end(), [&](auto&& requiredLayer) { return track.itsClusterMap() & (1 << requiredLayer); });
98+
// if (hits_ib < its_ib_any_Requirement.first) {
99+
// return false;
100+
// }
101+
// }
102+
//
103+
// if (mRequireITSib1st) {
104+
// auto hits_ib = std::count_if(its_ib_1st_Requirement.second.begin(), its_ib_1st_Requirement.second.end(), [&](auto&& requiredLayer) { return track.itsClusterMap() & (1 << requiredLayer); });
105+
// if (hits_ib < its_ib_1st_Requirement.first) {
106+
// return false;
107+
// }
108+
// }
109+
//
110+
// // TPC cuts
111+
// if (!IsSelectedTrack(track, EMTrackCuts::kTPCNCls)) {
112+
// return false;
113+
// }
114+
// if (!IsSelectedTrack(track, EMTrackCuts::kTPCCrossedRows)) {
115+
// return false;
116+
// }
117+
// if (!IsSelectedTrack(track, EMTrackCuts::kTPCCrossedRowsOverNCls)) {
118+
// return false;
119+
// }
120+
// if (!IsSelectedTrack(track, EMTrackCuts::kTPCFracSharedClusters)) {
121+
// return false;
122+
// }
123+
// if (!IsSelectedTrack(track, EMTrackCuts::kTPCChi2NDF)) {
124+
// return false;
125+
// }
122126

123127
return true;
124128
}
@@ -136,32 +140,35 @@ class EMTrackCut : public TNamed
136140
case EMTrackCuts::kTrackPhiRange:
137141
return track.phi() > mMinTrackPhi && track.phi() < mMaxTrackPhi;
138142

139-
case EMTrackCuts::kTPCNCls:
140-
return track.tpcNClsFound() >= mMinNClustersTPC;
141-
142-
case EMTrackCuts::kTPCCrossedRows:
143-
return track.tpcNClsCrossedRows() >= mMinNCrossedRowsTPC;
144-
145-
case EMTrackCuts::kTPCCrossedRowsOverNCls:
146-
return track.tpcCrossedRowsOverFindableCls() > mMinNCrossedRowsOverFindableClustersTPC;
147-
148-
case EMTrackCuts::kTPCFracSharedClusters:
149-
return track.tpcFractionSharedCls() < mMaxFracSharedClustersTPC;
150-
151-
case EMTrackCuts::kTPCChi2NDF:
152-
return mMinChi2PerClusterTPC < track.tpcChi2NCl() && track.tpcChi2NCl() < mMaxChi2PerClusterTPC;
153-
154143
case EMTrackCuts::kDCAxy:
155144
return std::fabs(track.dcaXY()) < ((mMaxDcaXYPtDep) ? mMaxDcaXYPtDep(track.pt()) : mMaxDcaXY);
156145

157146
case EMTrackCuts::kDCAz:
158147
return std::fabs(track.dcaZ()) < mMaxDcaZ;
159148

160-
case EMTrackCuts::kITSNCls:
161-
return mMinNClustersITS <= track.itsNCls() && track.itsNCls() <= mMaxNClustersITS;
162-
163-
case EMTrackCuts::kITSChi2NDF:
164-
return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS;
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;
165172

166173
default:
167174
return false;
@@ -186,6 +193,7 @@ class EMTrackCut : public TNamed
186193
void SetTrackMaxDcaXYPtDep(std::function<float(float)> ptDepCut);
187194
void RequireITSibAny(bool flag);
188195
void RequireITSib1st(bool flag);
196+
void SetTrackBits(uint16_t bits);
189197

190198
private:
191199
static const std::pair<int8_t, std::set<uint8_t>> its_ib_any_Requirement;
@@ -206,6 +214,7 @@ class EMTrackCut : public TNamed
206214
float mMinChi2PerClusterITS{0.f}, mMaxChi2PerClusterITS{1e10f}; // max its fit chi2 per ITS cluster
207215
bool mRequireITSibAny{true};
208216
bool mRequireITSib1st{false};
217+
uint16_t mTrackBits{0};
209218

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

PWGEM/Dilepton/DataModel/dileptonTables.h

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ DECLARE_SOA_INDEX_COLUMN(EMEvent, emevent); //!
694694
DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //!
695695
DECLARE_SOA_COLUMN(TrackId, trackId, int); //!
696696
DECLARE_SOA_COLUMN(Sign, sign, int8_t); //!
697+
DECLARE_SOA_COLUMN(TrackBit, trackBit, uint16_t); //!
697698
DECLARE_SOA_DYNAMIC_COLUMN(Signed1Pt, signed1Pt, [](float pt, int8_t sign) -> float { return sign * 1. / pt; });
698699
DECLARE_SOA_DYNAMIC_COLUMN(P, p, [](float pt, float eta) -> float { return pt * std::cosh(eta); });
699700
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, [](float pt, float phi) -> float { return pt * std::cos(phi); });
@@ -704,18 +705,20 @@ DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float eta) -> float { return pt
704705
DECLARE_SOA_TABLE_VERSIONED(EMPrimaryTracks_000, "AOD", "EMPRIMARYTRACK", 0, //!
705706
o2::soa::Index<>, emprimarytrack::CollisionId,
706707
emprimarytrack::TrackId, emprimarytrack::Sign,
707-
track::Pt, track::Eta, track::Phi, track::DcaXY, track::DcaZ,
708-
track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows, track::TPCNClsShared, track::TPCChi2NCl,
709-
track::ITSClusterSizes, track::ITSChi2NCl, track::DetectorMap,
708+
track::Pt, track::Eta, track::Phi, track::DcaXY, track::DcaZ, emprimarytrack::TrackBit,
710709

711-
// dynamic column
712-
track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
713-
track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
714-
track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
715-
track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
716-
track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
717-
track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
718-
track::HasITS<track::DetectorMap>, track::HasTPC<track::DetectorMap>, track::HasTRD<track::DetectorMap>, track::HasTOF<track::DetectorMap>,
710+
// track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows, track::TPCNClsShared, track::TPCChi2NCl,
711+
// track::ITSClusterSizes, track::ITSChi2NCl, track::DetectorMap,
712+
713+
// // dynamic column
714+
// track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
715+
// track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
716+
// track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
717+
// track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
718+
// track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
719+
// track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
720+
721+
// track::HasITS<track::DetectorMap>, track::HasTPC<track::DetectorMap>, track::HasTRD<track::DetectorMap>, track::HasTOF<track::DetectorMap>,
719722
emprimarytrack::Signed1Pt<track::Pt, emprimarytrack::Sign>,
720723
emprimarytrack::P<track::Pt, track::Eta>,
721724
emprimarytrack::Px<track::Pt, track::Phi>,

0 commit comments

Comments
 (0)