@@ -84,6 +84,7 @@ struct HStrangeCorrelationFilter {
8484 Configurable<std::string> zorroMask{" zorroMask" , " " , " zorro trigger class to select on (empty: none)" };
8585 Configurable<float > nSigmaNearXiMassCenter{" nSigmaNearXiMassCenter" , 0 , " for Oemga analysis only, to check if candidate mass is around Xi" };
8686 Configurable<bool > rejectAmbiguousTracks{" rejectAmbiguousTracks" , false , " reject tracks compatible with more than one collision (requires track-to-collision-associator with fillTableOfCollIdsPerTrack)" };
87+ Configurable<bool > rejectAmbiguousAssoc{" rejectAmbiguousAssoc" , false , " reject V0/cascade candidates having at least one ambiguous daughter track" };
8788
8889 // used for event selections in Pb-Pb
8990 Configurable<int > cfgCutOccupancyHigh{" cfgCutOccupancyHigh" , 3000 , " High cut on TPC occupancy" };
@@ -214,8 +215,8 @@ struct HStrangeCorrelationFilter {
214215 // using CascadesLinkedTagged = soa::Join<aod::CascadesLinked, aod::CascTags>;
215216 using FullTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackCompColls>;
216217 using FullTracksMC = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels, aod::TrackCompColls>;
217- using DauTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::TracksDCA>;
218- using DauTracksMC = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::TracksDCA, aod::McTrackLabels>;
218+ using DauTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::TracksDCA, aod::TrackCompColls >;
219+ using DauTracksMC = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::TracksDCA, aod::McTrackLabels, aod::TrackCompColls >;
219220 // using IDTracks= soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidBayesPi, aod::pidBayesKa, aod::pidBayesPr, aod::TOFSignal>; // prepared for Bayesian PID
220221 using IDTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa, aod::pidTPCFullPr, aod::pidTOFFullPr, aod::pidTPCFullEl, aod::pidTOFFullEl, aod::TOFSignal, aod::TracksDCA>;
221222 using IDTracksMC = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa, aod::pidTPCFullPr, aod::pidTOFFullPr, aod::pidTPCFullEl, aod::pidTOFFullEl, aod::TOFSignal, aod::TracksDCA, aod::McTrackLabels>;
@@ -302,6 +303,9 @@ struct HStrangeCorrelationFilter {
302303 histos.add (" h3dMassLambda" , " h3dMassLambda" , kTH3F , {axesConfigurations.axisPtQA , axesConfigurations.axisLambdaMass , axesConfigurations.axisMult });
303304 histos.add (" h3dMassAntiLambda" , " h3dMassAntiLambda" , kTH3F , {axesConfigurations.axisPtQA , axesConfigurations.axisLambdaMass , axesConfigurations.axisMult });
304305 }
306+ if (rejectAmbiguousAssoc && (doprocessV0s || doprocessV0sMC)) {
307+ histos.add (" hAmbiguousV0Pt" , " hAmbiguousV0Pt" , kTH1F , {axesConfigurations.axisPtQA });
308+ }
305309 if (rejectAmbiguousTracks && (doprocessTriggers || doprocessTriggersMC)) {
306310 histos.add (" hAmbiguousTriggerPt" , " hAmbiguousTriggerPt" , kTH1F , {axesConfigurations.axisPtQA });
307311 }
@@ -311,6 +315,9 @@ struct HStrangeCorrelationFilter {
311315 histos.add (" h3dMassOmegaMinus" , " h3dMassOmegaMinus" , kTH3F , {axesConfigurations.axisPtQA , axesConfigurations.axisOmegaMass , axesConfigurations.axisMult });
312316 histos.add (" h3dMassOmegaPlus" , " h3dMassOmegaPlus" , kTH3F , {axesConfigurations.axisPtQA , axesConfigurations.axisOmegaMass , axesConfigurations.axisMult });
313317 }
318+ if (rejectAmbiguousAssoc && (doprocessCascades || doprocessCascadesMC)) {
319+ histos.add (" hAmbiguousCascadePt" , " hAmbiguousCascadePt" , kTH1F , {axesConfigurations.axisPtQA });
320+ }
314321 }
315322
316323 void initCCDB (aod::BCsWithTimestamps::iterator const & bc)
@@ -839,6 +846,10 @@ struct HStrangeCorrelationFilter {
839846 if (trackSelections.requireClusterInITS && (posdau.itsNCls () < trackSelections.minITSClustersForDaughterTracks || negdau.itsNCls () < trackSelections.minITSClustersForDaughterTracks )) {
840847 continue ;
841848 }
849+ if (rejectAmbiguousAssoc && (isAmbiguousTrack (posdau) || isAmbiguousTrack (negdau))) {
850+ histos.fill (HIST (" hAmbiguousV0Pt" ), v0.pt ());
851+ continue ;
852+ }
842853
843854 float dcaDauCutForK0s = v0Selection.dcaDaugToPVForK0s == 0 ? v0Selection.dcaMesonToPV : v0Selection.dcaDaugToPVForK0s ;
844855 bool isGoodK0Short = (v0.distovertotmom (collision.posX (), collision.posY (), collision.posZ ()) * o2::constants::physics::MassK0Short < v0Selection.lifetimecutK0S &&
@@ -974,6 +985,10 @@ struct HStrangeCorrelationFilter {
974985 if (trackSelections.requireClusterInITS && (posdau.itsNCls () < trackSelections.minITSClustersForDaughterTracks || negdau.itsNCls () < trackSelections.minITSClustersForDaughterTracks )) {
975986 continue ;
976987 }
988+ if (rejectAmbiguousAssoc && (isAmbiguousTrack (posdau) || isAmbiguousTrack (negdau))) {
989+ histos.fill (HIST (" hAmbiguousV0Pt" ), v0.pt ());
990+ continue ;
991+ }
977992
978993 float dcaDauCutForK0s = v0Selection.dcaDaugToPVForK0s == 0 ? v0Selection.dcaMesonToPV : v0Selection.dcaDaugToPVForK0s ;
979994 bool isGoodK0Short = v0.distovertotmom (collision.posX (), collision.posY (), collision.posZ ()) * o2::constants::physics::MassK0Short < v0Selection.lifetimecutK0S &&
@@ -1128,6 +1143,10 @@ struct HStrangeCorrelationFilter {
11281143 if (negTrackCast.tpcNClsCrossedRows () < trackSelections.minTPCNCrossedRows ) {
11291144 continue ;
11301145 }
1146+ if (rejectAmbiguousAssoc && (isAmbiguousTrack (bachTrackCast) || isAmbiguousTrack (posTrackCast) || isAmbiguousTrack (negTrackCast))) {
1147+ histos.fill (HIST (" hAmbiguousCascadePt" ), casc.pt ());
1148+ continue ;
1149+ }
11311150 if (!doPPAnalysis && !cascadeSelectedPbPb (casc, collision.posX (), collision.posY (), collision.posZ ())) {
11321151 continue ;
11331152 }
@@ -1297,6 +1316,10 @@ struct HStrangeCorrelationFilter {
12971316 if (negTrackCast.tpcNClsCrossedRows () < trackSelections.minTPCNCrossedRows ) {
12981317 continue ;
12991318 }
1319+ if (rejectAmbiguousAssoc && (isAmbiguousTrack (bachTrackCast) || isAmbiguousTrack (posTrackCast) || isAmbiguousTrack (negTrackCast))) {
1320+ histos.fill (HIST (" hAmbiguousCascadePt" ), casc.pt ());
1321+ continue ;
1322+ }
13001323 if (!doPPAnalysis && !cascadeSelectedPbPb (casc, collision.posX (), collision.posY (), collision.posZ ())) {
13011324 continue ;
13021325 }
0 commit comments