9 #include <generators/modules/teegginput/TeeggInputModule.h>
11 #include <framework/datastore/StoreArray.h>
28 setDescription(
"Generates events with TEEGG.");
31 addParam(
"VACPOL", m_sVACPOL,
"Vacuum polarization: off, nsk (Novosibirsk) or hlmnt (Teubner et al., default)",
32 std::string(
"hlmnt"));
33 addParam(
"CMSEnergy", m_cmsEnergy,
"CMS energy [GeV] (default: take from xml)", 0.0);
34 addParam(
"TEVETO", m_TEVETO,
"Maximum theta of e+ in final state (in deg)", 0.1);
35 addParam(
"TEMIN", m_TEMIN,
"Minimum angle between the e- and -z axis (EGAMMA conf. only) (in deg)", 20.0);
36 addParam(
"TGMIN", m_TGMIN,
"Minimum angle between the gamma and -z axis (in deg)", 20.0);
37 addParam(
"TGVETO", m_TGVETO,
"Maximum angle between the gamma and -z axis(ETRON conf. only) (in deg)", 0.05);
38 addParam(
"EEMIN", m_EEMIN,
"Minimum energy of the e- (EGAMMA and ETRON conf.) (in GeV)", 2.0);
39 addParam(
"EGMIN", m_EGMIN,
"Minimum energy of the gamma (EGAMMA and GAMMA conf.) (in GeV)", 2.0);
40 addParam(
"PEGMIN", m_PEGMIN,
"Minimum phi sep of e-gamma (EGAMMA config with hard rad. corr.) (in deg)", 0.0);
41 addParam(
"EEVETO", m_EEVETO,
"Minimum energy to veto (GAMMA config with hard rad. corr.) (in GeV)", 0.0);
42 addParam(
"EGVETO", m_EGVETO,
"Minimum energy to veto (ETRON/GAMMA config with hard rad. corr.) (in GeV)", 0.0);
43 addParam(
"PHVETO", m_PHVETO,
"Minimum phi sep to veto (ETRON/GAMMA config with hard rad. corr. (in deg)", 0.0);
44 addParam(
"CUTOFF", m_CUTOFF,
"Cutoff energy for radiative corrections (in CM frame) (in GeV)", 0.250);
45 addParam(
"EPS", m_EPS,
"Param. epsilon_s (smaller val. increases sampling of k_s^pbc)", 0.01);
46 addParam(
"FRAPHI", m_FRAPHI,
"Fraction of time phi_ks is generated with peak(hard rad corr)", 0.0);
47 addParam(
"EPSPHI", m_EPSPHI,
"Param. epsilon_phi ('cutoff' of the phi_ks peak)", 1.0e-4);
48 addParam(
"WGHT1M", m_WGHT1M,
"Maximum weight for generation of QP0, cos(theta QP)", 1.001);
49 addParam(
"WGHTMX", m_WGHTMX,
"Maximum weight for the trial events", 1.000);
50 addParam(
"RADCOR", m_sRADCOR,
"Specifies radiative correction (NONE, SOFT or HARD)", std::string(
"NONE"));
51 addParam(
"CONFIG", m_sCONFIG,
"Specifies the event configuration (EGAMMA, GAMMA, GAMMAE or ETRON)", std::string(
"EGAMMA"));
52 addParam(
"MATRIX", m_sMATRIX,
"Specifies which eeg matrix element (BK, BKM2, TCHAN or EPA)", std::string(
"BKM2"));
53 addParam(
"MTRXGG", m_sMTRXGG,
"Specifies which eegg matrix element (EPADC, BEEGG or MEEGG)", std::string(
"EPADC"));
54 addParam(
"UNWEIGHTED", m_UNWGHT,
"If true then generate unweighted events", 1);
57 TeeggInputModule::~TeeggInputModule()
63 void TeeggInputModule::initialize()
70 m_initial.initialize();
73 m_generator.initExtraInfo();
78 void TeeggInputModule::event()
82 if (m_beamParams.hasChanged()) {
84 initializeGenerator();
86 B2FATAL(
"TeeggInputModule::event(): BeamParameters have changed within a job, this is not supported for TEEGG!");
101 m_generator.generateEvent(m_mcGraph, vertex, boost);
102 m_mcGraph.generateList(
"", MCParticleGraph::c_setDecayInfo | MCParticleGraph::c_checkCyclic);
106 void TeeggInputModule::terminate()
111 void TeeggInputModule::initializeGenerator()
114 m_cmsEnergy = nominal.getMass();
116 m_generator.setCMSEnergy(m_cmsEnergy);
117 m_generator.setVACPOL(m_sVACPOL);
118 m_generator.setTEVETO(m_TEVETO);
119 m_generator.setTEMIN(m_TEMIN);
120 m_generator.setTGMIN(m_TGMIN);
121 m_generator.setTGVETO(m_TGVETO);
122 m_generator.setEEMIN(m_EEMIN);
123 m_generator.setEGMIN(m_EGMIN);
124 m_generator.setPEGMIN(m_PEGMIN);
125 m_generator.setEEVETO(m_EEVETO);
126 m_generator.setEGVETO(m_EGVETO);
127 m_generator.setPHVETO(m_PHVETO);
128 m_generator.setCUTOFF(m_CUTOFF);
129 m_generator.setEPS(m_EPS);
130 m_generator.setFRAPHI(m_FRAPHI);
131 m_generator.setEPSPHI(m_EPSPHI);
132 m_generator.setWGHT1M(m_WGHT1M);
133 m_generator.setWGHTMX(m_WGHTMX);
134 m_generator.setRADCOR(m_sRADCOR);
135 m_generator.setCONFIG(m_sCONFIG);
136 m_generator.setMATRIX(m_sMATRIX);
137 m_generator.setMTRXGG(m_sMTRXGG);
138 m_generator.setUNWGHT(m_UNWGHT);
142 m_initialized =
true;
This class contains the nominal beam parameters and the parameters used for smearing of the primary v...
This class contains the initial state for the given event.
const TLorentzRotation & getCMSToLab() const
Return the LorentzRotation to convert from CMS to lab frame.
const TVector3 & getVertex() const
Get the position of the collision.
bool registerInDataStore(DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut)
Register the object/array in the DataStore.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.