@@ -79,6 +79,8 @@ using namespace o2::framework::expressions;
7979using namespace o2 ::aod;
8080using namespace o2 ::common::core;
8181
82+ o2::common::core::MetadataHelper metadataInfo;
83+
8284// Some definitions
8385namespace o2 ::aod
8486{
@@ -400,7 +402,7 @@ struct AnalysisEventSelection {
400402
401403 int timeFrameStartBorderMargin = fConfigTFStartBorderMargin < 0 ? par->fTimeFrameStartBorderMargin : fConfigTFStartBorderMargin ;
402404 int timeFrameEndBorderMargin = fConfigTFEndBorderMargin < 0 ? par->fTimeFrameEndBorderMargin : fConfigTFEndBorderMargin ;
403- auto runInfo = o2::parameters::AggregatedRunInfo::buildAggregatedRunInfo (o2::ccdb::BasicCCDBManager::instance (), events.begin ().runNumber ());
405+ auto runInfo = o2::parameters::AggregatedRunInfo::buildAggregatedRunInfo (o2::ccdb::BasicCCDBManager::instance (), events.begin ().runNumber (), metadataInfo. get ( " LPMProductionTag " ) );
404406 int64_t bcSOR = runInfo.orbitSOR * o2::constants::lhc::LHCMaxBunches;
405407 int64_t nBCsPerTF = fConfigNumberOfOrbitsPerTF < 0 ? runInfo.orbitsPerTF * o2::constants::lhc::LHCMaxBunches : fConfigNumberOfOrbitsPerTF * o2::constants::lhc::LHCMaxBunches;
406408 VarManager::SetTFBorderselection (bcSOR, nBCsPerTF, timeFrameStartBorderMargin, timeFrameEndBorderMargin);
@@ -3187,6 +3189,13 @@ struct AnalysisAsymmetricPairing {
31873189 std::vector<TString> fCommonCutNames ;
31883190 std::vector<TString> fRecMCSignalNames ;
31893191
3192+ // Parameters for TF and ITSROF border checks to be fetched from the event selection task
3193+ int fITSROFrameStartBorderMargin ;
3194+ int fITSROFrameEndBorderMargin ;
3195+ int fTFStartBorderMargin ;
3196+ int fTFEndBorderMargin ;
3197+ int fNumberOfOrbitsPerTF ;
3198+
31903199 Filter eventFilter = aod::dqanalysisflags::isEventSelected > static_cast <uint32_t >(0 );
31913200
31923201 Preslice<soa::Join<aod::ReducedTracksAssoc, aod::BarrelTrackCuts>> trackAssocsPerCollision = aod::reducedtrack_association::reducedeventId;
@@ -3211,6 +3220,12 @@ struct AnalysisAsymmetricPairing {
32113220 fHistMan ->SetUseDefaultVariableNames (kTRUE );
32123221 fHistMan ->SetDefaultVarNames (VarManager::fgVariableNames, VarManager::fgVariableUnits);
32133222
3223+ getTaskOptionValue<int >(context, " analysis-event-selection" , " cfgITSROFrameStartBorderMargin" , fITSROFrameStartBorderMargin , false );
3224+ getTaskOptionValue<int >(context, " analysis-event-selection" , " cfgITSROFrameEndBorderMargin" , fITSROFrameEndBorderMargin , false );
3225+ getTaskOptionValue<int >(context, " analysis-event-selection" , " cfgTFStartBorderMargin" , fTFStartBorderMargin , false );
3226+ getTaskOptionValue<int >(context, " analysis-event-selection" , " cfgTFEndBorderMargin" , fTFEndBorderMargin , false );
3227+ getTaskOptionValue<int >(context, " analysis-event-selection" , " cfgNumberOfOrbitsPerTF" , fNumberOfOrbitsPerTF , false );
3228+
32143229 // Get the leg cut filter masks
32153230 fLegAFilterMask = fConfigLegAFilterMask .value ;
32163231 fLegBFilterMask = fConfigLegBFilterMask .value ;
@@ -3592,6 +3607,24 @@ struct AnalysisAsymmetricPairing {
35923607 template <bool TTwoProngFitter, int TPairType, uint32_t TEventFillMap, uint32_t TTrackFillMap, typename TEvents, typename TTrackAssocs, typename TTracks>
35933608 void runAsymmetricPairing (TEvents const & events, Preslice<TTrackAssocs>& preslice, TTrackAssocs const & /* assocs*/ , TTracks const & /* tracks*/ , ReducedMCEvents const & /* mcEvents*/ , ReducedMCTracks const & /* mcTracks*/ )
35943609 {
3610+ if (events.size () > 0 && events.begin ().runNumber () != fCurrentRun ) {
3611+ // Set the TF and ITSROF border configuration to the same values used in the event selection task
3612+ auto alppar = fCCDB ->getForTimeStamp <o2::itsmft::DPLAlpideParam<0 >>(" ITS/Config/AlpideParam" , events.begin ().timestamp ());
3613+ EventSelectionParams* par = fCCDB ->getForTimeStamp <EventSelectionParams>(" EventSelection/EventSelectionParams" , events.begin ().timestamp ());
3614+ int itsROFrameStartBorderMargin = fITSROFrameStartBorderMargin < 0 ? par->fITSROFrameStartBorderMargin : fITSROFrameStartBorderMargin ;
3615+ int itsROFrameEndBorderMargin = fITSROFrameEndBorderMargin < 0 ? par->fITSROFrameEndBorderMargin : fITSROFrameEndBorderMargin ;
3616+ VarManager::SetITSROFBorderselection (alppar->roFrameBiasInBC , alppar->roFrameLengthInBC , itsROFrameStartBorderMargin, itsROFrameEndBorderMargin);
3617+
3618+ int timeFrameStartBorderMargin = fTFStartBorderMargin < 0 ? par->fTimeFrameStartBorderMargin : fTFStartBorderMargin ;
3619+ int timeFrameEndBorderMargin = fTFEndBorderMargin < 0 ? par->fTimeFrameEndBorderMargin : fTFEndBorderMargin ;
3620+ auto runInfo = o2::parameters::AggregatedRunInfo::buildAggregatedRunInfo (o2::ccdb::BasicCCDBManager::instance (), events.begin ().runNumber (), metadataInfo.get (" LPMProductionTag" ));
3621+ int64_t bcSOR = runInfo.orbitSOR * o2::constants::lhc::LHCMaxBunches;
3622+ int64_t nBCsPerTF = fNumberOfOrbitsPerTF < 0 ? runInfo.orbitsPerTF * o2::constants::lhc::LHCMaxBunches : fNumberOfOrbitsPerTF * o2::constants::lhc::LHCMaxBunches;
3623+ VarManager::SetTFBorderselection (bcSOR, nBCsPerTF, timeFrameStartBorderMargin, timeFrameEndBorderMargin);
3624+
3625+ fCurrentRun = events.begin ().runNumber ();
3626+ }
3627+
35953628 fPairCount .clear ();
35963629
35973630 if (events.size () > 0 ) { // Additional protection to avoid crashing of events.begin().runNumber()
@@ -5153,6 +5186,7 @@ struct AnalysisDileptonTrack {
51535186
51545187WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
51555188{
5189+ metadataInfo.initMetadata (cfgc);
51565190 return WorkflowSpec{
51575191 adaptAnalysisTask<AnalysisEventSelection>(cfgc),
51585192 adaptAnalysisTask<AnalysisTrackSelection>(cfgc),
0 commit comments