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()));
127 for ( GenParticlePtr ip: evt.particles()) {
131 xout1.set_precision(6);
132 xout1.write_event(evt);
138 for ( GenParticlePtr ip: evt.particles()) {
142 for ( GenParticlePtr ip: evt.particles()) {
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()) {
171 for ( GenParticlePtr ip: evt.particles()) {
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.
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.