File tree Expand file tree Collapse file tree 4 files changed +27
-3
lines changed
Expand file tree Collapse file tree 4 files changed +27
-3
lines changed Original file line number Diff line number Diff line change 1818#include " TParticle.h"
1919#include < vector>
2020#include < Generators/BoxGunParam.h>
21+ #include " SimulationDataFormat/MCEventHeader.h"
2122
2223namespace o2 ::eventgen
2324{
@@ -92,6 +93,14 @@ class BoxGenerator : public Generator
9293 return true ;
9394 }
9495
96+ void updateHeader (o2::dataformats::MCEventHeader* eventHeader) override
97+ {
98+ using Key = o2::dataformats::MCInfoKeys;
99+ if (eventHeader) {
100+ eventHeader->putInfo <std::string>(Key::generator, " o2::eventgen::BoxGenerator" );
101+ }
102+ }
103+
95104 private:
96105 double mPtMin {0 .}, mPtMax {0 .}; // Transverse momentum range [GeV]
97106 double mPhiMin {0 .}, mPhiMax {360 .}; // Azimuth angle range [degree]
Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ class Generator : public FairGenerator
7373 /* * methods to override **/
7474 virtual Bool_t generateEvent () = 0; // generates event (in structure internal to generator)
7575 virtual Bool_t importParticles () = 0; // fills the mParticles vector (transfer from generator state)
76+ virtual void updateHeader (o2::dataformats::MCEventHeader* eventHeader) {};
7677
7778 /* * setters **/
7879 void setMomentumUnit (double val) { mMomentumUnit = val; };
@@ -102,9 +103,6 @@ class Generator : public FairGenerator
102103 /* * operator= **/
103104 Generator& operator =(const Generator&);
104105
105- /* * methods that can be overridded **/
106- virtual void updateHeader (o2::dataformats::MCEventHeader* eventHeader){};
107-
108106 /* * internal methods **/
109107 Bool_t addTracks (FairPrimaryGenerator* primGen);
110108 Bool_t boostEvent ();
Original file line number Diff line number Diff line change @@ -61,6 +61,7 @@ class GeneratorHybrid : public Generator
6161 Bool_t Init () override ;
6262 Bool_t generateEvent () override ;
6363 Bool_t importParticles () override ;
64+ void updateHeader (o2::dataformats::MCEventHeader* eventHeader) override ;
6465
6566 void setNEvents (int n) { mNEvents = n; }
6667
@@ -106,6 +107,7 @@ class GeneratorHybrid : public Generator
106107 bool mIsInitialized = false ;
107108
108109 int mNEvents = -1 ; // the number of events to be done, if known (helps initiating cleanup)
110+ o2::dataformats::MCEventHeader mMCEventHeader ; // to capture event headers
109111
110112 enum class GenMode {
111113 kSeq ,
Original file line number Diff line number Diff line change @@ -334,6 +334,10 @@ bool GeneratorHybrid::importParticles()
334334 // at this moment the mIndex-th generator is ready to be used
335335 std::copy (gens[genIndex]->getParticles ().begin (), gens[genIndex]->getParticles ().end (), std::back_insert_iterator (mParticles ));
336336
337+ // fetch the event Header information from the underlying generator
338+ mMCEventHeader .clearInfo ();
339+ gens[genIndex]->updateHeader (&mMCEventHeader );
340+
337341 mInputTaskQueue .push (genIndex);
338342 mTasksStarted ++;
339343
@@ -353,6 +357,17 @@ bool GeneratorHybrid::importParticles()
353357 return true ;
354358}
355359
360+ void GeneratorHybrid::updateHeader (o2::dataformats::MCEventHeader* eventHeader)
361+ {
362+ if (eventHeader) {
363+ // we forward the original header information if any
364+ eventHeader->copyInfoFrom (mMCEventHeader );
365+
366+ // put additional information about
367+ eventHeader->putInfo <std::string>(" forwarding-generator" , " HybridGen" );
368+ }
369+ }
370+
356371template <typename T>
357372std::string GeneratorHybrid::jsonValueToString (const T& value)
358373{
You can’t perform that action at this time.
0 commit comments