Skip to content

Commit 0bd91c5

Browse files
committed
Made GeneratorHybrid a singleton
1 parent 4e4c801 commit 0bd91c5

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

Generators/include/Generators/GeneratorHybrid.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,12 @@ 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 methods
61+
static GeneratorHybrid& Instance(const std::string& inputgens = "");
62+
static GeneratorHybrid* GetInstance(const std::string& inputgens = "");
5963

6064
Bool_t Init() override;
6165
Bool_t generateEvent() override;
@@ -66,11 +70,13 @@ class GeneratorHybrid : public Generator
6670
Bool_t confSetter(const auto& gen);
6771
template <typename T>
6872
std::string jsonValueToString(const T& value);
69-
static std::vector<std::shared_ptr<o2::eventgen::Generator>> const& getGenerators() { return gens; }
73+
std::vector<std::shared_ptr<o2::eventgen::Generator>> const& getGenerators() { return gens; }
7074

7175
private:
76+
GeneratorHybrid(const std::string& inputgens);
77+
~GeneratorHybrid();
7278
o2::eventgen::Generator* currentgen = nullptr;
73-
static std::vector<std::shared_ptr<o2::eventgen::Generator>> gens;
79+
std::vector<std::shared_ptr<o2::eventgen::Generator>> gens;
7480
const std::vector<std::string> generatorNames = {"extkinO2", "evtpool", "boxgen", "external", "hepmc", "pythia8", "pythia8pp", "pythia8hi", "pythia8hf", "pythia8powheg"};
7581
std::vector<std::string> mInputGens;
7682
std::vector<std::string> mGens;

Generators/src/GeneratorFactory.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ 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);
287+
auto hybrid = o2::eventgen::GeneratorHybrid::GetInstance(config);
288288
primGen->AddGenerator(hybrid);
289289
#endif
290290
} else {

Generators/src/GeneratorHybrid.cxx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,16 @@ 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+
}
31+
32+
GeneratorHybrid* GeneratorHybrid::GetInstance(const std::string& inputgens)
33+
{
34+
return &Instance(inputgens);
35+
}
2736

2837
GeneratorHybrid::GeneratorHybrid(const std::string& inputgens)
2938
{

0 commit comments

Comments
 (0)