Skip to content

Commit 4419a5e

Browse files
committed
Update hStrangeCorrelationFilter.cxx
1 parent e39d44f commit 4419a5e

1 file changed

Lines changed: 29 additions & 2 deletions

File tree

PWGLF/TableProducer/Strangeness/hStrangeCorrelationFilter.cxx

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "Common/Core/Zorro.h"
2626
#include "Common/Core/ZorroSummary.h"
2727
#include "Common/DataModel/Centrality.h"
28+
#include "Common/DataModel/CollisionAssociationTables.h"
2829
#include "Common/DataModel/EventSelection.h"
2930
#include "Common/DataModel/Multiplicity.h"
3031
#include "Common/DataModel/PIDResponseTOF.h"
@@ -82,6 +83,7 @@ struct HStrangeCorrelationFilter {
8283
Configurable<float> strangedEdxNSigmaTight{"strangedEdxNSigmaTight", 3, "Nsigmas for strange decay daughters"};
8384
Configurable<std::string> zorroMask{"zorroMask", "", "zorro trigger class to select on (empty: none)"};
8485
Configurable<float> nSigmaNearXiMassCenter{"nSigmaNearXiMassCenter", 0, "for Oemga analysis only, to check if candidate mass is around Xi"};
86+
Configurable<bool> rejectAmbiguousTracks{"rejectAmbiguousTracks", false, "reject tracks compatible with more than one collision (requires track-to-collision-associator with fillTableOfCollIdsPerTrack)"};
8587

8688
// used for event selections in Pb-Pb
8789
Configurable<int> cfgCutOccupancyHigh{"cfgCutOccupancyHigh", 3000, "High cut on TPC occupancy"};
@@ -210,8 +212,8 @@ struct HStrangeCorrelationFilter {
210212

211213
// using V0LinkedTagged = soa::Join<aod::V0sLinked, aod::V0Tags>;
212214
// using CascadesLinkedTagged = soa::Join<aod::CascadesLinked, aod::CascTags>;
213-
using FullTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA>;
214-
using FullTracksMC = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels>;
215+
using FullTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackCompColls>;
216+
using FullTracksMC = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels, aod::TrackCompColls>;
215217
using DauTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::TracksDCA>;
216218
using DauTracksMC = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::TracksDCA, aod::McTrackLabels>;
217219
// using IDTracks= soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidBayesPi, aod::pidBayesKa, aod::pidBayesPr, aod::TOFSignal>; // prepared for Bayesian PID
@@ -300,6 +302,9 @@ struct HStrangeCorrelationFilter {
300302
histos.add("h3dMassLambda", "h3dMassLambda", kTH3F, {axesConfigurations.axisPtQA, axesConfigurations.axisLambdaMass, axesConfigurations.axisMult});
301303
histos.add("h3dMassAntiLambda", "h3dMassAntiLambda", kTH3F, {axesConfigurations.axisPtQA, axesConfigurations.axisLambdaMass, axesConfigurations.axisMult});
302304
}
305+
if (rejectAmbiguousTracks && (doprocessTriggers || doprocessTriggersMC)) {
306+
histos.add("hAmbiguousTriggerPt", "hAmbiguousTriggerPt", kTH1F, {axesConfigurations.axisPtQA});
307+
}
303308
if (doprocessCascades || doprocessCascadesMC) {
304309
histos.add("h3dMassXiMinus", "h3dMassXiMinus", kTH3F, {axesConfigurations.axisPtQA, axesConfigurations.axisXiMass, axesConfigurations.axisMult});
305310
histos.add("h3dMassXiPlus", "h3dMassXiPlus", kTH3F, {axesConfigurations.axisPtQA, axesConfigurations.axisXiMass, axesConfigurations.axisMult});
@@ -410,6 +415,20 @@ struct HStrangeCorrelationFilter {
410415
return true;
411416
}
412417

418+
// ambiguous track check: the track is compatible with more than one collision,
419+
// or with a collision different from the one it is assigned to (see PWGCF/TableProducer/dptDptFilter.cxx)
420+
template <class TTrack>
421+
bool isAmbiguousTrack(TTrack const& track)
422+
{
423+
if (track.compatibleCollIds().size() == 0) {
424+
return false; // no collision association information: not ambiguous
425+
}
426+
if (track.compatibleCollIds().size() == 1) {
427+
return track.collisionId() != track.compatibleCollIds()[0];
428+
}
429+
return true; // associated to more than one collision
430+
}
431+
413432
// reco-level trigger quality checks (N.B.: DCA is filtered, not selected)
414433
template <class TTrack>
415434
bool isValidTrigger(TTrack const& track)
@@ -593,6 +612,10 @@ struct HStrangeCorrelationFilter {
593612
if (!isValidTrigger(track)) {
594613
continue;
595614
}
615+
if (rejectAmbiguousTracks && isAmbiguousTrack(track)) {
616+
histos.fill(HIST("hAmbiguousTriggerPt"), track.pt());
617+
continue;
618+
}
596619
TriggCandidate thisTrigg{};
597620
thisTrigg.pt = track.pt();
598621
thisTrigg.trackId = track.globalIndex();
@@ -634,6 +657,10 @@ struct HStrangeCorrelationFilter {
634657
if (!isValidTrigger(track)) {
635658
continue;
636659
}
660+
if (rejectAmbiguousTracks && isAmbiguousTrack(track)) {
661+
histos.fill(HIST("hAmbiguousTriggerPt"), track.pt());
662+
continue;
663+
}
637664
TriggCandidate thisTrigg{};
638665
thisTrigg.pt = track.pt();
639666
thisTrigg.trackId = track.globalIndex();

0 commit comments

Comments
 (0)