HepMC3 event record library
|
Go to the documentation of this file.
6 #ifndef HEPMC3_HEPEVT_WRAPPER_H
7 #define HEPMC3_HEPEVT_WRAPPER_H
24 #ifndef HEPMC3_HEPEVT_NMXHEP
26 #define HEPMC3_HEPEVT_NMXHEP 10000
29 #ifndef HEPMC3_HEPEVT_PRECISION
31 #define HEPMC3_HEPEVT_PRECISION double
71 #ifndef HEPEVT_WRAPPER_HEADER_ONLY
88 static void print_hepevt( std::ostream& ostr = std::cout );
98 #ifndef HEPEVT_WRAPPER_HEADER_ONLY
110 static void set_hepevt_address(
char *c) {
hepevtptr=(
struct HEPEVT*)c; }
111 static int max_number_entries() {
return NMXHEP; }
114 static int status(
const int& index ) {
return hepevtptr->
isthep[index-1]; }
115 static int id(
const int& index ) {
return hepevtptr->
idhep[index-1]; }
116 static int first_parent(
const int& index ) {
return hepevtptr->
jmohep[index-1][0]; }
117 static int last_parent(
const int& index ) {
return hepevtptr->
jmohep[index-1][1]; }
118 static int first_child(
const int& index ) {
return hepevtptr->
jdahep[index-1][0]; }
119 static int last_child(
const int& index ) {
return hepevtptr->
jdahep[index-1][1]; }
120 static double px(
const int& index ) {
return hepevtptr->
phep[index-1][0]; }
121 static double py(
const int& index ) {
return hepevtptr->
phep[index-1][1]; }
122 static double pz(
const int& index ) {
return hepevtptr->
phep[index-1][2]; }
123 static double e(
const int& index ) {
return hepevtptr->
phep[index-1][3]; }
124 static double m(
const int& index ) {
return hepevtptr->
phep[index-1][4]; }
125 static double x(
const int& index ) {
return hepevtptr->
vhep[index-1][0]; }
126 static double y(
const int& index ) {
return hepevtptr->
vhep[index-1][1]; }
127 static double z(
const int& index ) {
return hepevtptr->
vhep[index-1][2]; }
128 static double t(
const int& index ) {
return hepevtptr->
vhep[index-1][3]; }
133 static void set_event_number(
const int& evtno ) {
hepevtptr->
nevhep = evtno; }
134 static void set_number_entries(
const int& noentries ) {
hepevtptr->
nhep = noentries; }
135 static void set_status(
const int& index,
const int& status ) {
hepevtptr->
isthep[index-1] = status; }
136 static void set_id(
const int& index,
const int&
id ) {
hepevtptr->
idhep[index-1] = id; }
137 static void set_parents(
const int& index,
const int& firstparent,
const int& lastparent );
138 static void set_children(
const int& index,
const int& firstchild,
const int& lastchild );
139 static void set_momentum(
const int& index,
const double& px,
const double& py,
const double& pz,
const double& e );
140 static void set_mass(
const int& index,
double mass );
141 static void set_position(
const int& index,
const double& x,
const double& y,
const double& z,
const double& t );
150 ostr<<
" Nr Type Parent(s) Daughter(s) Px Py Pz E Inv. M." << std::endl;
169 ostr << buf << std::endl;
176 printf(
"HEPEVT_Wrapper::check_hepevt_consistency is not implemented!\n");
248 for(
int i=1; i<=HEPEVT_Wrapper::number_entries(); i++ )
249 for(
int k=1; k<=HEPEVT_Wrapper::number_entries(); k++ )
if (i!=k)
250 if ((HEPEVT_Wrapper::first_parent(k)<=i)&&(i<=HEPEVT_Wrapper::last_parent(k)))
251 HEPEVT_Wrapper::set_children(i,(HEPEVT_Wrapper::first_child(i)==0?k:std::min(HEPEVT_Wrapper::first_child(i),k)),(HEPEVT_Wrapper::last_child(i)==0?k:std::max(HEPEVT_Wrapper::last_child(i),k)));
253 for(
int i=1; i<=HEPEVT_Wrapper::number_entries(); i++ )
#define HEPMC3_HEPEVT_PRECISION
HEPMC3_HEPEVT_PRECISION momentum_t
Precision of the 4-momentum, time-space position and mass.
Definition of class GenEvent.
static bool fix_daughters()
Tries to fix list of daughters.
int nhep
Number of entries in the event.
Stores event-related information.
An interface to HEPEVT common block.
static void set_mass(const int &index, double mass)
Set mass.
static void set_children(const int &index, const int &firstchild, const int &lastchild)
Set children.
static void set_momentum(const int &index, const double &px, const double &py, const double &pz, const double &e)
Set 4-momentum.
static int number_children_exact(const int &index)
Get number of children by counting.
C structure representing Fortran common block HEPEVT T. Sjöstrand et al., "A proposed standard event ...
static int number_parents(const int &index)
Get number of parents.
#define HEPMC3_HEPEVT_NMXHEP
static void set_position(const int &index, const double &x, const double &y, const double &z, const double &t)
Set position in time-space.
static const int NMXHEP
Number of particles in the HEPEVT structure.
static void print_hepevt_particle(int index, std::ostream &ostr=std::cout)
Print particle information.
struct HEPEVT * hepevtptr
Pointer to external (e.g. in Pythia6) struct with HEPEVT.
momentum_t vhep[NMXHEP][4]
Time-space position: x, y, z, t.
static void set_parents(const int &index, const int &firstparent, const int &lastparent)
Set parents.
int jmohep[NMXHEP][2]
Pointer to position of 1st and 2nd (or last!) mother.
static void zero_everything()
Set all entries in HEPEVT to zero.
static bool check_hepevt_consistency(std::ostream &ostr=std::cout)
Check for problems with HEPEVT common block.
int jdahep[NMXHEP][2]
Pointer to position of 1nd and 2nd (or last!) daughter.
momentum_t phep[NMXHEP][5]
Momentum: px, py, pz, e, m.
static void print_hepevt(std::ostream &ostr=std::cout)
Print information from HEPEVT common block.
static int number_children(const int &index)
Get number of children from the range of daughters.
int isthep[NMXHEP]
Status code.
static bool GenEvent_to_HEPEVT(const GenEvent *evt)
Convert GenEvent to HEPEVT.
static bool HEPEVT_to_GenEvent(GenEvent *evt)
Convert HEPEVT to GenEvent.