Page MenuHomeHEPForge

No OneTemporary

Index: trunk/src/FPythia/FPythia.cc
===================================================================
--- trunk/src/FPythia/FPythia.cc (revision 773)
+++ trunk/src/FPythia/FPythia.cc (revision 774)
@@ -1,251 +1,251 @@
// -*- C++ -*-
#include "AGILe/FPythia/FPythia.hh"
#include "AGILe/FPythia/FPythiaWrapper62.hh"
#include "AGILe/Utils.hh"
#include "AGILe/HepMCTools.hh"
#include "HepMC/HEPEVT_Wrapper.h"
namespace AGILe {
// Author: Andy Buckley
/// Standard constructor
FPythia::FPythia() {
/// Pythia uses HEPEVT with 4000/10000 entries and 8-byte floats
FC_PYJETS.n = 0; //< Ensure dummyness of the next call
call_pyhepc(1);
HepMC::HEPEVT_Wrapper::set_max_number_entries(FC_PYDAT1.mstu[8-1]);
//HepMC::HEPEVT_Wrapper::set_max_number_entries(10000);
HepMC::HEPEVT_Wrapper::set_sizeof_real(8);
// Start counting events at 1.
_nevt = 1;
// Initialize Pythia PYDATA block data as external
FC_INITPYDATA();
// Write the full shower structure
setParam("MSTP(125)", 2);
// Tell Pythia not to write multiple copies of particles in event record.
setParam("MSTP(128)", 2);
// Set up particle names map
/// @todo Also deal with gamma/e- etc. for resolved photoproduction...
_particleNames[ELECTRON] = "e-";
_particleNames[POSITRON] = "e+";
_particleNames[PROTON] = "p+";
_particleNames[ANTIPROTON] = "pbar-";
_particleNames[NEUTRON] = "n0";
_particleNames[ANTINEUTRON] = "nbar0";
_particleNames[PHOTON] = "gamma";
_particleNames[MUON] = "mu-";
_particleNames[ANTIMUON] = "mu+";
// TAU, ANTITAU
_particleNames[NU_E] = "nu_e";
_particleNames[NU_EBAR] = "nu_ebar";
_particleNames[NU_MU] = "nu_mu";
_particleNames[NU_MUBAR] = "nu_mubar";
_particleNames[NU_TAU] = "nu_tau";
_particleNames[NU_TAUBAR] = "nu_taubar";
_particleNames[PIPLUS] = "pi+";
_particleNames[PIMINUS] = "pi-";
// PIZERO
// PHOTOELECTRON, PHOTOPOSITRON,
// PHOTOMUON, PHOTOANTIMUON,
// PHOTOTAU, PHOTOANTITAU,
/// For Pythia, other "normal" particles are:
/// * gamma/e-, gamma/e+, gamma/mu-, gamma/mu+, gamma/tau-, gamma/tau+, pi0
/// Also, with crappy PDF parameterisations and other defects:
/// * K+, K-, KS0, KL0, Lambda0, Sigma-, Sigma0, Sigma+, Xi-, Xi0, Omega
/// And, not useable at the moment:
/// * pomeron, reggeon
}
void FPythia::setGenSpecificInitialState(PdgCode p1, double e1, PdgCode p2, double e2) {
- getLog() << Log::INFO << "Setting initial state..." << endl;
+ MSG_INFO("Setting initial state...");
// For Pythia, we have to hold on to this state until initialize() is called.
_particleName1 = _particleNames[p1];
_particleName2 = _particleNames[p2];
/// @todo Get momenta and energies unconfused.
_e1 = e1;
_e2 = e2;
}
/// Set up default params etc.
void FPythia::initialize() {
Generator::initialize();
// Call pythia initialization with stored parameters as set by setGenSpecificInitialState()
if (FC_PYPARS.mstp[142] != 1) {
if (fuzzyEquals(_e1, _e2)) {
call_pyinit("CMS", _particleName1.c_str(), _particleName2.c_str(), _e1+_e2);
} else {
stringstream p13cmd, p23cmd;
p13cmd << "P(1,3) = " << _e1;
p23cmd << "P(2,3) = " << -_e2;
call_pygive("P(1,1) = 0.0");
call_pygive("P(1,2) = 0.0");
call_pygive(p13cmd.str().c_str());
call_pygive("P(2,1) = 0.0");
call_pygive("P(2,2) = 0.0");
call_pygive(p23cmd.str().c_str());
call_pyinit("3MOM", _particleName1.c_str(), _particleName2.c_str(), 0.0);
}
} else {
// User process, parameters taken from LHAPDF initialisation file.
call_pyinit("USER"," "," ", 0.0);
}
_initialized = true;
}
// Set a parameter with a string value
bool FPythia::setParam(const string& name, const string& value) {
Generator::setParam(name, value);
const string pygive_input(toUpper(name) + "=" + value);
call_pygive(pygive_input.c_str());
return SUCCESS;
}
// Run the generator for one event
void FPythia::makeEvent(HepMC::GenEvent& evt) {
Generator::makeEvent(evt);
/// @todo Allow control of choice of underlying event and shower evolutions via "meta-params".
// Generate one event.
call_pyevnt();
// Generate one event with new UE and shower.
//call_pyevnw();
// Convert common PYJETS into common HEPEVT.
call_pyhepc(1);
// Increment an event counter (Pythia does not count for itself).
_nevt++;
// fill the event using HepMC
fillEvent(evt);
evt.set_event_number(_nevt);
}
// Fill a HepMC event
void FPythia::fillEvent(HepMC::GenEvent& evt) {
_hepevt.fill_next_event(&evt);
fixHepMCUnitsFromGeVmm(evt);
-
+
evt.weights().clear();
-
- if(FC_PYPARS.mstp[141]!=0){
+
+ if (FC_PYPARS.mstp[141] != 0) {
evt.weights().push_back(FC_PYPARS.pari[9]);
- }else{
+ } else {
evt.weights().push_back(1.0);
}
-
+
#ifdef HEPMC_HAS_CROSS_SECTION
HepMC::GenCrossSection xsec;
const double xsecval = getCrossSection();
const double xsecerr = getCrossSection() / std::sqrt(FC_PYPARS.msti[4]);
- getLog() << Log::DEBUG << "Writing cross-section = " << xsecval << " +- " << xsecerr << endl;
+ MSG_DEBUG("Writing cross-section = " << xsecval << " +- " << xsecerr);
xsec.set_cross_section(xsecval, xsecerr);
evt.set_cross_section(xsec);
#endif
}
string FPythia::getPDFSet(PdgCode pid) {
switch(pid) {
case PROTON:
case ANTIPROTON:
if (FC_PYPARS.mstp[51] == 1) {
return "PYINTERNAL";
} else if(FC_PYPARS.mstp[51] == 2) {
return "PYLHAPDF";
}
break;
case ELECTRON:
case POSITRON:
if (FC_PYPARS.mstp[55] == 1) {
return "PYINTERNAL";
} else if(FC_PYPARS.mstp[55] == 2) {
return "PYLHAPDF";
}
break;
default:
break;
}
- throw runtime_error("Unknown particle for PDF Set");
+ throw runtime_error("Unknown particle for PDF set");
}
int FPythia::getPDFMember(PdgCode pid) {
switch(pid) {
case PROTON:
case ANTIPROTON:
return FC_PYPARS.mstp[50];
break;
case ELECTRON:
case POSITRON:
return FC_PYPARS.mstp[54];
break;
default:
break;
}
- throw runtime_error("Unknown particle for PDF Set");
+ throw runtime_error("Unknown particle for PDF set");
}
string FPythia::getPDFScheme(PdgCode pid) const {
switch(pid){
case PROTON:
case ANTIPROTON:
if (FC_PYPARS.mstp[51]==1) {
return "PYINTERNAL";
} else if(FC_PYPARS.mstp[51]==2) {
return "LHAPDF";
}
break;
case ELECTRON:
case POSITRON:
if (FC_PYPARS.mstp[55]==1) {
return "PYINTERNAL";
} else if(FC_PYPARS.mstp[55]==2) {
return "LHAPDF";
}
break;
default:
break;
}
- throw runtime_error("Unknown particle for PDF Set");
+ throw runtime_error("Unknown particle for PDF set");
}
const double FPythia::getCrossSection(){
// _crossSection = FC_PYINT5.xsec[2][0] * 1e09;
_crossSection = FC_PYPARS.pari[0] * 1e09;
return _crossSection;
}
const string FPythia::getVersion(){
stringstream s;
s << FC_PYPARS.mstp[180] << "." << FC_PYPARS.mstp[181];
return s.str();
}
// Tidy up after ourselves
void FPythia::finalize() {
- getLog() << Log::INFO << "Finalising..." << endl;
+ MSG_DEBUG("Finalising...");
// Print out stats from run
call_pystat(1);
}
}
extern "C" {
AGILe::Generator* create() { return new AGILe::FPythia(); }
void destroy(AGILe::Generator* gen) { delete gen; }
}
Index: trunk/src/FHerwig/FHerwig.cc
===================================================================
--- trunk/src/FHerwig/FHerwig.cc (revision 773)
+++ trunk/src/FHerwig/FHerwig.cc (revision 774)
@@ -1,597 +1,596 @@
// -*- C++ -*-
#include "AGILe/FHerwig/FHerwig.hh"
#include "AGILe/FHerwig/FHerwigWrapper65.hh"
#include "AGILe/Utils.hh"
#include "AGILe/HepMCTools.hh"
namespace AGILe {
// Standard constructor
FHerwig::FHerwig() : _doHadronise(true), _unitWeight(true){
/// Herwig 6.5 uses HEPEVT with 4000/10000 entries and 8-byte floats
HepMC::HEPEVT_Wrapper::set_max_number_entries(FC_HWGETHEPEVTSIZE());
HepMC::HEPEVT_Wrapper::set_sizeof_real(8);
// Set up particle names map: note that they must be 8 characters long
_particleNames[ELECTRON] = "E- ";
_particleNames[POSITRON] = "E+ ";
_particleNames[PROTON] = "P ";
_particleNames[ANTIPROTON] = "PBAR ";
_particleNames[NEUTRON] = "N ";
_particleNames[ANTINEUTRON] = "NBAR ";
_particleNames[PHOTON] = "GAMMA ";
_particleNames[MUON] = "MU- ";
_particleNames[ANTIMUON] = "MU+ ";
// TAU, ANTITAU
_particleNames[NU_E] = "NU_E ";
_particleNames[NU_EBAR] = "NU_EBAR ";
_particleNames[NU_MU] = "NU_MU ";
_particleNames[NU_MUBAR] = "NU_MUBAR";
_particleNames[NU_TAU] = "NU_TAU ";
_particleNames[NU_TAUBAR] = "NU_TAUBR";
_particleNames[PIPLUS] = "PI+ ";
_particleNames[PIMINUS] = "PI- ";
// PIZERO
// PHOTOELECTRON, PHOTOPOSITRON,
// PHOTOMUON, PHOTOANTIMUON,
// PHOTOTAU, PHOTOANTITAU,
// Initialize and set default parameters (no echoing)
FC_HWIGIN(); // Print banner and initialise common blocks
FC_HWPROC.IPROC = 1500; // Use QCD 2->2 as the default process
FC_HWPROC.MAXEV = 10000000; // Maximum number of events (irrelevant!)
FC_HWEVNT.MAXER = 10000000; // Maximum number of allowed errors
FC_HWPRAM.PRNDEF = 0; // Enable/disable ASCII output
FC_HWEVNT.MAXPR = 0; // Number of events to print
FC_HWPRAM.IPRINT = 1; // Type of info to print
// Start counting events at 1.
_nevt = 1;
}
// Set up initial state from supplied params
void FHerwig::setGenSpecificInitialState(int p1, double e1, int p2, double e2) {
- getLog() << Log::INFO << "Setting initial state..." << endl;
+ MSG_INFO("Setting initial state...");
// Herwig's initial state particles specification must be 8 chars long
for ( unsigned int i = 0; i < 8; ++i ) {
FC_HWBMCH.PART1[i] = _particleNames[ParticleName(p1)].c_str()[i];
FC_HWBMCH.PART2[i] = _particleNames[ParticleName(p2)].c_str()[i];
}
// Set momenta / energies
setParam("PBEAM1", e1); /// @todo Get momenta and energies unconfused?
setParam("PBEAM2", e2); /// @todo Store a list of particle masses for this?
// NB. Beam ordering is significant (segfault if "wrong") for HERA initial state
}
// Run generator initialization
void FHerwig::initialize() {
Generator::initialize();
// Compute parameter-dependent constants
FC_HWUINC();
// Initialise elementary process
FC_HWEINI();
_initialized = true;
}
// Set random number seed
void FHerwig::setSeed(const int value) {
Generator::setSeed(value);
FC_HWEVNT.NRN[0] = value;
const int nextSeed = value + SEED_OFFSET;
FC_HWEVNT.NRN[1] = nextSeed;
Generator::setSeed(nextSeed);
}
// Set parameters.
bool FHerwig::setParam(const string& name, const string& value) {
Generator::setParam(name, value);
// Strings
//std::cout << "****" << name << "****" << std::endl;
if (name.find("AUTPDF") != string::npos) {
if (name == "AUTPDF(1)" || name == "AUTPDF") {
- getLog() << Log::INFO << "Setting AUTPDF(1) = " << value << endl;
+ MSG_INFO("Setting AUTPDF(1) = " << value);
int nch = (value.size() < AUTPDF_LENGTH) ? value.size() : AUTPDF_LENGTH-1;
for(int i = 0; i < AUTPDF_LENGTH; i++) {
if(i < nch) {
FC_HWPRCH.AUTPDF[0][i] = value.data()[i];
} else {
FC_HWPRCH.AUTPDF[0][i] = ' ';
}
}
}
if (name == "AUTPDF(2)" || name == "AUTPDF") {
- getLog() << Log::INFO << "Setting AUTPDF(2) = " << value << endl;
+ MSG_INFO("Setting AUTPDF(2) = " << value);
int nch = (value.size() < AUTPDF_LENGTH) ? value.size() : AUTPDF_LENGTH-1;
for(int i = 0; i < AUTPDF_LENGTH; i++) {
if(i < nch) {
FC_HWPRCH.AUTPDF[1][i] = value.data()[i];
} else {
FC_HWPRCH.AUTPDF[1][i] = ' ';
}
}
}
} else //...
// Integers
if (name == "IPROC") {
// 1610 = gg -> H -> WW; 1706 = qq -> ttbar; 2510 = ttH -> ttWW, ...
- getLog() << Log::INFO << "Setting process code (IPROC) = " << asInt(value) << endl;
+ MSG_INFO("Setting process code (IPROC) = " << asInt(value));
FC_HWPROC.IPROC = asInt(value);
//} else if (name == "MAXEV") {
- //getLog() << Log::INFO << "Setting maximum number of events (MAXEV) = " << asInt(value) << endl;
+ //MSG_INFO("Setting maximum number of events (MAXEV) = " << asInt(value));
//FC_HWPROC.MAXEV = asInt(value);
} else if (name == "MAXPR") {
- getLog() << Log::INFO << "Setting max event printouts (MAXPR) = " << asInt(value) << endl;
+ MSG_INFO("Setting max event printouts (MAXPR) = " << asInt(value));
FC_HWEVNT.MAXPR = asInt(value);
} else if (name == "IPRINT") {
- getLog() << Log::INFO << "Setting printout info code (IPRINT) = " << asInt(value) << endl;
+ MSG_INFO("Setting printout info code (IPRINT) = " << asInt(value));
FC_HWPRAM.IPRINT = asInt(value);
} else if (name == "CLDIR1") {
- getLog() << Log::INFO << "Setting smearing of perturbative quark pT in light cluster fission (CLDIR(1)) = " << asInt(value) << endl;
+ MSG_INFO("Setting smearing of perturbative quark pT in light cluster fission (CLDIR(1)) = " << asInt(value));
FC_HWPRAM.CLDIR[0] = asInt(value);
} else if (name == "CLDIR2") {
- getLog() << Log::INFO << "Setting smearing of perturbative quark pT in b cluster fission (CLDIR(2)) = " << asInt(value) << endl;
+ MSG_INFO("Setting smearing of perturbative quark pT in b cluster fission (CLDIR(2)) = " << asInt(value));
FC_HWPRAM.CLDIR[1] = asInt(value);
} else if (name == "IOPREM") {
- getLog() << Log::INFO << "Setting model for treatment of remnant clusters (IOPREM) = " << asInt(value) << endl;
+ MSG_INFO("Setting model for treatment of remnant clusters (IOPREM) = " << asInt(value));
FC_HWPRAM.IOPREM = asInt(value);
} else if (name == "ISPAC") {
- getLog() << Log::INFO << "Setting ISR forced branching IR behaviour (ISPAC) = " << asInt(value) << endl;
+ MSG_INFO("Setting ISR forced branching IR behaviour (ISPAC) = " << asInt(value));
FC_HWPRAM.ISPAC = asInt(value);
} else if (name == "NFLAV") {
- getLog() << Log::INFO << "Setting number of flavours (NFLAV) = " << asInt(value) << endl;
+ MSG_INFO("Setting number of flavours (NFLAV) = " << asInt(value));
FC_HWPRAM.NFLAV = asInt(value);
} else if (name == "NSTRU") {
- getLog() << Log::INFO << "Setting internal PDF ID... are you sure? (NSTRU) = " << asInt(value) << endl;
+ MSG_INFO("Setting internal PDF ID... are you sure? (NSTRU) = " << asInt(value));
FC_HWPRAM.NSTRU = asInt(value);
} else if (name == "MODPDF") {
- getLog() << Log::INFO << "Setting PDFLIB IDs for both beams (MODPDF(1&2)) = " << asInt(value) << endl;
+ MSG_INFO("Setting PDFLIB IDs for both beams (MODPDF(1&2)) = " << asInt(value));
FC_HWPRAM.MODPDF[0] = asInt(value);
FC_HWPRAM.MODPDF[1] = asInt(value);
} else if (name == "MODPDF(1)") {
- getLog() << Log::INFO << "Setting PDFLIB ID for beam 1 (MODPDF(1)) = " << asInt(value) << endl;
+ MSG_INFO("Setting PDFLIB ID for beam 1 (MODPDF(1)) = " << asInt(value));
FC_HWPRAM.MODPDF[0] = asInt(value);
} else if (name == "MODPDF(2)") {
- getLog() << Log::INFO << "Setting PDFLIB ID for beam 2 (MODPDF(2)) = " << asInt(value) << endl;
+ MSG_INFO("Setting PDFLIB ID for beam 2 (MODPDF(2)) = " << asInt(value));
FC_HWPRAM.MODPDF[1] = asInt(value);
} else if (name == "IFLMAX") {
- getLog() << Log::INFO << "Setting max quark flavour in photoproduction (IFLMAX) = " << asInt(value) << endl;
+ MSG_INFO("Setting max quark flavour in photoproduction (IFLMAX) = " << asInt(value));
FC_HWHARD.IFLMAX = asInt(value);
} else if (name == "LRSUD") {
- getLog() << Log::INFO << "Setting unit for reading Sudakov table (LRSUD) = " << asInt(value) << endl;
+ MSG_INFO("Setting unit for reading Sudakov table (LRSUD) = " << asInt(value));
FC_HWPRAM.LRSUD = asInt(value);
} else if (name == "LWSUD") {
- getLog() << Log::INFO << "Setting unit for writing Sudakov table (LWSUD) = " << asInt(value) << endl;
+ MSG_INFO("Setting unit for writing Sudakov table (LWSUD) = " << asInt(value));
FC_HWPRAM.LWSUD = asInt(value);
// } else if (name == "MODBOS") {
- // getLog() << Log::INFO << "Setting MODBOS = " << asInt(value) << endl;
+ // MSG_INFO("Setting MODBOS = " << asInt(value));
// FC_HWBOSC.MODBOS[0] = asInt(value);
} //...
// Doubles
else if (name == "PBEAM1") {
- getLog() << Log::INFO << "Setting beam 1 momentum (PBEAM1) = " << asDouble(value) << endl;
+ MSG_INFO("Setting beam 1 momentum (PBEAM1) = " << asDouble(value));
FC_HWPROC.PBEAM1 = asDouble(value);
} else if (name == "PBEAM2") {
- getLog() << Log::INFO << "Setting beam 2 momentum (PBEAM2) = " << asDouble(value) << endl;
+ MSG_INFO("Setting beam 2 momentum (PBEAM2) = " << asDouble(value));
FC_HWPROC.PBEAM2 = asDouble(value);
} else if (name == "EBEAM1") {
- getLog() << Log::INFO << "Setting beam 1 energy (EBEAM1) = " << asDouble(value) << endl;
+ MSG_INFO("Setting beam 1 energy (EBEAM1) = " << asDouble(value));
FC_HWPROC.EBEAM1 = asDouble(value);
} else if (name == "EBEAM2") {
- getLog() << Log::INFO << "Setting beam 2 energy (EBEAM2) = " << asDouble(value) << endl;
+ MSG_INFO("Setting beam 2 energy (EBEAM2) = " << asDouble(value));
FC_HWPROC.EBEAM2 = asDouble(value);
} else if (name == "ALPHEM") {
- getLog() << Log::INFO << "Setting alpha_EM (ALPHEM) = " << asDouble(value) << endl;
+ MSG_INFO("Setting alpha_EM (ALPHEM) = " << asDouble(value));
FC_HWPRAM.ALPHEM = asDouble(value);
} else if (name == "PTMIN") {
- getLog() << Log::INFO << "Setting minimum hard pt (PTMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum hard pt (PTMIN) = " << asDouble(value));
FC_HWHARD.PTMIN = asDouble(value);
} else if (name == "PTMAX") {
- getLog() << Log::INFO << "Setting maximum hard pt (PTMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum hard pt (PTMAX) = " << asDouble(value));
FC_HWHARD.PTMAX = asDouble(value);
} else if (name == "PTPOW") {
- getLog() << Log::INFO << "Setting power for reweight (PTPOW) = " << asDouble(value) << endl;
+ MSG_INFO("Setting power for reweight (PTPOW) = " << asDouble(value));
FC_HWHARD.PTPOW = asDouble(value);
} else if (name == "Q2WWMN") {
- getLog() << Log::INFO << "Setting minimum Q2 in equivalent photon approximation (Q2WWMN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum Q2 in equivalent photon approximation (Q2WWMN) = " << asDouble(value));
FC_HWHARD.Q2WWMN = asDouble(value);
} else if (name == "Q2WWMX") {
- getLog() << Log::INFO << "Setting maximum Q2 in equivalent photon approximation (Q2WWMX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum Q2 in equivalent photon approximation (Q2WWMX) = " << asDouble(value));
FC_HWHARD.Q2WWMX = asDouble(value);
} else if (name == "YWWMIN") {
- getLog() << Log::INFO << "Setting minimum photon light-cone fraction in equivalent photon approximation (YWWMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum photon light-cone fraction in equivalent photon approximation (YWWMIN) = " << asDouble(value));
FC_HWHARD.YWWMIN = asDouble(value);
} else if (name == "YWWMAX") {
- getLog() << Log::INFO << "Setting maximum photon light-cone fraction in equivalent photon approximation (YWWMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum photon light-cone fraction in equivalent photon approximation (YWWMAX) = " << asDouble(value));
FC_HWHARD.YWWMAX = asDouble(value);
} else if ( name =="WHMIN") {
- getLog() << Log::INFO << "Setting min hadronic mass in photon-induced (DIS) processes (WHMIN) = " << asDouble(value)<<endl;
+ MSG_INFO("Setting min hadronic mass in photon-induced (DIS) processes (WHMIN) = " << asDouble(value));
FC_HWHARD.WHMIN = asDouble(value);
} else if ( name =="EMMIN") {
- getLog() << Log::INFO << "Setting minimum DY boson mass (EMMIN) = "<< asDouble(value) << endl;
+ MSG_INFO("Setting minimum DY boson mass (EMMIN) = "<< asDouble(value));
FC_HWHARD.EMMIN = asDouble(value);
} else if ( name =="EMMAX") {
- getLog() << Log::INFO << "Setting maximum DY boson mass (EMMIN) = "<< asDouble(value) << endl;
+ MSG_INFO("Setting maximum DY boson mass (EMMIN) = "<< asDouble(value));
FC_HWHARD.EMMAX = asDouble(value);
} else if ( name =="EMPOW") {
- getLog() << Log::INFO << "Setting power for EM reweighting (EMPOW) = "<< asDouble(value) << endl;
+ MSG_INFO("Setting power for EM reweighting (EMPOW) = "<< asDouble(value));
FC_HWHARD.EMPOW = asDouble(value);
} else if ( name =="EMSCA") {
- getLog() << Log::INFO << "Setting ??? for EM (EMSCA) = "<< asDouble(value) << endl;
+ MSG_INFO("Setting ??? for EM (EMSCA) = "<< asDouble(value));
FC_HWHARD.EMSCA = asDouble(value);
} else if (name == "PRECO") {
- getLog() << Log::INFO << "Setting probability of cluster colour reassignment (PRECO) = " << asDouble(value) << endl;
+ MSG_INFO("Setting probability of cluster colour reassignment (PRECO) = " << asDouble(value));
FC_HWUCLU.PRECO = asDouble(value);
} else if (name == "PDFX0") {
- getLog() << Log::INFO << "Setting maximum x for saturation effects (PDFX0) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum x for saturation effects (PDFX0) = " << asDouble(value));
FC_HW6506.PDFX0 = asDouble(value);
} else if (name == "PDFPOW") {
- getLog() << Log::INFO << "Setting suppression of PDFs below x0 (PDFPOW) = " << asDouble(value) << endl;
+ MSG_INFO("Setting suppression of PDFs below x0 (PDFPOW) = " << asDouble(value));
FC_HW6506.PDFPOW = asDouble(value);
} else if (name == "BTCLM") {
- getLog() << Log::INFO << "Setting remnant cluster mass param adjustment (BTCLM) = " << asDouble(value) << endl;
+ MSG_INFO("Setting remnant cluster mass param adjustment (BTCLM) = " << asDouble(value));
FC_HWPRAM.BTCLM = asDouble(value);
} else if (name == "CLMAX") {
- getLog() << Log::INFO << "Setting cluster mass offset (CLMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting cluster mass offset (CLMAX) = " << asDouble(value));
FC_HWPRAM.CLMAX = asDouble(value);
} else if (name == "CLPOW") {
- getLog() << Log::INFO << "Setting exponent of cluster fission (CLPOW) = " << asDouble(value) << endl;
+ MSG_INFO("Setting exponent of cluster fission (CLPOW) = " << asDouble(value));
FC_HWPRAM.CLPOW = asDouble(value);
} else if (name == "CLSMR1") {
- getLog() << Log::INFO << "Setting Gaussian quark pT smearing width for light clusters (CLSMR(1)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Gaussian quark pT smearing width for light clusters (CLSMR(1)) = " << asDouble(value));
FC_HWPRAM.CLSMR[0] = asDouble(value);
} else if (name == "CLSMR2") {
- getLog() << Log::INFO << "Setting Gaussian quark pT smearing width for b clusters (CLSMR(2)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Gaussian quark pT smearing width for b clusters (CLSMR(2)) = " << asDouble(value));
FC_HWPRAM.CLSMR[1] = asDouble(value);
} else if (name == "PRSOF") {
- getLog() << Log::INFO << "Setting probablility of soft scatters (PRSOF) = " << asDouble(value) << endl;
+ MSG_INFO("Setting probablility of soft scatters (PRSOF) = " << asDouble(value));
FC_HWPRAM.PRSOF = asDouble(value);
} else if (name == "PSPLT1") {
- getLog() << Log::INFO << "Setting cluster mass spectrum exponent for light clusters (PSPLT(1)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting cluster mass spectrum exponent for light clusters (PSPLT(1)) = " << asDouble(value));
FC_HWPRAM.PSPLT[0] = asDouble(value);
} else if (name == "PSPLT2") {
- getLog() << Log::INFO << "Setting cluster mass spectrum exponent for b clusters (PSPLT(2)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting cluster mass spectrum exponent for b clusters (PSPLT(2)) = " << asDouble(value));
FC_HWPRAM.PSPLT[1] = asDouble(value);
}
// Following params are useful for MPI/ISR tunes:
else if (name == "PTRMS") {
- getLog() << Log::INFO << "Setting intrinsic kT (PTRMS) = " << asDouble(value) << endl;
+ MSG_INFO("Setting intrinsic kT (PTRMS) = " << asDouble(value));
FC_HWPRAM.PTRMS = asDouble(value);
} else if (name == "QCDLAM") {
- getLog() << Log::INFO << "Setting Lambda_QCD for alpha_s running (QCDLAM) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Lambda_QCD for alpha_s running (QCDLAM) = " << asDouble(value));
FC_HWPRAM.QCDLAM = asDouble(value);
} else if (name == "QSPAC") {
- getLog() << Log::INFO << "Setting Q cutoff for spacelike (ISR) shower (QSPAC) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Q cutoff for spacelike (ISR) shower (QSPAC) = " << asDouble(value));
FC_HWPRAM.QSPAC = asDouble(value);
} else if (name == "VGCUT") {
- getLog() << Log::INFO << "Setting gluon virtuality cutoff in parton showers (VGCUT) = " << asDouble(value) << endl;
+ MSG_INFO("Setting gluon virtuality cutoff in parton showers (VGCUT) = " << asDouble(value));
FC_HWPRAM.VGCUT = asDouble(value);
} else if (name == "VQCUT") {
- getLog() << Log::INFO << "Setting quark virtuality cutoff in parton showers (VQCUT) = " << asDouble(value) << endl;
+ MSG_INFO("Setting quark virtuality cutoff in parton showers (VQCUT) = " << asDouble(value));
FC_HWPRAM.VQCUT = asDouble(value);
} else if (name == "ZMXISR") {
- getLog() << Log::INFO << "Setting max. momentum fraction for photon ISR (ZMXISR) = " << asDouble(value) << endl;
+ MSG_INFO("Setting max. momentum fraction for photon ISR (ZMXISR) = " << asDouble(value));
FC_HWHARD.ZMXISR = asDouble(value);
}
// End MPI/ISR tune params
else if (name == "VPCUT") {
- getLog() << Log::INFO << "Setting photon virtuality cutoff (VPCUT) = " << asDouble(value) << endl;
+ MSG_INFO("Setting photon virtuality cutoff (VPCUT) = " << asDouble(value));
FC_HWPRAM.VPCUT = asDouble(value);
} else if (name == "OMEGA0") {
- getLog() << Log::INFO << "Setting omega_0 param in Mueller-Tang pomeron for IPROC=2400 (OMEGA0) = " << asDouble(value) << endl;
+ MSG_INFO("Setting omega_0 param in Mueller-Tang pomeron for IPROC=2400 (OMEGA0) = " << asDouble(value));
FC_HWHARD.OMEGA0 = asDouble(value);
} else if (name == "ASFIXD") {
- getLog() << Log::INFO << "Setting a_s param in Mueller-Tang pomeron for IPROC=2400 (ASFIXD) = " << asDouble(value) << endl;
+ MSG_INFO("Setting a_s param in Mueller-Tang pomeron for IPROC=2400 (ASFIXD) = " << asDouble(value));
FC_HWHARD.ASFIXD = asDouble(value);
} else if (name == "Q2MIN") {
- getLog() << Log::INFO << "Setting minimum DIS Q2 (Q2MIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum DIS Q2 (Q2MIN) = " << asDouble(value));
FC_HWHARD.Q2MIN = asDouble(value);
} else if (name == "Q2MAX") {
- getLog() << Log::INFO << "Setting maximum DIS Q2 (Q2MAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum DIS Q2 (Q2MAX) = " << asDouble(value));
FC_HWHARD.Q2MAX = asDouble(value);
} else if (name == "Q2POW") {
- getLog() << Log::INFO << "Setting reweighting power in DIS Q2 (Q2POW) = " << asDouble(value) << endl;
+ MSG_INFO("Setting reweighting power in DIS Q2 (Q2POW) = " << asDouble(value));
FC_HWHARD.Q2POW = asDouble(value);
} else if (name == "Q2WWMN") {
- getLog() << Log::INFO << "Setting Q2WWMN (Q2WWMN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Q2WWMN (Q2WWMN) = " << asDouble(value));
FC_HWHARD.Q2WWMN = asDouble(value);
} else if (name == "Q2WWMX") {
- getLog() << Log::INFO << "Setting Q2WWMX (Q2WWMX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Q2WWMX (Q2WWMX) = " << asDouble(value));
FC_HWHARD.Q2WWMX = asDouble(value);
} else if (name == "QLIM") {
- getLog() << Log::INFO << "Setting QLIM (QLIM) = " << asDouble(value) << endl;
+ MSG_INFO("Setting QLIM (QLIM) = " << asDouble(value));
FC_HWHARD.QLIM = asDouble(value);
} else if (name == "YBMIN") {
- getLog() << Log::INFO << "Setting minimum Bjorken y=Q2/xs (YBMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum Bjorken y=Q2/xs (YBMIN) = " << asDouble(value));
FC_HWHARD.YBMIN = asDouble(value);
} else if (name == "YBMAX") {
- getLog() << Log::INFO << "Setting maximum Bjorken y=Q2/xs (YBMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum Bjorken y=Q2/xs (YBMAX) = " << asDouble(value));
FC_HWHARD.YBMAX = asDouble(value);
} else if (name == "YJMIN") {
- getLog() << Log::INFO << "Setting minimum ??? (YJMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum ??? (YJMIN) = " << asDouble(value));
FC_HWHARD.YJMIN = asDouble(value);
} else if (name == "YJMAX") {
- getLog() << Log::INFO << "Setting maximum ??? (YJMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum ??? (YJMAX) = " << asDouble(value));
FC_HWHARD.YJMAX = asDouble(value);
} else if (name == "YWWMIN") {
- getLog() << Log::INFO << "Setting minimum ??? (YWWMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum ??? (YWWMIN) = " << asDouble(value));
FC_HWHARD.YWWMIN = asDouble(value);
} else if (name == "YWWMAX") {
- getLog() << Log::INFO << "Setting maximum ??? (YWWMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum ??? (YWWMAX) = " << asDouble(value));
FC_HWHARD.YWWMAX = asDouble(value);
} else if (name == "XX1") {
- getLog() << Log::INFO << "Setting ??? (XX(1)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting ??? (XX(1)) = " << asDouble(value));
FC_HWHARD.XX[0] = asDouble(value);
} else if (name == "XX2") {
- getLog() << Log::INFO << "Setting ??? (XX(2)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting ??? (XX(2)) = " << asDouble(value));
FC_HWHARD.XX[1] = asDouble(value);
} else if (name == "XLMIN") {
- getLog() << Log::INFO << "Setting minimum ??? (XLMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum ??? (XLMIN) = " << asDouble(value));
FC_HWHARD.XLMIN = asDouble(value);
} else if (name == "XXMIN") {
- getLog() << Log::INFO << "Setting minimum ??? (XXMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum ??? (XXMIN) = " << asDouble(value));
FC_HWHARD.XXMIN = asDouble(value);
} else if (name == "WHMIN") {
- getLog() << Log::INFO << "Setting minimum ??? (WHMIN) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum ??? (WHMIN) = " << asDouble(value));
FC_HWHARD.WHMIN = asDouble(value);
} else if (name == "ZJMAX") {
- getLog() << Log::INFO << "Setting maximum ??? (ZJMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum ??? (ZJMAX) = " << asDouble(value));
FC_HWHARD.ZJMAX = asDouble(value);
} else if (name == "TMNISR") {
- getLog() << Log::INFO << "Setting minimum ??? (TMNISR) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum ??? (TMNISR) = " << asDouble(value));
FC_HWHARD.TMNISR = asDouble(value);
} else if (name == "ZMXISR") {
- getLog() << Log::INFO << "Setting maximum ??? in ISR (ZMXISR) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum ??? in ISR (ZMXISR) = " << asDouble(value));
FC_HWHARD.ZMXISR = asDouble(value);
} else if (name == "THMAX") {
- getLog() << Log::INFO << "Setting maximum ??? (THMAX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting maximum ??? (THMAX) = " << asDouble(value));
FC_HWHARD.THMAX = asDouble(value);
} else if (name == "Y4JT") {
- getLog() << Log::INFO << "Setting ??? (Y4JT) = " << asDouble(value) << endl;
+ MSG_INFO("Setting ??? (Y4JT) = " << asDouble(value));
FC_HWHARD.Y4JT = asDouble(value);
} else if (name == "SINS") {
- getLog() << Log::INFO << "Setting ??? (SINS) = " << asDouble(value) << endl;
+ MSG_INFO("Setting ??? (SINS) = " << asDouble(value));
FC_HWHARD.SINS = asDouble(value);
} else if (name == "PLTCUT") {
- getLog() << Log::INFO << "Setting lifetime cut (PLTCUT) = " << asDouble(value) << endl;
+ MSG_INFO("Setting lifetime cut (PLTCUT) = " << asDouble(value));
FC_HWDIST.PLTCUT = asDouble(value);
} else if (name == "GAMW") {
- getLog() << Log::INFO << "Setting W width (GAMW) = " << asDouble(value) << endl;
+ MSG_INFO("Setting W width (GAMW) = " << asDouble(value));
FC_HWPRAM.GAMW = asDouble(value);
} else if (name == "GAMZ") {
- getLog() << Log::INFO << "Setting Z0 width (GAMZ) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Z0 width (GAMZ) = " << asDouble(value));
FC_HWPRAM.GAMZ = asDouble(value);
} else if (name == "GAMZP") {
- getLog() << Log::INFO << "Setting Z0/gamma width (GAMZP) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Z0/gamma width (GAMZP) = " << asDouble(value));
FC_HWPRAM.GAMZP = asDouble(value);
} else if (name == "H1MIX") {
/// @todo Add meaning of param (Higgs mixing angle?)
- getLog() << Log::INFO << "Setting H1MIX (H1MIX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting H1MIX (H1MIX) = " << asDouble(value));
FC_HWPRAM.H1MIX = asDouble(value);
} else if (name == "PHIMIX") {
/// @todo Add meaning of param (??? mixing angle?)
- getLog() << Log::INFO << "Setting PHIMIX (PHIMIX) = " << asDouble(value) << endl;
+ MSG_INFO("Setting PHIMIX (PHIMIX) = " << asDouble(value));
FC_HWPRAM.PHIMIX = asDouble(value);
}
// NB. The -1 C-Fortran array offset does not apply for RMASS, which is declared as (0:NMXRES).
else if (name == "RMASS(1)") {
- getLog() << Log::INFO << "Setting down mass (RMASS(1)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting down mass (RMASS(1)) = " << asDouble(value));
FC_HWPROP.RMASS[1] = asDouble(value);
} else if (name == "RMASS(2)") {
- getLog() << Log::INFO << "Setting up mass (RMASS(2)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting up mass (RMASS(2)) = " << asDouble(value));
FC_HWPROP.RMASS[2] = asDouble(value);
} else if (name == "RMASS(3)") {
- getLog() << Log::INFO << "Setting strange mass (RMASS(3)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting strange mass (RMASS(3)) = " << asDouble(value));
FC_HWPROP.RMASS[3] = asDouble(value);
} else if (name == "RMASS(4)") {
- getLog() << Log::INFO << "Setting charm mass (RMASS(4)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting charm mass (RMASS(4)) = " << asDouble(value));
FC_HWPROP.RMASS[4] = asDouble(value);
} else if (name == "RMASS(5)") {
- getLog() << Log::INFO << "Setting bottom mass (RMASS(5)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting bottom mass (RMASS(5)) = " << asDouble(value));
FC_HWPROP.RMASS[5] = asDouble(value);
} else if (name == "RMASS(6)") {
- getLog() << Log::INFO << "Setting top mass (RMASS(6)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting top mass (RMASS(6)) = " << asDouble(value));
FC_HWPROP.RMASS[6] = asDouble(value);
} else if (name == "RMASS(198)") {
- getLog() << Log::INFO << "Setting W+ mass (RMASS(198)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting W+ mass (RMASS(198)) = " << asDouble(value));
FC_HWPROP.RMASS[198] = asDouble(value);
} else if (name == "RMASS(199)") {
- getLog() << Log::INFO << "Setting W- mass (RMASS(199)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting W- mass (RMASS(199)) = " << asDouble(value));
FC_HWPROP.RMASS[199] = asDouble(value);
} else if (name == "RMASS(200)") {
- getLog() << Log::INFO << "Setting Z0 mass (RMASS(200)) = " << asDouble(value) << endl;
+ MSG_INFO("Setting Z0 mass (RMASS(200)) = " << asDouble(value));
FC_HWPROP.RMASS[200] = asDouble(value);
} //...
// Booleans (done as ints in Fortran)
else if (name == "GENSOF") {
- getLog() << Log::INFO << "Setting ... (GENSOF) = " << asInt(value) << endl;
+ MSG_INFO("Setting ... (GENSOF) = " << asInt(value));
FC_HWEVNT.GENSOF = asInt(value);
} else if (name == "AZSOFT") {
- getLog() << Log::INFO << "Setting use of soft gluon azimuthal corellations on/off (AZSOFT) = " << asInt(value) << endl;
+ MSG_INFO("Setting use of soft gluon azimuthal corellations on/off (AZSOFT) = " << asInt(value));
FC_HWPRAM.AZSOFT = asInt(value);
} else if (name == "CLRECO") {
- getLog() << Log::INFO << "Setting inclusion of colour rearrangement on/off (CLRECO) = " << asInt(value) << endl;
+ MSG_INFO("Setting inclusion of colour rearrangement on/off (CLRECO) = " << asInt(value));
FC_HWUCLU.CLRECO = asInt(value);
} else if (name == "AZSPIN") {
- getLog() << Log::INFO << "Setting use of gloun spin azimuthal correlations on/off (AZSPIN) = " << asInt(value) << endl;
+ MSG_INFO("Setting use of gloun spin azimuthal correlations on/off (AZSPIN) = " << asInt(value));
FC_HWPRAM.AZSPIN = asInt(value);
} else if (name == "ZPRIME") {
- getLog() << Log::INFO << "Setting Z' flag (ZPRIME) = " << asInt(value) << endl;
+ MSG_INFO("Setting Z' flag (ZPRIME) = " << asInt(value));
FC_HWPRAM.ZPRIME = asInt(value);
} else if (name == "HARDME") {
- getLog() << Log::INFO << "Setting hard matrix element flag (HARDME) = " << asInt(value) << endl;
+ MSG_INFO("Setting hard matrix element flag (HARDME) = " << asInt(value));
FC_HWPRAM.HARDME = asInt(value);
} else if (name == "SOFTME") {
- getLog() << Log::INFO << "Setting soft matrix element flag (SOFTME) = " << asInt(value) << endl;
+ MSG_INFO("Setting soft matrix element flag (SOFTME) = " << asInt(value));
FC_HWPRAM.SOFTME = asInt(value);
} else if (name == "NOSPAC") {
- getLog() << Log::INFO << "Setting spacelike showers on/off (NOSPAC) = " << asInt(value) << endl;
+ MSG_INFO("Setting spacelike showers on/off (NOSPAC) = " << asInt(value));
FC_HWPRAM.NOSPAC = asInt(value);
} else if (name == "PRVTX") {
- getLog() << Log::INFO << "Setting inclusion of vertex info in event printout on/off (PRVTX) = " << asInt(value) << endl;
+ MSG_INFO("Setting inclusion of vertex info in event printout on/off (PRVTX) = " << asInt(value));
FC_HWPRAM.PRVTX = asInt(value);
} else if (name == "PRNDEC") {
- getLog() << Log::INFO << "Setting use of decimal in event printout (PRNDEC) = " << asInt(value) << endl;
+ MSG_INFO("Setting use of decimal in event printout (PRNDEC) = " << asInt(value));
FC_HWPRAM.PRNDEC = asInt(value);
} else if (name == "PRNDEF") {
- getLog() << Log::INFO << "Setting stdout printout on/off (PRNDEF) = " << asInt(value) << endl;
+ MSG_INFO("Setting stdout printout on/off (PRNDEF) = " << asInt(value));
FC_HWPRAM.PRNDEF = asInt(value);
} else if (name == "PRNTEX") {
- getLog() << Log::INFO << "Setting LaTeX output on/off (PRNTEX) = " << asInt(value) << endl;
+ MSG_INFO("Setting LaTeX output on/off (PRNTEX) = " << asInt(value));
FC_HWPRAM.PRNTEX = asInt(value);
} else if (name == "PRNWEB") {
- getLog() << Log::INFO << "Setting HTML output on/off (PRNWEB) = " << asInt(value) << endl;
+ MSG_INFO("Setting HTML output on/off (PRNWEB) = " << asInt(value));
FC_HWPRAM.PRNWEB = asInt(value);
} else if (name == "MIXING") {
- getLog() << Log::INFO << "Setting neutral B mixing on/off (MIXING) = " << asInt(value) << endl;
+ MSG_INFO("Setting neutral B mixing on/off (MIXING) = " << asInt(value));
FC_HWDIST.MIXING = asInt(value);
} else if (name == "NOWGT") {
- getLog() << Log::INFO << "Setting unweighted generation (NOWGT) = " << asInt(value) << endl;
+ MSG_INFO("Setting unweighted generation (NOWGT) = " << asInt(value));
FC_HWEVNT.NOWGT = asInt(value);
- } else if (name == "DoHadronisation"){
- getLog() << Log::INFO << "Do Hadronisation = "<<value<<endl;
+ } else if (name == "DoHadronisation") {
+ MSG_INFO("Do hadronisation = " << value);
_doHadronise = asBool(value);//...
-
- }else if(name == "unitWeight"){
- getLog() << Log::INFO << "Using a weight value of 1 in unweighted events = "<<value<<endl;
+ } else if (name == "unitWeight") {
+ MSG_INFO("Using a weight value of 1 in unweighted events = " << value);
_unitWeight = asBool(value);
- // Error
- }else {
- getLog() << Log::ERROR << "Herwig doesn't have a parameter called " << name << endl;
+ // Error
+ } else {
+ MSG_ERROR("Herwig doesn't have a parameter called " << name);
return FAILURE;
}
return SUCCESS;
}
// Run the generator for one event
void FHerwig::makeEvent(HepMC::GenEvent& evt) {
// Loop until event works
while (true) {
Generator::makeEvent(evt);
FC_HWUINE(); // Initialize event
FC_HWEPRO(); // Generate hard subprocess
FC_HWBGEN(); // Generate parton cascade
FC_HWDHOB(); // Do heavy quark decays
if(_doHadronise){
FC_HWCFOR(); // Do cluster formation
FC_HWCDEC(); // Do cluster decays
FC_HWDHAD(); // Do unstable particle decays
FC_HWDHVY(); // Do heavy flavor decays
}
FC_HWMEVT(); // Add soft underlying event
FC_HWUFNE(); // Finish event
if (FC_HWEVNT.IERROR == 0) break;
}
// Fill event from HEPEVT
fillEvent(evt);
// Increment an event counter (Pythia does not count for itself).
_nevt++;
}
/// Fill a HepMC event
void FHerwig::fillEvent(HepMC::GenEvent& evt) {
HepMC::IO_HERWIG hepevt;
hepevt.fill_next_event(&evt);
fixHepMCUnitsFromGeVmm(evt);
evt.set_event_number(_nevt);
//IO_HERWIG::fillEvent does not fill the weight
evt.weights().clear();
if(FC_HWEVNT.NOWGT == 0 || !_unitWeight){
evt.weights().push_back(FC_HWEVNT.EVWGT);
}else{
evt.weights().push_back(1.0);
}
#ifdef HEPMC_HAS_CROSS_SECTION
HepMC::GenCrossSection xsec;
const double xsecval = getCrossSection();
const double xsecerr = getCrossSection() / std::sqrt(_nevt);
- getLog() << Log::DEBUG << "Writing cross-section = " << xsecval << " +- " << xsecerr << endl;
+ MSG_DEBUG("Writing cross-section = " << xsecval << " +- " << xsecerr);
xsec.set_cross_section(xsecval, xsecerr);
evt.set_cross_section(xsec);
#endif
}
/// Return the beam number (0 or 1) of a particle.
/// Return -1 if not a beam particle
int FHerwig::beamNumber(PdgCode pid){
string pName = _particleNames[pid];
string beamName = "";
for (int i = 0; i < 8; ++i) {
beamName += FC_HWBMCH.PART1[i];
}
if (beamName.compare(pName) == 0) return 0;
for (int i = 0; i < 8; ++i) {
beamName += FC_HWBMCH.PART2[i];
}
if (beamName.compare(pName) == 0) return 1;
return -1;
}
string FHerwig::getPDFSet(PdgCode pid){
const int beamNum = beamNumber(pid);
if (beamNum < 0) {
throw runtime_error("PDFSet unknown for PDG code " + pid);
}
string autString = "";
for (int ii = 0; ii != AUTPDF_LENGTH; ++ii){
autString += FC_HWPRCH.AUTPDF[beamNum][ii];
}
return autString;
}
int FHerwig::getPDFMember(PdgCode pid){
const int beamNum = beamNumber(pid);
if (beamNum < 0) {
throw runtime_error("PDFMember unknown for PDG code "+ pid);
}
const int member = FC_HWPRAM.MODPDF[beamNum];
return member;
}
string FHerwig::getPDFScheme(PdgCode pid)const{
return "LHAPDF";
}
const double FHerwig::getCrossSection(){
// _crossSection = FC_HWEVNT.AVWGT * 1000.0;
_crossSection = 1000.0 * FC_HWEVNT.WGTSUM / ((float)FC_HWEVNT.NWGTS);
return _crossSection;
}
/// Tidy up, print out run stats, etc.
void FHerwig::finalize() {
- getLog() << Log::INFO << "Finalising..." << endl;
+ MSG_DEBUG("Finalising...");
FC_HWEFIN();
}
}
// Class factory
extern "C" {
AGILe::Generator* create() { return new AGILe::FHerwig(); }
void destroy(AGILe::Generator* gen) { delete gen; }
}
Index: trunk/src/FHerwig/FHerwigJimmy.cc
===================================================================
--- trunk/src/FHerwig/FHerwigJimmy.cc (revision 773)
+++ trunk/src/FHerwig/FHerwigJimmy.cc (revision 774)
@@ -1,149 +1,149 @@
// -*- C++ -*-
#include "AGILe/FHerwig/FHerwigJimmy.hh"
#include "AGILe/FHerwig/FHerwig.hh"
#include "AGILe/FHerwig/FHerwigWrapper65.hh"
#include "AGILe/FHerwig/JimmyWrapper.hh"
#include "AGILe/Utils.hh"
namespace AGILe {
// Standard constructor
FHerwigJimmy::FHerwigJimmy() {
// NB. FHerwig constructor gets automatically called first.
FC_JMPARM.JMBUG = 0;
// Initialise Jimmy common blocks.
FC_JIMMIN();
}
// Run generator initialization
void FHerwigJimmy::initialize() {
FHerwig::initialize();
// Initialise Jimmy.
if (FC_JMPARM.MSFLAG == 1) {
FC_JMINIT();
}
_initialized = true;
}
// Set parameters.
bool FHerwigJimmy::setParam(const string& name, const string& value) {
Generator::setParam(name, value);
// Integers.
if (name == "JMUEO") {
- getLog() << Log::INFO << "Setting JMUEO = " << asInt(value) << endl;
+ MSG_INFO("Setting JMUEO = " << asInt(value));
FC_JMPARM.JMUEO = asInt(value);
} else if (name == "JMBUG") {
- getLog() << Log::INFO << "Setting JMBUG = " << asInt(value) << endl;
+ MSG_INFO("Setting JMBUG = " << asInt(value));
FC_JMPARM.JMBUG = asInt(value);
} else if (name == "MSFLAG") {
- getLog() << Log::INFO << "Setting MSFLAG = " << asInt(value) << endl;
+ MSG_INFO("Setting MSFLAG = " << asInt(value));
FC_JMPARM.MSFLAG = asInt(value);
}
// Doubles.
else if (name == "PTJIM") {
- getLog() << Log::INFO << "Setting minimum PT for secondary scatters (PTJIM) = " << asDouble(value) << endl;
+ MSG_INFO("Setting minimum PT for secondary scatters (PTJIM) = " << asDouble(value));
FC_JMPARM.PTJIM = asDouble(value);
} else if (name == "PHAD") {
- getLog() << Log::INFO << "Setting hadronic photon inverse probability (PHAD) = " << asDouble(value) << endl;
+ MSG_INFO("Setting hadronic photon inverse probability (PHAD) = " << asDouble(value));
FC_JMPARM.PHAD = asDouble(value);
} else if (name == "PRRAD") {
- getLog() << Log::INFO << "Setting 1/(Proton radius)2 (PRRAD) = " << asDouble(value) << endl;
+ MSG_INFO("Setting 1/(Proton radius)2 (PRRAD) = " << asDouble(value));
FC_JMPARM.JMRAD[72] = asDouble(value);
FC_JMPARM.JMRAD[74] = asDouble(value);
FC_JMPARM.JMRAD[90] = asDouble(value);
FC_JMPARM.JMRAD[92] = asDouble(value);
} else if (name == "PHRAD") {
- getLog() << Log::INFO << "Setting 1/(Photon radius)2 (PRRAD) = " << asDouble(value) << endl;
+ MSG_INFO("Setting 1/(Photon radius)2 (PRRAD) = " << asDouble(value));
FC_JMPARM.JMRAD[58] = asDouble(value);
FC_JMPARM.JMRAD[120] = asDouble(value);
FC_JMPARM.JMRAD[126] = asDouble(value);
}
// Boolean (as int).
else if (name == "ANOMOFF") {
- getLog() << Log::INFO << "Setting MI in anomalous photon events (ANOMOFF) = " << asInt(value) << endl;
+ MSG_INFO("Setting MI in anomalous photon events (ANOMOFF) = " << asInt(value));
FC_JMPARM.ANOMOFF = asInt(value);
}
// Fall back to FHerwig.
else if (FHerwig::setParam(name, value) != SUCCESS) {
- getLog() << Log::ERROR << "HerwigJimmy doesn't have a parameter called " << name << endl;
+ MSG_ERROR("HerwigJimmy doesn't have a parameter called " << name);
return FAILURE;
}
return SUCCESS;
}
// Run the generator for one event
/// @todo Make sub-process execution conditional.
void FHerwigJimmy::makeEvent(HepMC::GenEvent& evt) {
while (true) {
Generator::makeEvent(evt);
int counter(0);
// Repeat the first stages of event generation until multiple
// scattering succeeds (or isn't run at all).
while (true) {
counter += 1;
FC_HWUINE(); // Initialize event
FC_HWEPRO(); // Generate hard subprocess
FC_HWBGEN(); // Generate parton cascade
// Call the multiple scattering routine with the abort flag.
// If abort is returned with value 1 (true), then abandon the
// event. This implementation makes sure that the event generation
// continues if multiple scattering is disabled (MSFLAG != 1)
int abort(0);
if (FC_JMPARM.MSFLAG == 1) FC_HWMSCT(&abort);
// If MS is okay or disabled, escape the loop and
// continue with the decays and hadronisation.
if (abort == 0) {
- getLog() << Log::DEBUG << "Num attempts to make MPI = " << counter << endl;
+ MSG_DEBUG("Num attempts to make MPI = " << counter);
break;
}
// Check for too many attempts to make MPI scatters
if (counter > 100) {
throw runtime_error("Too many attempts to make MPI in HerwigJimmy");
}
}
FC_HWDHOB(); // Do heavy quark decays
if(_doHadronise){
FC_HWCFOR(); // Do cluster formation
FC_HWCDEC(); // Do cluster decays
FC_HWDHAD(); // Do unstable particle decays
FC_HWDHVY(); // Do heavy flavor decays
}
FC_HWMEVT(); // Add soft underlying event
FC_HWUFNE(); // Finish event
if (FC_HWEVNT.IERROR == 0) break;
}
clearEvent(evt);
fillEvent(evt);
}
/// Tidy up, print out run stats, etc.
void FHerwigJimmy::finalize() {
FHerwig::finalize();
if (FC_JMPARM.MSFLAG == 1) {
FC_JMEFIN();
}
}
}
// Class factory
extern "C" {
AGILe::Generator* create() { return new AGILe::FHerwigJimmy(); }
void destroy(AGILe::Generator* gen) { delete gen; }
}

File Metadata

Mime Type
text/x-diff
Expires
Thu, Apr 24, 6:32 AM (1 d, 15 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4870491
Default Alt Text
(50 KB)

Event Timeline