23#include "CLHEP/Vector/LorentzVector.h"
53extern "C" void begevtgenstore_(
int*,
int*,
int*,
int*,
int*,
int*,
int*,
int*,
int*,
double*,
54 double*,
double*,
double*,
double*,
double*,
double*,
double*,
58extern void evtgen_(
float svertex[3],
float* e_cms,
float* beta_zs,
int* mode );
74 report(
INFO,
"EvtGen" ) <<
"Initializing EvtGen" << endl;
76 report(
INFO,
"EvtGen" ) <<
"Storing known decay models" << endl;
79 report(
INFO,
"EvtGen" ) <<
"Main decay file name :" << decayName << endl;
80 report(
INFO,
"EvtGen" ) <<
"PDT table file name :" << pdtTableName << endl;
82 report(
INFO,
"EvtGen" ) <<
"Initializing RadCorr=PHOTOS" << endl;
87 report(
INFO,
"EvtGen" ) <<
"No RadCorr engine given in "
88 <<
"EvtGen::EvtGen constructor, "
89 <<
"will use default EvtPHOTOS." << endl;
93 _pdl.readPDT( pdtTableName );
99 if ( randomEngine == 0 )
103 report(
INFO,
"EvtGen" ) <<
"No random engine given in "
104 <<
"EvtGen::EvtGen constructor, "
105 <<
"will use default EvtRandomEngine." << endl;
109 report(
INFO,
"EvtGen" ) <<
"Done initializing EvtGen" << endl;
116 if ( uDecayName[0] == 0 )
117 {
report(
INFO,
"EvtGen" ) <<
"Is not reading a user decay file!" << endl; }
120 indec.open( uDecayName );
125 report(
INFO,
"EvtGen" ) <<
"Reading " << uDecayName <<
" to override decay table."
131 report(
INFO,
"EvtGen" ) <<
"Can not find UDECAY file '" << uDecayName <<
"'. Stopping"
143 if ( spinDensity == 0 )
176 for ( ii = 0; ii < p->
getNDaug(); ii++ )
185 if ( times == 10000 )
187 report(
ERROR,
"EvtGen" ) <<
"Your event has been rejected 10000 times!" << endl;
188 report(
ERROR,
"EvtGen" ) <<
"Will now abort." << endl;
203 p_init.
set(
P.t(),
P.x(),
P.y(),
P.z() );
218 static int nevent = 0;
227 double px, py, pz, e, m;
234 EvtId list_of_stable[10];
237 list_of_stable[0] =
EvtId( -1, -1 );
238 stable_parent[0] = 0;
249 for ( i = 0; i < evtstdhep.
getNPart(); i++ )
263 p4 = evtstdhep.
getP4( i );
264 x4 = evtstdhep.
getX4( i );
270 x = x4.
get( 1 ) + D.x();
271 y = x4.
get( 2 ) + D.y();
272 z = x4.
get( 3 ) + D.z();
273 t = x4.
get( 0 ) + D.t();
277 begevtgenstore_( &j, &nevent, &npart, &istat, &partnum, &jmotherfirst, &jmotherlast,
278 &jdaugfirst, &jdauglast, &px, &py, &pz, &e, &m, &x, &y, &z, &
t );
double P(RecMdcKalTrack *trk)
void begevtgenstore_(int *, int *, int *, int *, int *, int *, int *, int *, int *, double *, double *, double *, double *, double *, double *, double *, double *, double *)
void evtgen_(float svertex[3], float *e_cms, float *beta_zs, int *mode)
ostream & report(Severity severity, const char *facility)
static void readDecayFile(const std::string dec_name)
static void printSummary()
void readUDecay(const char *const udecay_name)
void generateDecay(int stdhepid, EvtVector4R P, EvtVector4R D, EvtStdHep *evtStdHep, EvtSpinDensity *spinDensity=0)
void generateEvent(int stdhepid, HepLorentzVector P, HepLorentzVector D)
EvtGen(const char *const decayName, const char *const pdtTableName, EvtRandomEngine *randomEngine=0, EvtAbsRadCorr *isrEngine=0)
static EvtId evtIdFromStdHep(int stdhep)
static EvtParticle * particleFactory(EvtSpinType::spintype spinType)
void setVectorSpinDensity()
EvtParticle * getDaug(int i)
void makeStdHep(EvtStdHep &stdhep, EvtSecondary &secondary, EvtId *stable_parent_ihep)
static void setRadCorrEngine(EvtAbsRadCorr *isrEngine)
static void setRandomEngine(EvtRandomEngine *randomEngine)
static void initRejectFlag()
static int getRejectFlag()
void translate(EvtVector4R d)
int getFirstMother(int i)
int getLastDaughter(int i)
int getFirstDaughter(int i)
void set(int i, double d)
void init(EvtId part_n, double e, double px, double py, double pz)