1919#include < CommonUtils/ConfigurableParam.h>
2020#include < CommonUtils/RngHelper.h>
2121#include < TStopwatch.h> // simple timer from ROOT
22+ #include < memory>
2223
2324using namespace o2 ::framework;
2425
@@ -35,11 +36,14 @@ struct GeneratorTask {
3536 int nEvents = 0 ;
3637 int eventCounter = 0 ;
3738 int tfCounter = 0 ;
38- o2::eventgen::GeneratorService genservice;
39+
40+ // a pointer because object should only be constructed in the device (not during DPL workflow setup)
41+ std::unique_ptr<o2::eventgen::GeneratorService> genservice;
3942 TStopwatch timer;
4043
4144 void init (o2::framework::InitContext& /* ic*/ )
4245 {
46+ genservice.reset (new o2::eventgen::GeneratorService);
4347 o2::utils::RngHelper::setGRandomSeed (seed);
4448 nEvents = eventNum;
4549 // helper to parse vertex option; returns true if parsing ok, false if failure
@@ -53,9 +57,9 @@ struct GeneratorTask {
5357 o2::conf::ConfigurableParam::updateFromString ((std::string)params);
5458 // initialize the service
5559 if (vtxmode == o2::conf::VertexMode::kDiamondParam ) {
56- genservice. initService (generator, trigger, o2::eventgen::DiamondParamVertexOption ());
60+ genservice-> initService (generator, trigger, o2::eventgen::DiamondParamVertexOption ());
5761 } else if (vtxmode == o2::conf::VertexMode::kNoVertex ) {
58- genservice. initService (generator, trigger, o2::eventgen::NoVertexOption ());
62+ genservice-> initService (generator, trigger, o2::eventgen::NoVertexOption ());
5963 } else if (vtxmode == o2::conf::VertexMode::kCCDB ) {
6064 LOG (warn) << " Not yet supported. This needs definition of a timestamp and fetching of the MeanVertex CCDB object" ;
6165 }
@@ -68,7 +72,7 @@ struct GeneratorTask {
6872 o2::dataformats::MCEventHeader mcheader;
6973 for (auto i = 0 ; i < std::min ((int )aggregate, nEvents - eventCounter); ++i) {
7074 mctracks.clear ();
71- genservice. generateEvent_MCTracks (mctracks, mcheader);
75+ genservice-> generateEvent_MCTracks (mctracks, mcheader);
7276 pc.outputs ().snapshot (Output{" MC" , " MCHEADER" , 0 }, mcheader);
7377 pc.outputs ().snapshot (Output{" MC" , " MCTRACKS" , 0 }, mctracks);
7478 ++eventCounter;
0 commit comments