15 ReaderLHEF::ReaderLHEF(
const std::string& filename)
21 m_hepr = make_shared<HEPRUPAttribute>();
22 m_hepr->heprup = m_reader->heprup;
30 set_run_info(make_shared<GenRunInfo>());
31 run_info()->add_attribute(
"HEPRUP", m_hepr);
35 run_info()->add_attribute(
"NPRUP",
36 make_shared<FloatAttribute>(m_hepr->heprup.NPRUP));
41 std::vector<std::string> weightnames;
42 weightnames.push_back(
"0");
44 for (
int i = 0, N = m_hepr->heprup.weightinfo.size(); i < N; ++i )
45 weightnames.push_back(m_hepr->heprup.weightNameHepMC(i));
46 run_info()->set_weight_names(weightnames);
50 for (
int i = 0, N = m_hepr->heprup.generators.size(); i < N; ++i )
52 GenRunInfo::ToolInfo tool;
53 tool.name = m_hepr->heprup.generators[i].name;
54 tool.version = m_hepr->heprup.generators[i].version;
55 tool.description = m_hepr->heprup.generators[i].contents;
56 run_info()->tools().push_back(tool);
60 ReaderLHEF::~ReaderLHEF() {close();};
64 m_failed=!(m_reader->readEvent());
65 if (m_failed)
return m_failed;
70 shared_ptr<HEPEUPAttribute> hepe = make_shared<HEPEUPAttribute>();
71 if ( m_reader->outsideBlock.length() )
73 hepe->hepeup = m_reader->hepeup;
80 make_shared<DoubleAttribute>(hepe->hepeup.AQCDUP));
82 make_shared<DoubleAttribute>(hepe->hepeup.AQEDUP));
84 make_shared<IntAttribute>(hepe->hepeup.NUP));
86 make_shared<LongAttribute>(hepe->hepeup.IDPRUP));
89 GenParticlePtr p1 = make_shared<GenParticle>(hepe->momentum(0),
91 hepe->hepeup.ISTUP[0]);
92 GenParticlePtr p2 = make_shared<GenParticle>(hepe->momentum(1),
94 hepe->hepeup.ISTUP[1]);
95 GenVertexPtr vx = make_shared<GenVertex>();
96 vx->add_particle_in(p1);
97 vx->add_particle_in(p2);
99 for (
int i = 2; i < hepe->hepeup.NUP; ++i )
100 vx->add_particle_out(make_shared<GenParticle>
102 hepe->hepeup.IDUP[i],
103 hepe->hepeup.ISTUP[i]));
106 std::vector<double> wts;
107 for (
int i = 0, N = hepe->hepeup.weights.size(); i < N; ++i )
108 wts.push_back(hepe->hepeup.weights[i].first);
113 bool ReaderLHEF::failed() {
return m_failed;}
116 void ReaderLHEF::close() {
delete m_reader; };
static std::vector< XMLTag * > findXMLTags(std::string str, std::string *leftover=0)
void add_vertex(GenVertexPtr v)
Add vertex.
Les Houches event file classes.
const std::vector< double > & weights() const
Get event weight values as a vector.
Stores event-related information.
void add_attribute(const string &name, const shared_ptr< Attribute > &att, const int &id=0)
Add event attribute to event.
Definition of class ReaderLHEF.
void set_event_number(const int &num)
Set event number.