00001 #ifndef GENERATORMODULES_GEN_HEPEVT_H
00002 # define GENERATORMODULES_GEN_HEPEVT_H
00003
00004 #include <vector>
00005 #include <map>
00006
00007 #include "CLIDSvc/CLASS_DEF.h"
00008
00009 #include "CLHEP/Vector/LorentzVector.h"
00010
00011 class Gen_HEPEVT
00012 {
00013 public:
00014 Gen_HEPEVT (void);
00015
00016
00017 int nevhep (void) const;
00018 int nhep (void) const;
00019 int isthep (int ihep);
00020 int idhep (int ihep);
00021 int first_parent (int ihep);
00022 int last_parent (int ihep);
00023 int first_child (int ihep);
00024 int last_child (int ihep);
00025 double px (int ihep);
00026 double py (int ihep);
00027 double pz (int ihep);
00028 double e (int ihep);
00029 double m (int ihep);
00030 double x (int ihep);
00031 double y (int ihep);
00032 double z (int ihep);
00033 double t (int ihep);
00034
00035
00036
00037 void nevhep (int value);
00038 void nhep (int value);
00039 void isthep (int& ihep, int value);
00040 void idhep (int& ihep, int value);
00041 void mothers (int& ihep, int value1, int value2);
00042 void daughters (int& ihep, int value1, int value2);
00043 void momentum (int& ihep, double px, double py,
00044 double pz, double e, double m );
00045 void position (int& ihep, double x, double y,
00046 double z, double t);
00047 private:
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075 int m_NEVHEP;
00076 int m_NHEP;
00077 std::map<int, int> m_ISTHEP;
00078 std::map<int, int> m_IDHEP;
00079 std::map<int, std::pair<int, int> > m_JMOHEP;
00080 std::map<int, std::pair<int, int> > m_JDAHEP;
00081 std::map<int, double > m_PHEP0;
00082 std::map<int, double > m_PHEP1;
00083 std::map<int, double > m_PHEP2;
00084 std::map<int, double > m_PHEP3;
00085 std::map<int, double > m_PHEP4;
00086 std::map<int, double > m_VHEP0;
00087 std::map<int, double > m_VHEP1;
00088 std::map<int, double > m_VHEP2;
00089 std::map<int, double > m_VHEP3;
00090 };
00091
00092 inline
00093 Gen_HEPEVT::Gen_HEPEVT (void)
00094 : m_NEVHEP (0),
00095 m_NHEP (0)
00096 {}
00097
00098
00099
00100
00101 inline int
00102 Gen_HEPEVT::nevhep (void) const
00103 { return m_NEVHEP; }
00104
00105 inline int
00106 Gen_HEPEVT::nhep (void) const
00107 { return m_NHEP; }
00108
00109 inline int
00110 Gen_HEPEVT::isthep (int ihep)
00111 { return m_ISTHEP[ihep]; }
00112
00113 inline int
00114 Gen_HEPEVT::idhep (int ihep)
00115 { return m_IDHEP[ihep]; }
00116
00117 inline int
00118 Gen_HEPEVT::first_parent (int ihep)
00119 { return m_JMOHEP[ihep].first; }
00120
00121 inline int
00122 Gen_HEPEVT::last_parent (int ihep)
00123 { return m_JMOHEP[ihep].second; }
00124
00125 inline int
00126 Gen_HEPEVT::first_child (int ihep)
00127 { return m_JDAHEP[ihep].first; }
00128
00129 inline int
00130 Gen_HEPEVT::last_child (int ihep)
00131 { return m_JDAHEP[ihep].second; }
00132
00133 inline double
00134 Gen_HEPEVT::px (int ihep)
00135 { return m_PHEP0[ihep]; }
00136
00137 inline double
00138 Gen_HEPEVT::py (int ihep)
00139 { return m_PHEP1[ihep]; }
00140
00141 inline double
00142 Gen_HEPEVT::pz (int ihep)
00143 { return m_PHEP2[ihep]; }
00144
00145 inline double
00146 Gen_HEPEVT::e (int ihep)
00147 { return m_PHEP3[ihep]; }
00148
00149 inline double
00150 Gen_HEPEVT::m (int ihep)
00151 { return m_PHEP4[ihep]; }
00152
00153 inline double
00154 Gen_HEPEVT::x (int ihep)
00155 { return m_VHEP0[ihep]; }
00156
00157 inline double
00158 Gen_HEPEVT::y (int ihep)
00159 { return m_VHEP1[ihep]; }
00160
00161 inline double
00162 Gen_HEPEVT::z (int ihep)
00163 { return m_VHEP2[ihep]; }
00164
00165 inline double
00166 Gen_HEPEVT::t (int ihep)
00167 { return m_VHEP3[ihep]; }
00168
00169
00170
00171
00172 inline void
00173 Gen_HEPEVT::nevhep (int value)
00174 { m_NEVHEP = value; }
00175
00176 inline void
00177 Gen_HEPEVT::nhep (int value)
00178 { m_NHEP = value; }
00179
00180 inline void
00181 Gen_HEPEVT::isthep (int& ihep, int value)
00182 { m_ISTHEP[ihep] = value; }
00183
00184 inline void
00185 Gen_HEPEVT::idhep (int& ihep, int value)
00186 { m_IDHEP[ihep] = value; }
00187
00188 inline void
00189 Gen_HEPEVT::mothers (int& ihep, int value1, int value2)
00190 { m_JMOHEP[ihep] = std::make_pair(value1, value2); }
00191
00192 inline void
00193 Gen_HEPEVT::daughters (int& ihep, int value1, int value2)
00194 { m_JDAHEP[ihep] = std::make_pair(value1, value2); }
00195
00196 inline void
00197 Gen_HEPEVT::momentum (int& ihep, double px, double py,
00198 double pz, double e, double m )
00199 {
00200 m_PHEP0[ihep] = px;
00201 m_PHEP1[ihep] = py;
00202 m_PHEP2[ihep] = pz;
00203 m_PHEP3[ihep] = e;
00204 m_PHEP4[ihep] = m;
00205 }
00206
00207 inline void
00208 Gen_HEPEVT::position (int& ihep, double x, double y,
00209 double z, double t)
00210 {
00211 m_VHEP0[ihep] = x;
00212 m_VHEP1[ihep] = y;
00213 m_VHEP2[ihep] = z;
00214 m_VHEP3[ihep] = t;
00215 }
00216
00217 CLASS_DEF( Gen_HEPEVT, 2221, 1)
00218
00219 #endif // GENERATORMODULES_GEN_HEPEVT_H