9#include <generators/modules/bhwideinput/BHWideInputModule.h>
11#include <framework/datastore/StoreArray.h>
13#include <Math/Vector3D.h>
30 setDescription(
"Generates radiative BhaBha scattering events with BHWide.");
34 "Min [0] and Max [1] value for the scattering angle [deg] of the positron.",
make_vector(15.0, 165.0));
36 "Min [0] and Max [1] value for the scattering angle [deg] of the electron.",
make_vector(15.0, 165.0));
39 addParam(
"MinEnergy",
m_eMin,
"Minimum energy for electrons in the final state [GeV] (default: 0.2 GeV)", 0.2);
41 "Vacuum polarization: off (off - EW off, too), Burkhardt89 (bhlumi), Eidelman/Jegerlehner95 (eidelman) or Burkhardt/Pietrzyk95 (burkhardt)",
42 std::string(
"burkhardt"));
43 addParam(
"WtMax",
m_wtMax,
"Maximum of weight (wtmax, default: 3.0), if <0: internal maximum search", 3.);
76 B2FATAL(
"BHWideInputModule::event(): BeamParameters have changed within a job, this is not supported for BHWide!");
84 ROOT::Math::LorentzRotation boost = initial.
getCMSToLab();
87 ROOT::Math::XYZVector vertex = initial.
getVertex();
108 double ecm = nominal.getMass();
129 B2INFO(
"BHWideInputModule: Switching OFF EW corrections");
135 else B2FATAL(
"BHWideInputModule: Vacuum Polarization option does not exist: " <<
m_vacPolString);
void init()
Initializes the generator.
void generateEvent(MCParticleGraph &mcGraph, ROOT::Math::XYZVector vertex, ROOT::Math::LorentzRotation boost)
Generates one single event.
void setMaxRejectionWeight(double maxRejectionWeight)
Sets the max weight at which events are rejected.
void enableWeakCorrections(bool weakCorrections=true)
Enable the use of weak corrections.
void setScatAnglePositron(std::pair< double, double > angleRange)
Sets the theta scattering angle range for the scattered positron.
@ PP_BURKHARDT
Burkhardt and Pietrzyk 1995 (Moriond).
@ PP_BHLUMI
Burkhardt et.al.
@ PP_OFF
Photon vacuum polarization is off.
void setCMSEnergy(double cmsEnergy)
Sets the CMS energy.
void term()
Terminates the generator.
void setPhotonVacPolarization(PhotonVacPolarization photonVacPol)
Set the model for the photon vacuum polarization.
void setMinEnergyFinalStateElc(double minEnergyFinalStateElc)
Sets the minimal energy for the scattered electron.
void setMinEnergyFinalStatePos(double minEnergyFinalStatePos)
Sets the minimal energy for the scattered positron.
double getCrossSection()
Returns the total cross section of the generated process.
double getCrossSectionError()
Returns the error on the total cross section of the generated process.
void setScatAngleElectron(std::pair< double, double > angleRange)
Sets the theta scattering angle range for the scattered electron.
void setMaxAcollinearity(double maxAcollinearity)
Sets the max acollinearity angle.
This class contains the nominal beam parameters and the parameters used for smearing of the primary v...
const BeamParameters & getBeamParameters() const
Return reference to nominal beam parameters.
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.
@ c_checkCyclic
Check for cyclic dependencies.
@ c_setDecayInfo
Set decay time and vertex.
void generateList(const std::string &name="", int options=c_setNothing)
Generates the MCParticle list and stores it in the StoreArray with the given name.
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.
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.
void initialize()
function to be executed on initialize()
MCInitialParticles & generate()
Generate a new event.
void clear()
Reset particles and decay information to make the class reusable.
Abstract base class for different kinds of events.