Skip to content

Commit 0c5b365

Browse files
authored
Get Run Number from FairMQ options and pass it to the user (QC-272) (#468)
1 parent 90d35ea commit 0c5b365

3 files changed

Lines changed: 24 additions & 7 deletions

File tree

Framework/include/QualityControl/TaskRunner.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <Framework/CompletionPolicy.h>
2525
#include <Framework/EndOfStreamContext.h>
2626
#include <Headers/DataHeader.h>
27+
#include <Framework/InitContext.h>
2728
// QC
2829
#include "QualityControl/TaskConfig.h"
2930
#include "QualityControl/TaskInterface.h"
@@ -102,7 +103,7 @@ class TaskRunner : public framework::Task
102103

103104
private:
104105
/// \brief Callback for CallbackService::Id::Start (DPL) a.k.a. RUN transition (FairMQ)
105-
void start();
106+
void start(const framework::ConfigParamRegistry& options);
106107
/// \brief Callback for CallbackService::Id::Stop (DPL) a.k.a. STOP transition (FairMQ)
107108
void stop();
108109
/// \brief Callback for CallbackService::Id::Reset (DPL) a.k.a. RESET DEVICE transition (FairMQ)
@@ -125,6 +126,7 @@ class TaskRunner : public framework::Task
125126
std::shared_ptr<TaskInterface> mTask;
126127
bool mResetAfterPublish = false;
127128
std::shared_ptr<ObjectsManager> mObjectsManager;
129+
int mRunNumber;
128130

129131
std::string validateDetectorName(std::string name);
130132

Framework/src/TaskRunner.cxx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4345
using namespace std;
4446

@@ -56,6 +58,7 @@ using namespace AliceO2::Common;
5658

5759
TaskRunner::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

227239
void TaskRunner::reset()
228240
{
229241
mTask.reset();
230242
mCollector.reset();
231243
mObjectsManager.reset();
244+
mRunNumber = 0;
232245
}
233246

234247
std::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

348363
void 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();

Modules/Skeleton/src/SkeletonTask.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ void SkeletonTask::initialize(o2::framework::InitContext& /*ctx*/)
5050
}
5151
}
5252

53-
void SkeletonTask::startOfActivity(Activity& /*activity*/)
53+
void SkeletonTask::startOfActivity(Activity& activity)
5454
{
55-
ILOG(Info) << "startOfActivity" << ENDM;
55+
ILOG(Info) << "startOfActivity : " << activity.mId << ENDM;
5656
mHistogram->Reset();
5757
}
5858

0 commit comments

Comments
 (0)