17 #include "HepMC3TestUtils.h"
18 using namespace HepMC3;
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 GenParticle.
#define M_PI
Definition of PI. Needed on some platforms.
Definition of class GenVertex.
Definition of class WriterAscii.
Stores particle-related information.
static void listing(std::ostream &os, const GenEvent &event, unsigned short precision=2)
Print event in listing (HepMC2) format.
Stores event-related information.
static void line(std::ostream &os, const GenEvent &event, bool attributes=false)
Print one-line info.
Definition of class WriterAsciiHepMC2.
Definition of static class Print.
int main(int argc, char **argv)
Definition of class GenEvent.
Definition of class Attribute, class IntAttribute and class StringAttribute.
GenEvent I/O serialization for structured text files.
static void content(std::ostream &os, const GenEvent &event)
Print content of all GenEvent containers.