31 if (ps.
exists(
"useEvtGenPlugin")) {
33 string evtgenpath(std::getenv(
"EVTGENDATA"));
37 if (ps.
exists(
"evtgenDecFile")) {
42 if (ps.
exists(
"evtgenPdlFile")) {
47 if (ps.
exists(
"evtgenUserFile")) {
48 std::vector<std::string> user_decays = ps.
getParameter<std::vector<std::string> >(
"evtgenUserFile");
49 for (
unsigned int i = 0;
i < user_decays.size();
i++) {
56 if (ps.
exists(
"evtgenUserFileEmbedded")) {
57 std::vector<std::string> user_decay_lines =
58 ps.
getParameter<std::vector<std::string> >(
"evtgenUserFileEmbedded");
59 char tempslhaname[] =
"pythia8evtgenXXXXXX";
60 int fd = mkstemp(tempslhaname);
62 for (
unsigned int i = 0;
i < user_decay_lines.size();
i++) {
63 user_decay_lines.at(
i) +=
"\n";
64 write(
fd, user_decay_lines.at(
i).c_str(), user_decay_lines.at(
i).size());
75 fDecayer = std::make_unique<Pythia>();
78 fMasterGen->settings.addFlag(
"BiasedTauDecayer:filter",
false);
79 fMasterGen->settings.addFlag(
"BiasedTauDecayer:eDecays",
true);
80 fMasterGen->settings.addFlag(
"BiasedTauDecayer:muDecays",
true);
83 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:filter",
false);
84 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:exclusive",
false);
85 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:eMuAsEquivalent",
false);
86 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:eMuTauAsEquivalent",
false);
87 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:allNuAsEquivalent",
false);
88 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:udscAsEquivalent",
false);
89 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:udscbAsEquivalent",
false);
90 fMasterGen->settings.addFlag(
"ResonanceDecayFilter:wzAsEquivalent",
false);
91 fMasterGen->settings.addMVec(
"ResonanceDecayFilter:mothers", std::vector<int>(),
false,
false, 0, 0);
92 fMasterGen->settings.addMVec(
"ResonanceDecayFilter:daughters", std::vector<int>(),
false,
false, 0, 0);
95 fMasterGen->settings.addFlag(
"PTFilter:filter",
false);
96 fMasterGen->settings.addMode(
"PTFilter:quarkToFilter", 5,
true,
true, 3, 6);
97 fMasterGen->settings.addParm(
"PTFilter:scaleToFilter", 0.4,
true,
true, 0.0, 10.);
98 fMasterGen->settings.addParm(
"PTFilter:quarkRapidity", 10.0,
true,
true, 0.0, 10.);
99 fMasterGen->settings.addParm(
"PTFilter:quarkPt", -.1,
true,
true, -.1, 100.);
102 fMasterGen->settings.addFlag(
"POWHEGres:calcScales",
false);
103 fMasterGen->settings.addFlag(
"POWHEG:bb4l",
false);
104 fMasterGen->settings.addFlag(
"POWHEG:bb4l:FSREmission:veto",
false);
105 fMasterGen->settings.addFlag(
"POWHEG:bb4l:FSREmission:vetoQED",
false);
106 fMasterGen->settings.addFlag(
"POWHEG:bb4l:DEBUG",
false);
107 fMasterGen->settings.addFlag(
"POWHEG:bb4l:ScaleResonance:veto",
false);
108 fMasterGen->settings.addFlag(
"POWHEG:bb4l:FSREmission:vetoDipoleFrame",
false);
109 fMasterGen->settings.addFlag(
"POWHEG:bb4l:FSREmission:pTpythiaVeto",
false);
110 fMasterGen->settings.addParm(
"POWHEG:bb4l:pTminVeto", 10.0,
true,
true, 0.0, 10.);
111 fMasterGen->settings.addFlag(
"POWHEG:bb4l:vetoAllRadtypes",
false);
116 fMasterGen->readString(
"Next:numberShowEvent = 0");
117 fDecayer->readString(
"Next:numberShowEvent = 0");
121 std::vector<edm::ParameterSet> randomizedParameters =
123 currentParameters = randomizedParameters[
randomIndex()];
131 if (
line->find(
"Random:") != std::string::npos)
132 throw cms::Exception(
"PythiaError") <<
"Attempted to set random number " 133 "using Pythia commands. Please use " 134 "the RandomNumberGeneratorService." 138 throw cms::Exception(
"PythiaError") <<
"Pythia 8 did not accept \"" << *
line <<
"\"." << std::endl;
140 if (
line->find(
"ParticleDecays:") != std::string::npos) {
142 throw cms::Exception(
"PythiaError") <<
"Pythia 8 Decayer did not accept \"" << *
line <<
"\"." << std::endl;
148 if (currentParameters.
exists(
"SLHAFileForPythia8")) {
152 fMasterGen->settings.mode(
"SLHA:readFrom", 2);
154 }
else if (currentParameters.
exists(
"SLHATableForPythia8")) {
158 }
else if (currentParameters.
exists(
"SLHATreeForPythia8")) {
160 std::unique_ptr<SLHAReaderBase>
reader =
170 char tempslhaname[] =
"pythia8SLHAtableXXXXXX";
171 int fd = mkstemp(tempslhaname);
172 write(
fd, slhatable.c_str(), slhatable.size());
177 fMasterGen->settings.mode(
"SLHA:readFrom", 2);
182 for (
size_t i = 0;
i <
pdgIds.size();
i++) {
190 std::ostringstream pyCard;
191 pyCard << PyID <<
":mayDecay=false";
193 if (
fMasterGen->particleData.isParticle(PyID)) {
197 <<
"recognize particle id = " << PyID << std::endl;
209 for (
unsigned int iss = 0; iss < settings.size(); iss++) {
210 if (settings[iss].
find(
"QED-brem-off") != std::string::npos) {
211 fMasterGen->readString(
"TimeShower:QEDshowerByL=off");
213 size_t fnd1 = settings[iss].find(
"Pythia8:");
214 if (fnd1 != std::string::npos) {
bool declareSpecialSettings(const std::vector< std::string > &)
T getParameter(std::string const &) const
virtual void statistics()
std::unique_ptr< Pythia8::Pythia > fDecayer
void makeTmpSLHA(const std::string &)
std::string fullPath() const
HepMC::IO_AsciiParticles * ascii_io
const_iterator begin() const
bool exists(std::string const ¶meterName) const
checks if a parameter exists
const_iterator end() const
bool pythiaHepMCVerbosityParticles
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< std::string > evtgenUserFiles
T getUntrackedParameter(std::string const &, T const &) const
P8RndmEngine p8RndmEngine_
unsigned int pythiaPylistVerbosity
bool declareStableParticles(const std::vector< int > &)
std::string evtgenPdlFile
unsigned int maxEventsToPrint
bool pythiaHepMCVerbosity
std::string evtgenDecFile
std::unique_ptr< Pythia8::Pythia > fMasterGen
Log< level::Warning, false > LogWarning
edm::ParameterSet fParameters