2121#include " Common/CCDB/EventSelectionParams.h"
2222#include " Common/CCDB/TriggerAliases.h"
2323#include " Common/CCDB/ctpRateFetcher.h"
24+ #include " Common/Core/CollisionAssociation.h"
2425#include " Common/Core/TableHelper.h"
2526#include " Common/Core/TrackSelection.h"
2627#include " Common/Core/TrackSelectionDefaults.h"
@@ -308,7 +309,8 @@ struct PidFlowChargedTimeProducer {
308309 bool timeUniformField = false ;
309310 bool cfgRequireUniqueTimeAssociation = false ;
310311 bool cfgTimeAssociationQA = true ;
311- bool timeUsePVAssociation = true ;
312+ int timeUsePVAssociation = aod::track_association::PVContrReassocOpt::OnlySameBc;
313+ int timeMaxPvContributorsForLowMultReassoc = 10 ;
312314 float timeNSigma = 4 .f;
313315 float timeMargin = 0 .f;
314316 float cutEta = 0 .8f ;
@@ -331,7 +333,8 @@ struct PidFlowChargedTimeProducer {
331333 }
332334 cfgRequireUniqueTimeAssociation = timeAssociationOption<bool >(context, " pid-flow-pt-corr" , " cfgRequireUniqueTimeAssociation" );
333335 cfgTimeAssociationQA = timeAssociationOption<bool >(context, " pid-flow-pt-corr" , " cfgTimeAssociationQA" );
334- timeUsePVAssociation = timeAssociationOption<bool >(context, " track-to-collision-association" , " usePVAssociation" );
336+ timeUsePVAssociation = timeAssociationOption<int >(context, " track-to-collision-association" , " usePVAssociation" );
337+ timeMaxPvContributorsForLowMultReassoc = timeAssociationOption<int >(context, " track-to-collision-association" , " maxPvContributorsForLowMultReassoc" );
335338 timeNSigma = timeAssociationOption<float >(context, " track-to-collision-association" , " nSigmaForTimeCompat" );
336339 timeMargin = timeAssociationOption<float >(context, " track-to-collision-association" , " timeMargin" );
337340 cutEta = timeAssociationOption<float >(context, " pid-flow-pt-corr" , " trkQualityOpts.cfgCutEta" );
@@ -380,7 +383,8 @@ struct PidFlowChargedTimeProducer {
380383 metadata += " ;producer.nSigmaForTimeCompat=" + std::to_string (timeAssociationOption<float >(context, " track-to-collision-association" , " nSigmaForTimeCompat" ));
381384 metadata += " ;producer.timeMargin=" + std::to_string (timeAssociationOption<float >(context, " track-to-collision-association" , " timeMargin" ));
382385 metadata += " ;producer.bcWindowForOneSigma=" + std::to_string (timeAssociationOption<int >(context, " track-to-collision-association" , " bcWindowForOneSigma" ));
383- metadata += " ;producer.usePVAssociation=" + std::to_string (static_cast <int >(timeAssociationOption<bool >(context, " track-to-collision-association" , " usePVAssociation" )));
386+ metadata += " ;producer.usePVAssociation=" + std::to_string (timeUsePVAssociation);
387+ metadata += " ;producer.maxPvContributorsForLowMultReassoc=" + std::to_string (timeMaxPvContributorsForLowMultReassoc);
384388 metadata += " ;producer.includeUnassigned=" + std::to_string (static_cast <int >(timeAssociationOption<bool >(context, " track-to-collision-association" , " includeUnassigned" )));
385389 chargedTimeAssociationConfig->SetTitle (metadata.c_str ());
386390 LOG (info) << " Charged time association: " << metadata;
@@ -517,7 +521,11 @@ struct PidFlowChargedTimeProducer {
517521 originalTimeStatus = 5 ;
518522 if (collisionIndex >= 0 && collisionIndex < collisions.size ()) {
519523 auto collision = collisions.rawIteratorAt (collisionIndex);
520- const bool usePVTime = timeUsePVAssociation && track.isPVContributor ();
524+ // Match the public associator's PV-time substitution, including mode 2.
525+ const bool usePVTime = track.isPVContributor () &&
526+ (timeUsePVAssociation == aod::track_association::PVContrReassocOpt::OnlySameBc ||
527+ (timeUsePVAssociation == aod::track_association::PVContrReassocOpt::SameBcAndLowMult &&
528+ collision.numContrib () > timeMaxPvContributorsForLowMultReassoc));
521529 const float trackTime = usePVTime ? collision.collisionTime () : track.trackTime ();
522530 const float trackRes = usePVTime ? o2::constants::lhc::LHCBunchSpacingNS : track.trackTimeRes ();
523531 const float collisionRes = collision.collisionTimeRes ();
0 commit comments