@@ -33,12 +33,14 @@ using namespace o2::utilities;
3333#include < Framework/TimesliceIndex.h>
3434#include < Framework/DataSpecUtils.h>
3535#include < Framework/DataDescriptorQueryBuilder.h>
36+ #include < Framework/ConfigParamRegistry.h>
3637
3738#include " QualityControl/QcInfoLogger.h"
3839#include " QualityControl/TaskFactory.h"
3940
4041#include < string>
4142#include < memory>
43+ #include < boost/property_tree/ini_parser.hpp>
4244
4345using namespace std ;
4446
@@ -56,6 +58,7 @@ using namespace AliceO2::Common;
5658
5759TaskRunner::TaskRunner (const std::string& taskName, const std::string& configurationSource, size_t id)
5860 : mDeviceName (createTaskRunnerIdString() + " -" + taskName),
61+ mRunNumber (0 ),
5962 mMonitorObjectsSpec({ " mo" }, createTaskDataOrigin(), createTaskDataDescription(taskName), id)
6063{
6164 // setup configuration
@@ -75,7 +78,7 @@ void TaskRunner::init(InitContext& iCtx)
7578 ILOG (Info) << " initializing TaskRunner" << ENDM ;
7679
7780 // registering state machine callbacks
78- iCtx.services ().get <CallbackService>().set (CallbackService::Id::Start, [this ]() { start (); });
81+ iCtx.services ().get <CallbackService>().set (CallbackService::Id::Start, [this , &options = iCtx. options () ]() { start (options ); });
7982 iCtx.services ().get <CallbackService>().set (CallbackService::Id::Stop, [this ]() { stop (); });
8083 iCtx.services ().get <CallbackService>().set (CallbackService::Id::Reset, [this ]() { reset (); });
8184
@@ -200,8 +203,16 @@ void TaskRunner::endOfStream(framework::EndOfStreamContext& eosContext)
200203 mNoMoreCycles = true ;
201204}
202205
203- void TaskRunner::start ()
206+ void TaskRunner::start (const ConfigParamRegistry& options )
204207{
208+ try {
209+ mRunNumber = options.get <int >(" runNumber" );
210+ ILOG (Info) << " Run number found in options: " << mRunNumber << ENDM ;
211+ } catch (std::invalid_argument& ia) {
212+ ILOG (Info) << " Run number not found in options, using 0 instead." << ENDM ;
213+ mRunNumber = 0 ;
214+ }
215+
205216 startOfActivity ();
206217
207218 if (mNoMoreCycles ) {
@@ -222,13 +233,15 @@ void TaskRunner::stop()
222233 }
223234 endOfActivity ();
224235 mTask ->reset ();
236+ mRunNumber = 0 ;
225237}
226238
227239void TaskRunner::reset ()
228240{
229241 mTask .reset ();
230242 mCollector .reset ();
231243 mObjectsManager .reset ();
244+ mRunNumber = 0 ;
232245}
233246
234247std::tuple<bool /* data ready*/ , bool /* timer ready*/ > TaskRunner::validateInputs (const framework::InputRecord& inputs)
@@ -339,15 +352,17 @@ void TaskRunner::startOfActivity()
339352 mTimerTotalDurationActivity .reset ();
340353 mTotalNumberObjectsPublished = 0 ;
341354
342- Activity activity (mConfigFile ->get <int >(" qc.config.Activity.number" ),
355+ // We take the run number as set from the FairMQ options if it is there, otherwise the one from the config file
356+ int run = mRunNumber > 0 ? mRunNumber : mConfigFile ->get <int >(" qc.config.Activity.number" );
357+ Activity activity (run,
343358 mConfigFile ->get <int >(" qc.config.Activity.type" ));
344359 mTask ->startOfActivity (activity);
345360 mObjectsManager ->updateServiceDiscovery ();
346361}
347362
348363void TaskRunner::endOfActivity ()
349364{
350- Activity activity (mConfigFile -> get < int >( " qc.config.Activity.number " ) ,
365+ Activity activity (mRunNumber ,
351366 mConfigFile ->get <int >(" qc.config.Activity.type" ));
352367 mTask ->endOfActivity (activity);
353368 mObjectsManager ->removeAllFromServiceDiscovery ();
0 commit comments