From d9cc0230804b0d88f50ce05ba6115a776f9d65d4 Mon Sep 17 00:00:00 2001 From: sigurd Date: Thu, 25 Jun 2026 09:42:49 +0200 Subject: [PATCH 1/2] Add optional fetching of IR per event from CCDB --- PWGDQ/Core/VarManager.cxx | 3 +++ PWGDQ/Core/VarManager.h | 1 + PWGDQ/Tasks/tableReader_withAssoc.cxx | 15 +++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index 1faf6c8731e..276a486a6fc 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -916,6 +916,8 @@ void VarManager::SetDefaultVarNames() fgVariableUnits[kDCAzNPeaksTrimmed2] = ""; fgVariableNames[kDCAzNPeaksTrimmed3] = "Number of peaks in binned DCAz distribution (trimmed 3)"; fgVariableUnits[kDCAzNPeaksTrimmed3] = ""; + fgVariableNames[kInteractionRate] = "ZNC hadronic interaction rate"; + fgVariableUnits[kInteractionRate] = "kHz"; fgVariableNames[kPt] = "p_{T}"; fgVariableUnits[kPt] = "GeV/c"; fgVariableNames[kPt1] = "p_{T1}"; @@ -2196,6 +2198,7 @@ void VarManager::SetDefaultVarNames() fgVarNamesMap["kTwoR2EP1"] = kTwoR2EP1; fgVarNamesMap["kTwoR2EP2"] = kTwoR2EP2; fgVarNamesMap["kNPairsPerEvent"] = kNPairsPerEvent; + fgVarNamesMap["kInteractionRate"] = kInteractionRate; fgVarNamesMap["kNEventWiseVariables"] = kNEventWiseVariables; fgVarNamesMap["kX"] = kX; fgVarNamesMap["kY"] = kY; diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index f2b48e3d71f..cc872d95e96 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -495,6 +495,7 @@ class VarManager : public TObject kTwoR2EP1, // Event plane resolution of event2 for ME technique kTwoR2EP2, // Event plane resolution of event2 for ME technique kNPairsPerEvent, // number of pairs per event in same-event or mixed-event pairing + kInteractionRate, // Variables for event mixing with cumulant kV22m, diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index df23e49300b..f1ae563f36d 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -24,6 +24,7 @@ #include "PWGDQ/DataModel/ReducedInfoTables.h" #include "Common/CCDB/EventSelectionParams.h" +#include "Common/CCDB/ctpRateFetcher.h" #include "Common/Core/RecoDecay.h" #include "Common/Core/TableHelper.h" @@ -330,6 +331,8 @@ struct AnalysisEventSelection { Configurable fConfigRunZorro{"cfgRunZorro", false, "Enable event selection with zorro [WARNING: under debug, do not enable!]"}; Configurable fConfigCcdbUrl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable fConfigNoLaterThan{"ccdb-no-later-than", std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"}; + Configurable fConfigFetchInteractionRate{"cfgFetchInteractionRate", false, "Fetch event-wise interaction rate from the CCDB"}; + Configurable fConfigIRSource{"cfgIRSource", "ZNC hadronic", "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> ZNC hadronic)"}; HistogramManager* fHistMan = nullptr; MixingHandler* fMixHandler = nullptr; @@ -337,6 +340,7 @@ struct AnalysisEventSelection { Service fCCDB{}; o2::ccdb::CcdbApi fCCDBApi; + ctpRateFetcher rateFetcher; std::map fSelMap; // key: reduced event global index, value: event selection decision std::map> fBCCollMap; // key: global BC, value: vector of reduced event global indices @@ -442,6 +446,10 @@ struct AnalysisEventSelection { // Reset the fValues array and fill event observables VarManager::ResetValues(0, VarManager::kNEventWiseVariables); VarManager::FillEvent(event); + // Get the instantaneous IR from the CCDB + if (fConfigFetchInteractionRate.value) { + VarManager::fgValues[VarManager::kInteractionRate] = rateFetcher.fetch(fCCDB.service, event.timestamp(), fCurrentRun, fConfigIRSource.value, true) / 1000.; // kHz + } bool decision = false; // Fill histograms in the class Event, before cuts @@ -3074,8 +3082,11 @@ struct AnalysisAsymmetricPairing { Configurable fConfigUseAbsDCA{"cfgUseAbsDCA", false, "Use absolute DCA minimization instead of chi^2 minimization in secondary vertexing"}; Configurable fConfigPropToPCA{"cfgPropToPCA", false, "Propagate tracks to secondary vertex"}; Configurable fConfigLutPath{"lutPath", "GLO/Param/MatLUT", "Path of the Lut parametrization"}; + Configurable fConfigFetchInteractionRate{"cfgFetchInteractionRate", false, "Fetch event-wise interaction rate from the CCDB"}; + Configurable fConfigIRSource{"cfgIRSource", "ZNC hadronic", "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> ZNC hadronic)"}; Service fCCDB{}; + ctpRateFetcher rateFetcher; HistogramManager* fHistMan = nullptr; @@ -3415,6 +3426,10 @@ struct AnalysisAsymmetricPairing { // Reset the fValues array VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillEvent(event, dqtablereader_helpers::varValues()); + // Get the instantaneous IR from the CCDB + if (fConfigFetchInteractionRate.value) { + VarManager::fgValues[VarManager::kInteractionRate] = rateFetcher.fetch(fCCDB.service, event.timestamp(), fCurrentRun, fConfigIRSource.value, true) / 1000.; // kHz + } auto groupedLegAAssocs = legACandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegAAssocs.size() == 0) { From ff6a935f73b50456d62bd65bcc134d00b4eecf91 Mon Sep 17 00:00:00 2001 From: sigurd Date: Thu, 25 Jun 2026 10:03:15 +0200 Subject: [PATCH 2/2] Fix variable name --- PWGDQ/Core/VarManager.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index 276a486a6fc..097fe8296f7 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -916,7 +916,7 @@ void VarManager::SetDefaultVarNames() fgVariableUnits[kDCAzNPeaksTrimmed2] = ""; fgVariableNames[kDCAzNPeaksTrimmed3] = "Number of peaks in binned DCAz distribution (trimmed 3)"; fgVariableUnits[kDCAzNPeaksTrimmed3] = ""; - fgVariableNames[kInteractionRate] = "ZNC hadronic interaction rate"; + fgVariableNames[kInteractionRate] = "Interaction rate"; fgVariableUnits[kInteractionRate] = "kHz"; fgVariableNames[kPt] = "p_{T}"; fgVariableUnits[kPt] = "GeV/c";