@@ -61,7 +61,7 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
6161 auto primGenO2 = dynamic_cast <PrimaryGenerator*>(primGen);
6262
6363 auto makeBoxGen = [](int pdgid, int mult, double etamin, double etamax, double pmin, double pmax, double phimin, double phimax, bool debug = false ) {
64- auto gen = new FairBoxGenerator (pdgid, mult);
64+ auto gen = std::make_unique< FairBoxGenerator> (pdgid, mult);
6565 gen->SetEtaRange (etamin, etamax);
6666 gen->SetPRange (pmin, pmax);
6767 gen->SetPhiRange (phimin, phimax);
@@ -80,7 +80,7 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
8080 .particleFilter = singleton.particleFilter ,
8181 .verbose = singleton.verbose ,
8282 };
83- auto gen = new o2::eventgen::GeneratorPythia8 (pars);
83+ auto gen = std::make_unique< o2::eventgen::GeneratorPythia8> (pars);
8484 if (!config.empty ()) {
8585 LOG (info) << " Setting \' Pythia8\' base configuration: " << config << std::endl;
8686 gen->setConfig (config); // assign config; will be executed in Init function
@@ -99,58 +99,58 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
9999 auto & boxparam = BoxGunParam::Instance ();
100100 LOG (info) << " Init generic box generator with following parameters" ;
101101 LOG (info) << boxparam;
102- auto boxGen = makeBoxGen (boxparam.pdg , boxparam.number , boxparam.eta [0 ], boxparam.eta [1 ], boxparam.prange [0 ], boxparam.prange [1 ], boxparam.phirange [0 ], boxparam.phirange [1 ], boxparam.debug );
103- primGen->AddGenerator (boxGen );
102+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (boxparam.pdg , boxparam.number , boxparam.eta [0 ], boxparam.eta [1 ], boxparam.prange [0 ], boxparam.prange [1 ], boxparam.phirange [0 ], boxparam.phirange [1 ], boxparam.debug ) );
103+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
104104 } else if (genconfig.compare (" fwmugen" ) == 0 ) {
105105 // a simple "box" generator for forward muons
106106 LOG (info) << " Init box forward muons generator" ;
107- auto boxGen = makeBoxGen (13 , 1 , -4 , -2.5 , 50 ., 50 ., 0 ., 360 );
108- primGen->AddGenerator (boxGen );
107+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (13 , 1 , -4 , -2.5 , 50 ., 50 ., 0 ., 360 ) );
108+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
109109 } else if (genconfig.compare (" hmpidgun" ) == 0 ) {
110110 // a simple "box" generator for forward muons
111111 LOG (info) << " Init hmpid gun generator" ;
112- auto boxGen = makeBoxGen (-211 , 100 , -0.5 , -0.5 , 2 , 5 , -5 , 60 );
113- primGen->AddGenerator (boxGen );
112+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (-211 , 100 , -0.5 , -0.5 , 2 , 5 , -5 , 60 ) );
113+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
114114 } else if (genconfig.compare (" fwpigen" ) == 0 ) {
115115 // a simple "box" generator for forward pions
116116 LOG (info) << " Init box forward pions generator" ;
117- auto boxGen = makeBoxGen (-211 , 10 , -4 , -2.5 , 7 , 7 , 0 , 360 );
118- primGen->AddGenerator (boxGen );
117+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (-211 , 10 , -4 , -2.5 , 7 , 7 , 0 , 360 ) );
118+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
119119 } else if (genconfig.compare (" fwrootino" ) == 0 ) {
120120 // a simple "box" generator for forward rootinos
121121 LOG (info) << " Init box forward rootinos generator" ;
122- auto boxGen = makeBoxGen (0 , 1 , -4 , -2.5 , 1 , 5 , 0 , 360 );
123- primGen->AddGenerator (boxGen );
122+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (0 , 1 , -4 , -2.5 , 1 , 5 , 0 , 360 ) );
123+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
124124 } else if (genconfig.compare (" zdcgen" ) == 0 ) {
125125 // a simple "box" generator for forward neutrons
126126 LOG (info) << " Init box forward/backward zdc generator" ;
127- auto boxGenC = makeBoxGen (2112 /* neutrons*/ , 1 , -8 , -9999 , 500 , 1000 , 0 ., 360 .);
128- auto boxGenA = makeBoxGen (2112 /* neutrons*/ , 1 , 8 , 9999 , 500 , 1000 , 0 ., 360 .);
129- primGen->AddGenerator (boxGenC );
130- primGen->AddGenerator (boxGenA );
127+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (2112 /* neutrons*/ , 1 , -8 , -9999 , 500 , 1000 , 0 ., 360 .) );
128+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (2112 /* neutrons*/ , 1 , 8 , 9999 , 500 , 1000 , 0 ., 360 .) );
129+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
130+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
131131 } else if (genconfig.compare (" emcgenele" ) == 0 ) {
132132 // box generator with one electron per event
133133 LOG (info) << " Init box generator for electrons in EMCAL" ;
134134 // using phi range of emcal
135- auto elecgen = makeBoxGen (11 , 1 , -0.67 , 0.67 , 15 , 15 , 80 , 187 );
136- primGen->AddGenerator (elecgen );
135+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (11 , 1 , -0.67 , 0.67 , 15 , 15 , 80 , 187 ) );
136+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
137137 } else if (genconfig.compare (" emcgenphoton" ) == 0 ) {
138138 LOG (info) << " Init box generator for photons in EMCAL" ;
139- auto photongen = makeBoxGen (22 , 1 , -0.67 , 0.67 , 15 , 15 , 80 , 187 );
140- primGen->AddGenerator (photongen );
139+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (22 , 1 , -0.67 , 0.67 , 15 , 15 , 80 , 187 ) );
140+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
141141 } else if (genconfig.compare (" fddgen" ) == 0 ) {
142142 LOG (info) << " Init box FDD generator" ;
143- auto boxGenFDC = makeBoxGen (13 , 1000 , -7 , -4.8 , 10 , 500 , 0 , 360 .);
144- auto boxGenFDA = makeBoxGen (13 , 1000 , 4.9 , 6.3 , 10 , 500 , 0 ., 360 );
145- primGen->AddGenerator (boxGenFDA );
146- primGen->AddGenerator (boxGenFDC );
143+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (13 , 1000 , -7 , -4.8 , 10 , 500 , 0 , 360 .) );
144+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (13 , 1000 , 4.9 , 6.3 , 10 , 500 , 0 ., 360 ) );
145+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
146+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
147147 } else if (genconfig.compare (" extkin" ) == 0 ) {
148148 // external kinematics
149149 // needs precense of a kinematics file "Kinematics.root"
150150 // TODO: make this configurable and check for presence
151- auto extGen = new o2::eventgen::GeneratorFromFile ( conf.getExtKinematicsFileName ().c_str ());
152- extGen ->SetStartEvent (conf.getStartEvent ());
153- primGen->AddGenerator (extGen );
151+ genptr< o2::eventgen::GeneratorFromFile>. push_back (std::make_unique<o2::eventgen::GeneratorFromFile>( conf.getExtKinematicsFileName ().c_str () ));
152+ genptr<o2::eventgen::GeneratorFromFile>. back () ->SetStartEvent (conf.getStartEvent ());
153+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorFromFile>. back (). get () );
154154 LOG (info) << " using external kinematics" ;
155155 } else if (genconfig.compare (" extkinO2" ) == 0 ) {
156156 // external kinematics from previous O2 output
@@ -165,9 +165,9 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
165165 .rngseed = singleton.rngseed ,
166166 .randomphi = singleton.randomphi ,
167167 .fileName = name1.size () > 0 ? name1.c_str () : name2.c_str ()};
168- auto extGen = new o2::eventgen::GeneratorFromO2Kine ( pars);
169- extGen ->SetStartEvent (conf.getStartEvent ());
170- primGen->AddGenerator (extGen );
168+ genptr< o2::eventgen::GeneratorFromO2Kine>. push_back (std::make_unique<o2::eventgen::GeneratorFromO2Kine>( pars) );
169+ genptr<o2::eventgen::GeneratorFromO2Kine>. back () ->SetStartEvent (conf.getStartEvent ());
170+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorFromO2Kine>. back (). get () );
171171 if (pars.continueMode ) {
172172 auto o2PrimGen = dynamic_cast <o2::eventgen::PrimaryGenerator*>(primGen);
173173 if (o2PrimGen) {
@@ -183,9 +183,9 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
183183 LOG (info) << " Init 'GeneratorTParticle' with the following parameters" ;
184184 LOG (info) << param0;
185185 LOG (info) << param;
186- auto tgen = new o2::eventgen::GeneratorTParticle ( );
187- tgen ->setup (param0, param, conf);
188- primGen->AddGenerator (tgen );
186+ genptr< o2::eventgen::GeneratorTParticle>. push_back (std::make_unique<o2::eventgen::GeneratorTParticle>() );
187+ genptr<o2::eventgen::GeneratorTParticle>. back () ->setup (param0, param, conf);
188+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorTParticle>. back (). get () );
189189#ifdef GENERATORS_WITH_HEPMC3
190190 } else if (genconfig.compare (" hepmc" ) == 0 ) {
191191 // external HepMC file, or external program writing HepMC event
@@ -195,9 +195,9 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
195195 LOG (info) << " Init \' GeneratorHepMC\' with following parameters" ;
196196 LOG (info) << param0;
197197 LOG (info) << param;
198- auto hepmcGen = new o2::eventgen::GeneratorHepMC ( );
199- hepmcGen ->setup (param0, param, conf);
200- primGen->AddGenerator (hepmcGen );
198+ genptr< o2::eventgen::GeneratorHepMC>. push_back (std::make_unique<o2::eventgen::GeneratorHepMC>() );
199+ genptr<o2::eventgen::GeneratorHepMC>. back () ->setup (param0, param, conf);
200+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorHepMC>. back (). get () );
201201#endif
202202#ifdef GENERATORS_WITH_PYTHIA8
203203 } else if (genconfig.compare (" alldets" ) == 0 ) {
@@ -206,37 +206,37 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
206206 // I compose it of:
207207 // 1) pythia8
208208 auto py8config = std::string (std::getenv (" O2_ROOT" )) + " /share/Generators/egconfig/pythia8_inel.cfg" ;
209- auto py8 = makePythia8Gen (py8config);
210- primGen->AddGenerator (py8 );
209+ genptr<o2::eventgen::GeneratorPythia8>. push_back ( makePythia8Gen (py8config) );
210+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorPythia8>. back (). get () );
211211 // 2) forward muons
212- auto muon = makeBoxGen (13 , 100 , -2.5 , -4.0 , 100 , 100 , 0 ., 360 );
213- primGen->AddGenerator (muon );
212+ genptr<FairBoxGenerator>. push_back ( makeBoxGen (13 , 100 , -2.5 , -4.0 , 100 , 100 , 0 ., 360 ) );
213+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
214214 } else if (genconfig.compare (" pythia8" ) == 0 ) {
215215 auto py8config = std::string ();
216- auto py8 = makePythia8Gen (py8config);
217- primGen->AddGenerator (py8 );
216+ genptr<o2::eventgen::GeneratorPythia8>. push_back ( makePythia8Gen (py8config) );
217+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorPythia8>. back (). get () );
218218 } else if (genconfig.compare (" pythia8pp" ) == 0 ) {
219219 auto py8config = std::string (std::getenv (" O2_ROOT" )) + " /share/Generators/egconfig/pythia8_inel.cfg" ;
220- auto py8 = makePythia8Gen (py8config);
221- primGen->AddGenerator (py8 );
220+ genptr<o2::eventgen::GeneratorPythia8>. push_back ( makePythia8Gen (py8config) );
221+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorPythia8>. back (). get () );
222222 } else if (genconfig.compare (" pythia8hf" ) == 0 ) {
223223 // pythia8 pp (HF production)
224224 // configures pythia for HF production in pp collisions at 14 TeV
225225 auto py8config = std::string (std::getenv (" O2_ROOT" )) + " /share/Generators/egconfig/pythia8_hf.cfg" ;
226- auto py8 = makePythia8Gen (py8config);
227- primGen->AddGenerator (py8 );
226+ genptr<o2::eventgen::GeneratorPythia8>. push_back ( makePythia8Gen (py8config) );
227+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorPythia8>. back (). get () );
228228 } else if (genconfig.compare (" pythia8hi" ) == 0 ) {
229229 // pythia8 heavy-ion
230230 // exploits pythia8 heavy-ion machinery (available from v8.230)
231231 // configures pythia for min.bias Pb-Pb collisions at 5.52 TeV
232232 auto py8config = std::string (std::getenv (" O2_ROOT" )) + " /share/Generators/egconfig/pythia8_hi.cfg" ;
233- auto py8 = makePythia8Gen (py8config);
234- primGen->AddGenerator (py8 );
233+ genptr<o2::eventgen::GeneratorPythia8>. push_back ( makePythia8Gen (py8config) );
234+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorPythia8>. back (). get () );
235235 } else if (genconfig.compare (" pythia8powheg" ) == 0 ) {
236236 // pythia8 with powheg
237237 auto py8config = std::string (std::getenv (" O2_ROOT" )) + " /share/Generators/egconfig/pythia8_powheg.cfg" ;
238- auto py8 = makePythia8Gen (py8config);
239- primGen->AddGenerator (py8 );
238+ genptr<o2::eventgen::GeneratorPythia8>. push_back ( makePythia8Gen (py8config) );
239+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorPythia8>. back (). get () );
240240#endif
241241 } else if (genconfig.compare (" external" ) == 0 || genconfig.compare (" extgen" ) == 0 ) {
242242 // external generator via configuration macro
@@ -245,21 +245,21 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
245245 LOG (info) << params;
246246 auto extgen_filename = params.fileName ;
247247 auto extgen_func = params.funcName ;
248- auto extgen = o2::conf::GetFromMacro<FairGenerator*>(extgen_filename, extgen_func, " FairGenerator*" , " extgen" );
249- if (!extgen ) {
248+ genptr<FairGenerator>. push_back (std::unique_ptr<FairGenerator>( o2::conf::GetFromMacro<FairGenerator*>(extgen_filename, extgen_func, " FairGenerator*" , " extgen" )) );
249+ if (!genptr<FairGenerator>. back () ) {
250250 LOG (fatal) << " Failed to retrieve \' extgen\' : problem with configuration " ;
251251 }
252- primGen->AddGenerator (extgen );
252+ primGen->AddGenerator (genptr<FairGenerator>. back (). get () );
253253 } else if (genconfig.compare (" toftest" ) == 0 ) { // 1 muon per sector and per module
254254 LOG (info) << " Init tof test generator -> 1 muon per sector and per module" ;
255255 for (int i = 0 ; i < 18 ; i++) {
256256 for (int j = 0 ; j < 5 ; j++) {
257- auto boxGen = new FairBoxGenerator ( 13 , 1 ); /* protons*/
258- boxGen ->SetEtaRange (-0.8 + 0.32 * j + 0.15 , -0.8 + 0.32 * j + 0.17 );
259- boxGen ->SetPRange (9 , 10 );
260- boxGen ->SetPhiRange (10 + 20 . * i - 1 , 10 + 20 . * i + 1 );
261- boxGen ->SetDebug (kTRUE );
262- primGen->AddGenerator (boxGen );
257+ genptr< FairBoxGenerator>. push_back (std::make_unique<FairBoxGenerator>( 13 , 1 ) ); /* protons*/
258+ genptr<FairBoxGenerator>. back () ->SetEtaRange (-0.8 + 0.32 * j + 0.15 , -0.8 + 0.32 * j + 0.17 );
259+ genptr<FairBoxGenerator>. back () ->SetPRange (9 , 10 );
260+ genptr<FairBoxGenerator>. back () ->SetPhiRange (10 + 20 . * i - 1 , 10 + 20 . * i + 1 );
261+ genptr<FairBoxGenerator>. back () ->SetDebug (kTRUE );
262+ primGen->AddGenerator (genptr<FairBoxGenerator>. back (). get () );
263263 }
264264 }
265265#if defined(GENERATORS_WITH_PYTHIA8) && defined(GENERATORS_WITH_HEPMC3)
@@ -277,8 +277,8 @@ void GeneratorFactory::setPrimaryGenerator(o2::conf::SimConfig const& conf, Fair
277277 LOG (fatal) << " Configuration file for hybrid generator does not exist" ;
278278 return ;
279279 }
280- auto hybrid = new o2::eventgen::GeneratorHybrid ( config);
281- primGen->AddGenerator (hybrid );
280+ genptr< o2::eventgen::GeneratorHybrid>. push_back (std::make_unique<o2::eventgen::GeneratorHybrid>( config) );
281+ primGen->AddGenerator (genptr<o2::eventgen::GeneratorHybrid>. back (). get () );
282282#endif
283283 } else {
284284 LOG (fatal) << " Invalid generator" ;
0 commit comments