@@ -150,8 +150,8 @@ class Pythia8Hadronizer : public Py8InterfaceBase {
150150 std::string LHEInputFileName;
151151 std::shared_ptr<LHAupLesHouches> lhaUP;
152152
153- enum { PP, PPbar, ElectronPositron };
154- int fInitialState ; // pp, ppbar, or e-e+
153+ enum { PP, PPbar, ElectronPositron, HeavyIons };
154+ int fInitialState ; // pp, ppbar, e-e+ or HI
155155
156156 double fBeam1PZ ;
157157 double fBeam2PZ ;
@@ -255,6 +255,15 @@ Pythia8Hadronizer::Pythia8Hadronizer(const edm::ParameterSet ¶ms)
255255 } else {
256256 // probably need to throw on attempt to override ?
257257 }
258+ } else if (params.exists (" HeavyIonInitialState" )) {
259+ if (fInitialState == PP) {
260+ fInitialState = HeavyIons;
261+ edm::LogInfo (" GeneratorInterface|Pythia8Interface" )
262+ << " Pythia8 will be initialized for HEAVY ION collisions. "
263+ << " This is a user-request change from the DEFAULT PROTON-PROTON initial state." ;
264+ } else {
265+ // probably need to throw on attempt to override ?
266+ }
258267 } else if (params.exists (" ElectronProtonInitialState" ) || params.exists (" PositronProtonInitialState" )) {
259268 // throw on unknown initial state !
260269 throw edm::Exception (edm::errors::Configuration, " Pythia8Interface" )
@@ -273,8 +282,8 @@ Pythia8Hadronizer::Pythia8Hadronizer(const edm::ParameterSet ¶ms)
273282 if (params.exists (" reweightGen" )) {
274283 edm::LogInfo (" Pythia8Interface" ) << " Start setup for reweightGen" ;
275284 edm::ParameterSet rgParams = params.getParameter <edm::ParameterSet>(" reweightGen" );
276- fReweightUserHook = std::make_shared<PtHatReweightUserHook>(
277- rgParams. getParameter < double >( " pTRef " ), rgParams.getParameter <double >(" power" ));
285+ fReweightUserHook = std::make_shared<PtHatReweightUserHook>(rgParams. getParameter < double >( " pTRef " ),
286+ rgParams.getParameter <double >(" power" ));
278287 edm::LogInfo (" Pythia8Interface" ) << " End setup for reweightGen" ;
279288 }
280289 if (params.exists (" reweightGenEmp" )) {
@@ -291,22 +300,23 @@ Pythia8Hadronizer::Pythia8Hadronizer(const edm::ParameterSet ¶ms)
291300 edm::LogInfo (" Pythia8Interface" ) << " Start setup for reweightGenRap" ;
292301 edm::ParameterSet rgrParams = params.getParameter <edm::ParameterSet>(" reweightGenRap" );
293302 fReweightRapUserHook = std::make_shared<RapReweightUserHook>(rgrParams.getParameter <std::string>(" yLabSigmaFunc" ),
294- rgrParams.getParameter <double >(" yLabPower" ),
295- rgrParams.getParameter <std::string>(" yCMSigmaFunc" ),
296- rgrParams.getParameter <double >(" yCMPower" ),
297- rgrParams.getParameter <double >(" pTHatMin" ),
298- rgrParams.getParameter <double >(" pTHatMax" ));
299- edm::LogInfo (" Pythia8Interface" ) << " End setup for reweightGenRap" ;
300- }
301- if (params.exists (" reweightGenPtHatRap" )) {
302- edm::LogInfo (" Pythia8Interface" ) << " Start setup for reweightGenPtHatRap" ;
303- edm::ParameterSet rgrParams = params.getParameter <edm::ParameterSet>(" reweightGenPtHatRap" );
304- fReweightPtHatRapUserHook = std::make_shared<PtHatRapReweightUserHook>(rgrParams.getParameter <std::string>(" yLabSigmaFunc" ),
305303 rgrParams.getParameter <double >(" yLabPower" ),
306304 rgrParams.getParameter <std::string>(" yCMSigmaFunc" ),
307305 rgrParams.getParameter <double >(" yCMPower" ),
308306 rgrParams.getParameter <double >(" pTHatMin" ),
309307 rgrParams.getParameter <double >(" pTHatMax" ));
308+ edm::LogInfo (" Pythia8Interface" ) << " End setup for reweightGenRap" ;
309+ }
310+ if (params.exists (" reweightGenPtHatRap" )) {
311+ edm::LogInfo (" Pythia8Interface" ) << " Start setup for reweightGenPtHatRap" ;
312+ edm::ParameterSet rgrParams = params.getParameter <edm::ParameterSet>(" reweightGenPtHatRap" );
313+ fReweightPtHatRapUserHook =
314+ std::make_shared<PtHatRapReweightUserHook>(rgrParams.getParameter <std::string>(" yLabSigmaFunc" ),
315+ rgrParams.getParameter <double >(" yLabPower" ),
316+ rgrParams.getParameter <std::string>(" yCMSigmaFunc" ),
317+ rgrParams.getParameter <double >(" yCMPower" ),
318+ rgrParams.getParameter <double >(" pTHatMin" ),
319+ rgrParams.getParameter <double >(" pTHatMax" ));
310320 edm::LogInfo (" Pythia8Interface" ) << " End setup for reweightGenPtHatRap" ;
311321 }
312322
@@ -360,16 +370,16 @@ Pythia8Hadronizer::Pythia8Hadronizer(const edm::ParameterSet ¶ms)
360370 if (params.exists (" EV1_nFinalMode" ))
361371 EV1_nFinalMode = params.getParameter <int >(" EV1_nFinalMode" );
362372 fEmissionVetoHook1 = std::make_shared<EmissionVetoHook1>(EV1_nFinal,
363- EV1_vetoOn,
364- EV1_maxVetoCount,
365- EV1_pThardMode,
366- EV1_pTempMode,
367- EV1_emittedMode,
368- EV1_pTdefMode,
369- EV1_MPIvetoOn,
370- EV1_QEDvetoMode,
371- EV1_nFinalMode,
372- 0 );
373+ EV1_vetoOn,
374+ EV1_maxVetoCount,
375+ EV1_pThardMode,
376+ EV1_pTempMode,
377+ EV1_emittedMode,
378+ EV1_pTdefMode,
379+ EV1_MPIvetoOn,
380+ EV1_QEDvetoMode,
381+ EV1_nFinalMode,
382+ 0 );
373383 }
374384
375385 if (params.exists (" UserCustomization" )) {
@@ -409,10 +419,12 @@ bool Pythia8Hadronizer::initializeForInternalPartons() {
409419 } else if (fInitialState == ElectronPositron) {
410420 fMasterGen ->settings .mode (" Beams:idA" , 11 );
411421 fMasterGen ->settings .mode (" Beams:idB" , -11 );
422+ } else if (fInitialState == HeavyIons) {
423+ // let user to set up the beam particles
412424 } else {
413425 // throw on unknown initial state !
414426 throw edm::Exception (edm::errors::Configuration, " Pythia8Interface" )
415- << " UNKNOWN INITIAL STATE. \n The allowed initial states are: PP, PPbar, ElectronPositron \n " ;
427+ << " UNKNOWN INITIAL STATE. \n The allowed initial states are: PP, PPbar, ElectronPositron, HeavyIons \n " ;
416428 }
417429 fMasterGen ->settings .parm (" Beams:eCM" , comEnergy);
418430 } else {
0 commit comments