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 v1->add_attribute(
"weights", std::make_shared<VectorDoubleAttribute>(std::vector<double> {1.0,2.0,5.0}));
60 GenParticlePtr p1=std::make_shared<GenParticle>(
FourVector(1.0,1.0,7000,7000),2212, 3 );
61 evt.add_particle( p1 );
62 p1->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
63 p1->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
64 p1->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
65 p1->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
67 GenVertexPtr v2=std::make_shared<GenVertex>();
69 GenParticlePtr p2=std::make_shared<GenParticle>(
FourVector(1.0,1.0,-7000,7000),2212, 3 );
70 evt.add_particle( p2 );
71 p2->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
72 p2->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
73 p2->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
74 v2->add_particle_in( p2 );
77 GenParticlePtr p3=std::make_shared<GenParticle>(
FourVector(.750,-1.569,32.191,32.238),1, 3 );
78 evt.add_particle( p3 );
79 p3->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
80 p3->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
81 p3->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
82 v1->add_particle_out( p3 );
83 GenParticlePtr p4=std::make_shared<GenParticle>(
FourVector(-3.047,-19.,-54.629,57.920),-2, 3 );
84 evt.add_particle( p4 );
85 p4->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
86 p4->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
87 p4->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
88 v2->add_particle_out( p4 );
91 GenVertexPtr v3=std::make_shared<GenVertex>();
93 v3->add_particle_in( p3 );
94 v3->add_particle_in( p4 );
95 GenParticlePtr p6=std::make_shared<GenParticle>(
FourVector(-3.813,0.113,-1.833,4.233 ),22, 1 );
96 evt.add_particle( p6 );
97 p6->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
98 p6->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
99 p6->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
100 v3->add_particle_out( p6 );
101 GenParticlePtr p5=std::make_shared<GenParticle>(
FourVector(1.517,-20.68,-20.605,85.925),-24, 3 );
102 evt.add_particle( p5 );
103 p5->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
104 p5->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI));
105 p5->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*
M_PI*2));
106 v3->add_particle_out( p5 );
109 GenVertexPtr v4=std::make_shared<GenVertex>(
FourVector(0.12,-0.3,0.05,0.004));
110 evt.add_vertex( v4 );
111 v4->add_particle_in( p5 );
113 evt.add_particle( p7 );
114 v4->add_particle_out( p7 );
116 evt.add_particle( p8 );
117 v4->add_particle_out( p8 );
121 evt.add_attribute(
"signal_process_vertex", std::make_shared<IntAttribute>(v3->id()));
125 Print::listing(evt,8);
127 for ( GenParticlePtr ip: evt.particles()) {
128 Print::line(ip,
true);
131 xout1.set_precision(6);
132 xout1.write_event(evt);
138 for ( GenParticlePtr ip: evt.particles()) {
139 Print::line(ip,
true);
142 for ( GenParticlePtr ip: evt.particles()) {
143 Print::line(ip,
true);
146 xout2.set_precision(6);
147 xout2.write_event(evt);
150 if (COMPARE_ASCII_FILES(
"testBoost1.out",
"testBoost2.out")!=0)
return 1;
154 if (evt.boost(bwrong1))
return 2;
158 if (evt.boost(bwrong2))
return 3;
160 FourVector bwrong3(std::numeric_limits<double>::epsilon()*0.9,0.0,0.0,0);
162 if (!evt.boost(bwrong3))
return 4;
167 for ( GenParticlePtr ip: evt.particles()) {
168 Print::line(ip,
true);
171 for ( GenParticlePtr ip: evt.particles()) {
172 Print::line(ip,
true);
175 xout3.set_precision(6);
176 xout3.write_event(evt);
179 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.
GenEvent I/O serialization for structured text files.
int main(int argc, char **argv)