Skip to content

Commit fe0eacb

Browse files
authored
Merge pull request #48414 from michael-pitt/AddHeavyIonPythia_master
adds Heavy Ion initialization to Pythia
2 parents de85c89 + 5f124f5 commit fe0eacb

File tree

1 file changed

+38
-26
lines changed

1 file changed

+38
-26
lines changed

GeneratorInterface/Pythia8Interface/plugins/Pythia8Hadronizer.cc

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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 &params)
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 &params)
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 &params)
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 &params)
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

Comments
 (0)