Skip to content

Commit 180fd48

Browse files
authored
Make GeneratorHybrid a singleton (#14737)
* Make Generators list static * Made GeneratorHybrid a singleton
1 parent 762d51e commit 180fd48

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

Generators/include/Generators/GeneratorHybrid.h

Lines changed: 8 additions & 2 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,8 +69,11 @@ class GeneratorHybrid : public Generator
6669
Bool_t confSetter(const auto& gen);
6770
template <typename T>
6871
std::string jsonValueToString(const T& value);
72+
std::vector<std::shared_ptr<o2::eventgen::Generator>> const& getGenerators() { return gens; }
6973

7074
private:
75+
GeneratorHybrid(const std::string& inputgens);
76+
~GeneratorHybrid();
7177
o2::eventgen::Generator* currentgen = nullptr;
7278
std::vector<std::shared_ptr<o2::eventgen::Generator>> gens;
7379
const std::vector<std::string> generatorNames = {"extkinO2", "evtpool", "boxgen", "external", "hepmc", "pythia8", "pythia8pp", "pythia8hi", "pythia8hf", "pythia8powheg"};

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: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ namespace o2
2323
namespace eventgen
2424
{
2525

26+
GeneratorHybrid& GeneratorHybrid::Instance(const std::string& inputgens)
27+
{
28+
static GeneratorHybrid instance(inputgens);
29+
return instance;
30+
}
31+
2632
GeneratorHybrid::GeneratorHybrid(const std::string& inputgens)
2733
{
2834
// This generator has trivial unit conversions

0 commit comments

Comments
 (0)