17#include "HepMC3TestUtils.h"
54 evt.set_event_number(1);
55 evt.add_attribute(
"signal_process_id", std::make_shared<IntAttribute>(20));
57 GenVertexPtr v1=std::make_shared<GenVertex>();
59 GenParticlePtr p1=std::make_shared<GenParticle>(
FourVector(1.0,1.0,7000,7000),2212, 3 );
60 evt.add_particle( p1 );
61 p1->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
62 p1->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
63 p1->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
64 p1->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
66 GenVertexPtr v2=std::make_shared<GenVertex>();
68 GenParticlePtr p2=std::make_shared<GenParticle>(
FourVector(1.0,1.0,-7000,7000),2212, 3 );
69 evt.add_particle( p2 );
70 p2->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
71 p2->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
72 p2->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
73 v2->add_particle_in( p2 );
76 GenParticlePtr p3=std::make_shared<GenParticle>(
FourVector(.750,-1.569,32.191,32.238),1, 3 );
77 evt.add_particle( p3 );
78 p3->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
79 p3->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
80 p3->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
81 v1->add_particle_out( p3 );
82 GenParticlePtr p4=std::make_shared<GenParticle>(
FourVector(-3.047,-19.,-54.629,57.920),-2, 3 );
83 evt.add_particle( p4 );
84 p4->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
85 p4->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
86 p4->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
87 v2->add_particle_out( p4 );
90 GenVertexPtr v3=std::make_shared<GenVertex>();
92 v3->add_particle_in( p3 );
93 v3->add_particle_in( p4 );
94 GenParticlePtr p6=std::make_shared<GenParticle>(
FourVector(-3.813,0.113,-1.833,4.233 ),22, 1 );
95 evt.add_particle( p6 );
96 p6->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
97 p6->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
98 p6->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
99 v3->add_particle_out( p6 );
100 GenParticlePtr p5=std::make_shared<GenParticle>(
FourVector(1.517,-20.68,-20.605,85.925),-24, 3 );
101 evt.add_particle( p5 );
102 p5->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
103 p5->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
104 p5->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
105 v3->add_particle_out( p5 );
108 GenVertexPtr v4=std::make_shared<GenVertex>(
FourVector(0.12,-0.3,0.05,0.004));
109 evt.add_vertex( v4 );
110 v4->add_particle_in( p5 );
112 evt.add_particle( p7 );
113 v4->add_particle_out( p7 );
115 evt.add_particle( p8 );
116 v4->add_particle_out( p8 );
120 evt.add_attribute(
"signal_process_vertex", std::make_shared<IntAttribute>(v3->id()));
126 for ( GenParticlePtr ip: evt.particles()) {
130 xout1.set_precision(6);
131 xout1.write_event(evt);
137 for ( GenParticlePtr ip: evt.particles()) {
141 for ( GenParticlePtr ip: evt.particles()) {
145 xout2.set_precision(6);
146 xout2.write_event(evt);
149 if (COMPARE_ASCII_FILES(
"testBoost1.out",
"testBoost2.out")!=0)
return 1;
153 if (evt.boost(bwrong1))
return 2;
157 if (evt.boost(bwrong2))
return 3;
159 FourVector bwrong3(std::numeric_limits<double>::epsilon()*0.9,0.0,0.0,0);
161 if (!evt.boost(bwrong3))
return 4;
166 for ( GenParticlePtr ip: evt.particles()) {
170 for ( GenParticlePtr ip: evt.particles()) {
174 xout3.set_precision(6);
175 xout3.write_event(evt);
178 if (COMPARE_ASCII_FILES(
"testBoost1.out",
"testBoost3.out")!=0)
return 5;
Definition of class Attribute, class IntAttribute and class StringAttribute.
#define M_PI
Definition of PI. Needed on some platforms.
Definition of class GenEvent.
Definition of class GenParticle.
Definition of class GenVertex.
Definition of static class Print.
Definition of class WriterAsciiHepMC2.
Definition of class WriterAscii.
Stores event-related information.
Stores particle-related information.
static void content(std::ostream &os, const GenEvent &event)
Print content of all GenEvent containers.
static void listing(std::ostream &os, const GenEvent &event, unsigned short precision=2)
Print event in listing (HepMC2) format.
static void line(std::ostream &os, const GenEvent &event, bool attributes=false)
Print one-line info.
GenEvent I/O serialization for structured text files.