16int main(
int ,
char ** ) {
22 std::shared_ptr<HEPRUPAttribute> hepr = std::make_shared<HEPRUPAttribute>();
23 hepr->heprup = reader.heprup;
31 std::shared_ptr<GenRunInfo> runinfo = std::make_shared<GenRunInfo>();
32 runinfo->add_attribute(
"HEPRUP", hepr);
36 runinfo->add_attribute(
"NPRUP",
37 std::make_shared<FloatAttribute>(hepr->heprup.NPRUP));
42 std::vector<std::string> weightnames;
43 weightnames.push_back(
"0");
45 for (
int i = 0, N = hepr->heprup.weightinfo.size(); i < N; ++i )
46 weightnames.push_back(hepr->heprup.weightNameHepMC(i));
47 runinfo->set_weight_names(weightnames);
51 for (
int i = 0, N = hepr->heprup.generators.size(); i < N; ++i ) {
53 tool.
name = hepr->heprup.generators[i].name;
54 tool.
version = hepr->heprup.generators[i].version;
55 tool.
description = hepr->heprup.generators[i].contents;
56 runinfo->tools().push_back(tool);
63 while ( reader.readEvent() ) {
70 std::shared_ptr<HEPEUPAttribute> hepe = std::make_shared<HEPEUPAttribute>();
71 if ( reader.outsideBlock.length() )
73 hepe->hepeup = reader.hepeup;
74 GenEvent ev(runinfo, Units::GEV, Units::MM);
75 ev.set_event_number(neve);
79 ev.add_attribute(
"HEPEUP", hepe);
80 ev.add_attribute(
"AlphaQCD",
81 std:: make_shared<DoubleAttribute>(hepe->hepeup.AQCDUP));
82 ev.add_attribute(
"AlphaEM",
83 std::make_shared<DoubleAttribute>(hepe->hepeup.AQEDUP));
84 ev.add_attribute(
"NUP",
85 std::make_shared<IntAttribute>(hepe->hepeup.NUP));
86 ev.add_attribute(
"IDPRUP",
87 std::make_shared<LongAttribute>(hepe->hepeup.IDPRUP));
90 GenParticlePtr p1 = std::make_shared<GenParticle>(hepe->momentum(0),
92 hepe->hepeup.ISTUP[0]);
93 GenParticlePtr p2 = std::make_shared<GenParticle>(hepe->momentum(1),
95 hepe->hepeup.ISTUP[1]);
96 GenVertexPtr vx = std::make_shared<GenVertex>();
97 vx->add_particle_in(p1);
98 vx->add_particle_in(p2);
100 for (
int i = 2; i < hepe->hepeup.NUP; ++i )
101 vx->add_particle_out(std::make_shared<GenParticle>
103 hepe->hepeup.IDUP[i],
104 hepe->hepeup.ISTUP[i]));
108 std::vector<double> wts;
109 for (
int i = 0, N = hepe->hepeup.weights.size(); i < N; ++i )
110 wts.push_back(hepe->hepeup.weights[i].first);
114 ev.add_attribute(
"OtherIncoming",
115 std::make_shared<AssociatedParticle>(p2), p1->id());
119 output.write_event(ev);
130 hepr = std::shared_ptr<HEPRUPAttribute>();
137 if ( !input.read_event(ev) || ev.event_number() == 0 )
break;
140 std::shared_ptr<AssociatedParticle> assoc =
142 if ( !assoc || !assoc->associated() ||
143 assoc->associated() != ev.particles()[1] )
return 3;
146 if ( input.run_info()->weight_names() != weightnames )
return 2;
155 for (
int i = 0, N = hepr->tags.size(); i < N; ++i )
156 if ( hepr->tags[i]->name !=
"init" )
157 hepr->
tags[i]->print(writer.headerBlock());
162 int(input.run_info()->
163 attribute<FloatAttribute>(
"NPRUP")->value());
166 writer.heprup = hepr->heprup;
167 if ( writer.heprup.eventfiles.size() >= 2 ) {
168 writer.heprup.eventfiles[0].filename =
"LHEF_example_1_out.plhe";
169 writer.heprup.eventfiles[1].filename =
"LHEF_example_2_out.plhe";
176 std::shared_ptr<HEPEUPAttribute> hepe =
181 for (
int i = 0, N = hepe->tags.size(); i < N; ++i )
182 if ( hepe->tags[i]->name !=
"event" &&
183 hepe->tags[i]->name !=
"eventgroup" )
184 hepe->
tags[i]->print(writer.eventComments());
188 hepe->hepeup.AQCDUP =
190 hepe->hepeup.AQEDUP =
194 hepe->hepeup.IDPRUP =
198 writer.hepeup = hepe->hepeup;
199 writer.hepeup.heprup = &writer.heprup;
Definition of class AssociatedParticle,.
Definition of class GenEvent.
Definition of class GenParticle.
Definition of class GenVertex.
Definition of class HEPRUPAttribute and class HEPEUAttribute.
Definition of class ReaderAscii.
Definition of class WriterAscii.
Attribute class allowing eg. a GenParticle to refer to another GenParticle.
Attribute that holds a real number as a double.
Stores event-related information.
Class for storing data for LHEF run information.
std::vector< LHEF::XMLTag * > tags
The parsed XML-tags.
Class for storing data for LHEF run information.
std::vector< LHEF::XMLTag * > tags
The parsed XML-tags.
Attribute that holds an Integer implemented as an int.
Attribute that holds an Integer implemented as an int.
GenEvent I/O parsing for structured text files.
GenEvent I/O serialization for structured text files.
int main(int argc, char **argv)
static std::vector< XMLTag * > findXMLTags(std::string str, std::string *leftover=0)