19 : m_file(filename), m_stream(0), m_isstream(false)
22 HEPMC3_ERROR(
"ReaderHEPEVT: could not open input file: "<<filename )
34 : m_stream(&stream), m_isstream(true)
37 HEPMC3_ERROR(
"ReaderHEPEVT: could not open input stream ")
49 const size_t max_buffer_size=512*512;
50 char buf[max_buffer_size];
57 if (nn<0)
return true;
67 const size_t max_e_buffer_size=512;
68 char buf_e[max_e_buffer_size];
74 if( strlen(buf_e) == 0 )
return false;
75 std::stringstream st_e(buf_e);
80 if (!(st_e>>attr))
break;
81 if (attr==
' ')
continue;
85 eventline=
static_cast<bool>(st_e>>m_i>>m_p);
89 HEPEVT_Wrapper::set_event_number(m_i);
90 HEPEVT_Wrapper::set_number_entries(m_p);
97 const size_t max_p_buffer_size=512;
98 const size_t max_v_buffer_size=512;
99 char buf_p[max_p_buffer_size];
100 char buf_v[max_v_buffer_size];
105 if( strlen(buf_p) == 0 )
return false;
109 if( strlen(buf_v) == 0 )
return false;
111 std::stringstream st_p(buf_p);
112 std::stringstream st_v(buf_v);
115 if (!
static_cast<bool>(st_p>>intcodes[0]>>intcodes[1]>>intcodes[2]>>intcodes[3]>>intcodes[4]>>intcodes[5]>>fltcodes1[0]>>fltcodes1[1]>>fltcodes1[2]>>fltcodes1[3]>>fltcodes1[4])) {
HEPMC3_ERROR(
"ReaderHEPEVT: HEPMC3_ERROR reading particle momenta");
return false;}
116 if (!
static_cast<bool>(st_v>>fltcodes2[0]>>fltcodes2[1]>>fltcodes2[2]>>fltcodes2[3])) {
HEPMC3_ERROR(
"ReaderHEPEVT: HEPMC3_ERROR reading particle vertex");
return false;}
120 if (!
static_cast<bool>(st_p>>intcodes[0]>>intcodes[1]>>intcodes[4]>>intcodes[5]>>fltcodes1[0]>>fltcodes1[1]>>fltcodes1[2]>>fltcodes1[4])) {
HEPMC3_ERROR(
"ReaderHEPEVT: HEPMC3_ERROR reading particle momenta");
return false;}
123 fltcodes1[3]=std::sqrt(fltcodes1[0]*fltcodes1[0]+fltcodes1[1]*fltcodes1[1]+fltcodes1[2]*fltcodes1[2]+fltcodes1[4]*fltcodes1[4]);
129 HEPEVT_Wrapper::set_status(i,intcodes[0]);
130 HEPEVT_Wrapper::set_id(i,intcodes[1]);
145 for (
int i=1; (i<=HEPEVT_Wrapper::number_entries())&&fileok; i++)
151 std::shared_ptr<GenRunInfo> g=std::make_shared<GenRunInfo>();
152 std::vector<std::string> weightnames;
153 weightnames.push_back(
"0");
154 std::vector<double> wts;
156 g->set_weight_names(weightnames);
170 if( !
m_file.is_open())
return;