3131#include < Framework/DataRefUtils.h>
3232#include < Framework/EndOfStreamContext.h>
3333#include < CommonUtils/ConfigurableParam.h>
34+ #include < DetectorsBase/GRPGeomHelper.h>
3435
3536#include " QualityControl/QcInfoLogger.h"
3637#include " QualityControl/TaskFactory.h"
@@ -54,6 +55,7 @@ namespace o2::quality_control::core
5455
5556using namespace o2 ::framework;
5657using namespace o2 ::header;
58+ using namespace o2 ::base;
5759using namespace o2 ::configuration;
5860using namespace o2 ::monitoring;
5961using namespace std ::chrono;
@@ -169,6 +171,10 @@ void TaskRunner::init(InitContext& iCtx)
169171 if (!ConfigParamGlo::keyValues.empty ()) {
170172 conf::ConfigurableParam::updateFromString (ConfigParamGlo::keyValues);
171173 }
174+ // load reco helpers
175+ if (mTaskConfig .grpGeomRequest ) {
176+ GRPGeomHelper::instance ().setRequest (mTaskConfig .grpGeomRequest );
177+ }
172178
173179 // init user's task
174180 mTask ->setCcdbUrl (mTaskConfig .conditionUrl );
@@ -190,6 +196,10 @@ void TaskRunner::run(ProcessingContext& pCtx)
190196 startCycle ();
191197 }
192198
199+ if (mTaskConfig .grpGeomRequest ) {
200+ GRPGeomHelper::instance ().checkUpdates (pCtx);
201+ }
202+
193203 auto [dataReady, timerReady] = validateInputs (pCtx.inputs ());
194204
195205 if (dataReady) {
@@ -210,6 +220,15 @@ void TaskRunner::run(ProcessingContext& pCtx)
210220 }
211221}
212222
223+ void TaskRunner::finaliseCCDB (ConcreteDataMatcher& matcher, void * obj)
224+ {
225+ if (mTaskConfig .grpGeomRequest ) {
226+ if (!GRPGeomHelper::instance ().finaliseCCDB (matcher, obj)) {
227+ ILOG (Warning, Devel) << " Could not update CCDB objects requested by GRPGeomHelper" << ENDM;
228+ }
229+ }
230+ }
231+
213232CompletionPolicy::CompletionOp TaskRunner::completionPolicyCallback (o2::framework::InputSpan const & inputs)
214233{
215234 // fixme: we assume that there is one timer input and the rest are data inputs. If some other implicit inputs are
0 commit comments