Skip to content

Commit d945c3f

Browse files
committed
[PWGCF] pT dep. DCA_xy cut added, track filter bit selection for Efficiency
1 parent 93e4fbf commit d945c3f

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

PWGCF/TableProducer/filterCorrelations.cxx

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ struct FilterCF {
9090
O2_DEFINE_CONFIGURABLE(nsigmaCutITSProton, float, 3, "proton nsigma ITS")
9191
O2_DEFINE_CONFIGURABLE(dcaxymax, float, 999.f, "maximum dcaxy of tracks")
9292
O2_DEFINE_CONFIGURABLE(dcazmax, float, 999.f, "maximum dcaz of tracks")
93+
O2_DEFINE_CONFIGURABLE(enablePtDepDCAxy, bool, false, "Enable pT-dependent DCAxy cut: |DCAxy| < a + b/pT")
94+
O2_DEFINE_CONFIGURABLE(dcaXyConst, float, 0.004f, "Constant term 'a' for pT-dependent DCAxy cut: |DCAxy| < a + b/pT (cm)")
95+
O2_DEFINE_CONFIGURABLE(dcaXySlope, float, 0.013f, "Slope term 'b' for pT-dependent DCAxy cut: |DCAxy| < a + b/pT (cm x GeV/c)")
9396
O2_DEFINE_CONFIGURABLE(itsnclusters, int, 5, "minimum number of ITS clusters for tracks")
9497
O2_DEFINE_CONFIGURABLE(tpcncrossedrows, int, 80, "minimum number of TPC crossed rows for tracks")
9598
O2_DEFINE_CONFIGURABLE(tpcnclusters, int, 50, "minimum number of TPC clusters found")
@@ -265,6 +268,14 @@ struct FilterCF {
265268
return 0;
266269
}
267270

271+
float getMaxDCAxy(float pt)
272+
{
273+
if (!enablePtDepDCAxy) {
274+
return dcaxymax; // Use constant cut if pT-dependent cut is disabled
275+
}
276+
return dcaXyConst + dcaXySlope / pt; // a + b/pT
277+
}
278+
268279
template <class T>
269280
using HasMultTables = decltype(std::declval<T&>().multNTracksPV());
270281

@@ -303,10 +314,11 @@ struct FilterCF {
303314
if (cfgTransientTables)
304315
outputCollRefs(collision.globalIndex());
305316
for (auto& track : tracks) {
306-
if ((std::abs(track.dcaXY()) > dcaxymax) || (std::abs(track.dcaZ()) > dcazmax)) {
307-
continue;
317+
float maxDCAxy = enablePtDepDCAxy ? getMaxDCAxy(track.pt()) : dcaxymax;
318+
if ((std::abs(track.dcaXY()) > maxDCAxy) || (std::abs(track.dcaZ()) > dcazmax)) {
319+
continue;
308320
}
309-
321+
310322
outputTracks(outputCollisions.lastIndex(), track.pt(), track.eta(), track.phi(), track.sign(), getTrackType(track));
311323
if (cfgTransientTables)
312324
outputTrackRefs(collision.globalIndex(), track.globalIndex());
@@ -336,10 +348,17 @@ struct FilterCF {
336348

337349
void processTrackQA(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CFMultiplicities>>::iterator const& collision, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA>> const& tracks)
338350
{
351+
if (!keepCollision(collision)) {
352+
return;
353+
}
339354
registrytrackQA.fill(HIST("zvtx"), collision.posZ());
340355
for (const auto& track : tracks) {
341356
if (!track.isGlobalTrack()) {
342-
return; // trackQA for global tracks only
357+
continue; // trackQA for global tracks only
358+
}
359+
float maxDCAxy = enablePtDepDCAxy ? getMaxDCAxy(track.pt()) : dcaxymax;
360+
if ((std::abs(track.dcaXY()) > maxDCAxy) || (std::abs(track.dcaZ()) > dcazmax)) {
361+
continue;
343362
}
344363
registrytrackQA.fill(HIST("eta"), track.eta());
345364
registrytrackQA.fill(HIST("pT"), track.pt());

PWGCF/Tasks/correlations.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,6 +1146,7 @@ struct CorrelationTask {
11461146
}
11471147

11481148
for (const auto& track : groupedTracks) {
1149+
if (cfgTrackBitMask > 0 && (track.trackType() & (uint8_t)cfgTrackBitMask) != (uint8_t)cfgTrackBitMask) continue;
11491150
if (track.has_cfMCParticle()) {
11501151
const auto& mcParticle = track.cfMCParticle();
11511152
if ((doprocessMCEfficiency2Prong || doprocessMCEfficiency2ProngML) && std::find(cfgMcTriggerPDGs->begin(), cfgMcTriggerPDGs->end(), mcParticle.pdgCode()) != cfgMcTriggerPDGs->end())

0 commit comments

Comments
 (0)