Skip to content

Commit 8222c00

Browse files
committed
HybridGen: Add missing EventHeader propagation
The HybridGen needs to forward event headers from the underlying generators. In order to access these, we need to make a protected function public. Also adding eventHeader treatment to BoxGenerator.
1 parent 3d1e798 commit 8222c00

File tree

4 files changed

+27
-3
lines changed

4 files changed

+27
-3
lines changed

Generators/include/Generators/BoxGenerator.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "TParticle.h"
1919
#include <vector>
2020
#include <Generators/BoxGunParam.h>
21+
#include "SimulationDataFormat/MCEventHeader.h"
2122

2223
namespace 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]

Generators/include/Generators/Generator.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff 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();

Generators/include/Generators/GeneratorHybrid.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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,

Generators/src/GeneratorHybrid.cxx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
356371
template <typename T>
357372
std::string GeneratorHybrid::jsonValueToString(const T& value)
358373
{

0 commit comments

Comments
 (0)