10 #include "HepPID/ParticleIDTranslations.hh"
12 #include "HepMC/GenEvent.h"
13 #include "HepMC/PdfInfo.h"
14 #include "HepMC/HEPEVT_Wrapper.h"
15 #include "HepMC/IO_HEPEVT.h"
38 #define pydat1 pydat1_
46 #define pypars pypars_
52 #define pyint1 pyint1_
60 #define pylist pylist_
61 #define pycomp pycomp_
62 #define pygive pygive_
67 int numWarn =
pydat1.mstu[26];
68 int numErr =
pydat1.mstu[22];
70 pygive(line.c_str(), line.length());
72 return (
pydat1.mstu[26] == numWarn)&&(
pydat1.mstu[22] == numErr);
79 comEnergy_(pset.getParameter<double>(
"comEnergy")),
81 hepMCVerbosity_(pset.getUntrackedParameter<bool>(
"pythiaHepMCVerbosity",
false)),
82 maxEventsToPrint_(pset.getUntrackedParameter<int>(
"maxEventsToPrint", 0)),
83 pythiaListVerbosity_(pset.getUntrackedParameter<int>(
"pythiaPylistVerbosity", 0))
87 if ( pset.
exists(
"doPDGConvert" ) )
110 pdf.set_id1(
pyint1.mint[14] == 21 ? 0 :
pyint1.mint[14] );
111 pdf.set_id2(
pyint1.mint[15] == 21 ? 0 :
pyint1.mint[15] );
112 pdf.set_x1(
pyint1.vint[40] );
113 pdf.set_x2(
pyint1.vint[41] );
116 pdf.set_scalePDF(
pyint1.vint[50] );
118 event()->set_pdf_info( pdf ) ;
124 for ( HepMC::GenEvent::particle_iterator
part =
event()->particles_begin();
126 (*part)->set_pdg_id(HepPID::translatePythiatoPDT((*part)->pdg_id()));
139 <<
"----------------------" << std::endl;
191 std::string processType = processPSet.
getParameter<std::string>(
"ProcessType");
193 if(processType ==
"Higgs"){
195 int higgsDecay = processPSet.
getParameter<
int>(
"HiggsDecay");
197 sigID = 100 + higgsDecay;
198 }
else if(processType ==
"QQ"){
200 int quarkType = processPSet.
getParameter<
int>(
"QuarkType");
201 double thetaMin = processPSet.
getParameter<
double>(
"ThetaMin");
204 sigID = 200 + quarkType;
205 }
else if(processType ==
"GG"){
207 double thetaMin = processPSet.
getParameter<
double>(
"ThetaMin");
210 }
else if(processType ==
"DiPhoton"){
212 double thetaMin = processPSet.
getParameter<
double>(
"ThetaMin");
224 double massRangeLow = processPSet.
getParameter<
double>(
"MassRangeLow");
225 double massRangeHigh = processPSet.
getParameter<
double>(
"MassRangeHigh");
236 for (
size_t i=0;
i < pdg.size();
i++ )
239 std::ostringstream pyCard ;
240 pyCard <<
"MDCY(" << pyCode <<
",1)=0";
256 std::ostringstream footer_str;
262 footer_str <<
"\n" <<
" You have just been ExHuMEd." <<
"\n" <<
"\n";
263 footer_str <<
" The cross section for process " << name
264 <<
" is " << cs <<
" fb" <<
"\n" <<
"\n";
265 footer_str <<
" The efficiency of event generation was " << eff <<
"%" <<
"\n" <<
"\n";
269 if ( !
runInfo().internalXSec() )
279 return "gen::ExhumeHadronizer";
bool initializeForExternalPartons()
T getParameter(std::string const &) const
bool generatePartonsAndHadronize()
Exhume::Event * exhumeEvent_
double CrossSectionCalculation()
ExhumeHadronizer(edm::ParameterSet const &ps)
static HepMC::IO_HEPEVT conv
bool call_pygive(const std::string &line)
bool exists(std::string const ¶meterName) const
checks if a parameter exists
bool initializeForInternalPartons()
void setInternalXSec(const XSec &xsec)
void pygive_(const char *, int)
std::auto_ptr< HepMC::GenEvent > & event()
unsigned int maxEventsToPrint_
bool declareSpecialSettings(const std::vector< std::string >)
CLHEP::HepRandomEngine & getEngineReference()
GenRunInfoProduct & runInfo()
void call_pylist(int mode)
void SetMassRange(const double &Min_, const double &Max_)
unsigned int pythiaListVerbosity_
Pythia6Service * pythia6Service_
const char * classname() const
static FortranCallback * getInstance()
edm::ParameterSet myPSet_
void resetIterationsPerEvent()
Exhume::CrossSection * exhumeProcess_
CLHEP::HepRandomEngine * randomEngine_
bool declareStableParticles(const std::vector< int >)