Skip to content

Commit ecb1375

Browse files
committed
Improvements for generating events from O2 kine file
* optionally allow round-robin * be able to give file name via config key params
1 parent 736f443 commit ecb1375

4 files changed

Lines changed: 12 additions & 2 deletions

File tree

Generators/include/Generators/GeneratorFromFile.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ class GeneratorFromO2Kine : public o2::eventgen::Generator
9292
int mEventsAvailable = 0;
9393
bool mSkipNonTrackable = true; //! whether to pass non-trackable (decayed particles) to the MC stack
9494
bool mContinueMode = false; //! whether we want to continue simulation of previously inhibited tracks
95-
ClassDefOverride(GeneratorFromO2Kine, 1);
95+
bool mRoundRobin = false; //! whether we want to take events from file in a round robin fashion
96+
ClassDefOverride(GeneratorFromO2Kine, 2);
9697
};
9798

9899
} // end namespace eventgen

Generators/include/Generators/GeneratorFromO2KineParam.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ namespace eventgen
3131
struct GeneratorFromO2KineParam : public o2::conf::ConfigurableParamHelper<GeneratorFromO2KineParam> {
3232
bool skipNonTrackable = true;
3333
bool continueMode = false;
34+
bool roundRobin = false; // read events with period boundary conditions
35+
std::string fileName = ""; // filename to read from - takes precedence over SimConfig if given
3436
O2ParamDef(GeneratorFromO2KineParam, "GeneratorFromO2Kine");
3537
};
3638

Generators/src/GeneratorFactory.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
149149
LOG(info) << "using external kinematics";
150150
} else if (genconfig.compare("extkinO2") == 0) {
151151
// external kinematics from previous O2 output
152-
auto extGen = new o2::eventgen::GeneratorFromO2Kine(conf.getExtKinematicsFileName().c_str());
152+
auto name1 = GeneratorFromO2KineParam::Instance().fileName;
153+
auto name2 = conf.getExtKinematicsFileName();
154+
auto extGen = new o2::eventgen::GeneratorFromO2Kine(name1.size() > 0 ? name1.c_str() : name2.c_str());
153155
extGen->SetStartEvent(conf.getStartEvent());
154156
primGen->AddGenerator(extGen);
155157
if (GeneratorFromO2KineParam::Instance().continueMode) {

Generators/src/GeneratorFromFile.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ bool GeneratorFromO2Kine::Init()
196196
LOG(info) << param;
197197
mSkipNonTrackable = param.skipNonTrackable;
198198
mContinueMode = param.continueMode;
199+
mRoundRobin = param.roundRobin;
199200

200201
return true;
201202
}
@@ -259,6 +260,10 @@ bool GeneratorFromO2Kine::importParticles()
259260
particlecounter++;
260261
}
261262
mEventCounter++;
263+
if (mRoundRobin) {
264+
LOG(info) << "Resetting event counter to 0; Reusing events from file";
265+
mEventCounter = mEventCounter % mEventsAvailable;
266+
}
262267

263268
if (tracks) {
264269
delete tracks;

0 commit comments

Comments
 (0)