9#include <generators/modules/babayaganloinput/BabayagaNLOInputModule.h>
11#include <framework/datastore/StoreArray.h>
12#include <framework/utilities/FileSystem.h>
13#include <framework/utilities/IOIntercept.h>
15#include <Math/Vector3D.h>
30 double babayaganlo_getrandomcmsenergy_()
42 setDescription(
"Generates radiative Bhabha scattering and exclusive two-photon events with the high precision QED generator called BabaYaga@NLO.");
45 addParam(
"VacuumPolarization",
m_vacPol,
"Vacuum polarization: off, hadr5 (Jegerlehner) or hlmnt (Teubner, default)",
46 std::string(
"hlmnt"));
47 addParam(
"Model",
m_model,
"Model: ps or matched (default)", std::string(
"matched"));
48 addParam(
"Order",
m_order,
"Order: born, alpha, exp (default)", std::string(
"exp"));
49 addParam(
"Mode",
m_mode,
"Mode: weighted or unweighted (default)", std::string(
"unweighted"));
52 "Fractional minimum energy for leptons (ee or mm mode) or photons (gg mode) in the final state [fraction of ECMS]", -1.0);
53 addParam(
"MinEnergy",
m_eMin,
"Minimum energy for leptons (ee or mm mode) or photons (gg mode) in the final state [GeV]", 0.10);
54 addParam(
"Epsilon",
m_epsilon,
"Soft/hard photon separator [fraction of ECMS/2], must be <=1e-7 for ee and mumu, <=1e-5 for gg",
58 addParam(
"FMax",
m_fMax,
"Maximum of differential cross section weight (fmax)", -1.);
59 addParam(
"NPhotons",
m_nPhot,
"Fixed number of (hard) photons are generated, -1 for any number", -1);
60 addParam(
"SearchMax",
m_nSearchMax,
"Number of events used to search for maximum of differential cross section", 500000);
64 addParam(
"DebugEnergySpread",
m_Spread,
"TEMPORARY SOLUTION! Approximate energy spread per beam (CMS)", 5.e-3);
70 addParam(
"UserMode",
m_userMode,
"User mode similar to TEEGG: ETRON, EGAMMA, GAMMA or PRESCALE or NONE (default)",
72 addParam(
"EEMIN",
m_eemin,
"Minimum CMS energy of the tagged e-/e+ (GeV)", -1.0);
73 addParam(
"TEMIN",
m_temin,
"Minimum CMS angle between the tagged e-/e+ and -z axis (deg)", -1.0);
74 addParam(
"EGMIN",
m_egmin,
"Minimum CMS energy of the gamma (GeV)", -1.0);
75 addParam(
"TGMIN",
m_tgmin,
"Minimum CMS angle between the gamma and -z axis (deg)", -1.0);
76 addParam(
"EEVETO",
m_eeveto,
"Minimum CMS energy to veto e-/e+ (GeV)", -1.0);
77 addParam(
"TEVETO",
m_teveto,
"Maximum CMS theta of e-/e+ in final state (deg)", -1.0);
78 addParam(
"EGVETO",
m_egveto,
"Minimum CMS energy to veto gamma (GeV)", -1.0);
79 addParam(
"TGVETO",
m_tgveto,
"Maximum CMS angle between the gamma and -z axis (deg)", -1.0);
80 addParam(
"MaxPrescale",
m_maxprescale,
"Maximum prescale factor (used for maximum differential cross section)", 1.0);
102 m_th1dSDif =
new TH1D(
"sdif",
"sdif", 1000, 0., 100000.);
119 B2FATAL(
"BabayagaNLOInputModule::event(): BeamParameters have changed within a job, this is not supported for BABAYAGA!");
127 double ecm = initial.
getMass();
130 ROOT::Math::LorentzRotation boost = initial.
getCMSToLab();
133 ROOT::Math::XYZVector vertex = initial.
getVertex();
174 double ecmnominal = nominal.getMass();
181 B2INFO(
"Setting EMIN using fraction " <<
m_eMinFrac <<
" of CMS energy: cut=" <<
m_eMinFrac * ecmnominal <<
" GeV");
187 B2INFO(
"Setting FMax manually (no maximum search is performed)." <<
198 initLogCapture.
start();
This class contains the nominal beam parameters and the parameters used for smearing of the primary v...
static std::string findFile(const std::string &path, bool silent=false)
Search for given file or directory in local or central release directory, and return absolute path if...
GeneratorBaseModule()
Constructor.
bool start()
Start intercepting the output.
Capture stdout and stderr and convert into log messages.
bool finish()
Finish the capture and emit the message if output has appeard on stdout or stderr.
@ c_Info
Info: for informational messages, e.g.
This class contains the initial state for the given event.
const ROOT::Math::LorentzRotation & getCMSToLab() const
Return the LorentzRotation to convert from CMS to lab frame.
const ROOT::Math::XYZVector & getVertex() const
Get the position of the collision.
double getMass() const
Get the invariant mass of the collision (= energy in CMS)
@ c_checkCyclic
Check for cyclic dependencies.
@ c_setDecayInfo
Set decay time and vertex.
void setDescription(const std::string &description)
Sets the description of the module.
bool registerInDataStore(DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut)
Register the object/array in the DataStore.
Accessor to arrays stored in the data store.
Class to store variables with their name which were sent to the logging service.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
std::pair< T, T > vectorToPair(std::vector< T > &vec, const std::string &name="")
std::vector< T > make_vector(T const &t1, T const &t2)
make_vector.
Abstract base class for different kinds of events.