Skip to content

Commit 1002ed8

Browse files
committed
Made GeneratorHybrid a singleton
1 parent 4e4c801 commit 1002ed8

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

Generators/include/Generators/GeneratorHybrid.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,11 @@ class GeneratorHybrid : public Generator
5454
{
5555

5656
public:
57-
GeneratorHybrid(const std::string& inputgens);
58-
~GeneratorHybrid();
57+
GeneratorHybrid& operator=(const GeneratorHybrid&) = delete;
58+
GeneratorHybrid(const GeneratorHybrid&) = delete;
59+
60+
// Singleton access method
61+
static GeneratorHybrid& Instance(const std::string& inputgens = "");
5962

6063
Bool_t Init() override;
6164
Bool_t generateEvent() override;
@@ -66,11 +69,13 @@ class GeneratorHybrid : public Generator
6669
Bool_t confSetter(const auto& gen);
6770
template <typename T>
6871
std::string jsonValueToString(const T& value);
69-
static std::vector<std::shared_ptr<o2::eventgen::Generator>> const& getGenerators() { return gens; }
72+
std::vector<std::shared_ptr<o2::eventgen::Generator>> const& getGenerators() { return gens; }
7073

7174
private:
75+
GeneratorHybrid(const std::string& inputgens);
76+
~GeneratorHybrid();
7277
o2::eventgen::Generator* currentgen = nullptr;
73-
static std::vector<std::shared_ptr<o2::eventgen::Generator>> gens;
78+
std::vector<std::shared_ptr<o2::eventgen::Generator>> gens;
7479
const std::vector<std::string> generatorNames = {"extkinO2", "evtpool", "boxgen", "external", "hepmc", "pythia8", "pythia8pp", "pythia8hi", "pythia8hf", "pythia8powheg"};
7580
std::vector<std::string> mInputGens;
7681
std::vector<std::string> mGens;

Generators/src/GeneratorFactory.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,8 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
284284
LOG(fatal) << "Configuration file for hybrid generator does not exist";
285285
return;
286286
}
287-
auto hybrid = new o2::eventgen::GeneratorHybrid(config);
288-
primGen->AddGenerator(hybrid);
287+
auto& hybrid = o2::eventgen::GeneratorHybrid::Instance(config);
288+
primGen->AddGenerator(&hybrid);
289289
#endif
290290
} else {
291291
LOG(fatal) << "Invalid generator";

Generators/src/GeneratorHybrid.cxx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ namespace o2
2323
namespace eventgen
2424
{
2525

26-
std::vector<std::shared_ptr<o2::eventgen::Generator>> GeneratorHybrid::gens;
26+
GeneratorHybrid& GeneratorHybrid::Instance(const std::string& inputgens)
27+
{
28+
static GeneratorHybrid instance(inputgens);
29+
return instance;
30+
}
2731

2832
GeneratorHybrid::GeneratorHybrid(const std::string& inputgens)
2933
{

0 commit comments

Comments
 (0)