20#define M_PI 3.14159265358979323846264338327950288
22#include "HepMC3TestUtils.h"
65 evt.set_event_number(1);
66 evt.add_attribute(
"signal_process_id", std::make_shared<IntAttribute>(20));
68 GenVertexPtr v1 = std::make_shared<GenVertex>();
70 GenParticlePtr p1 = std::make_shared<GenParticle>(
FourVector(0, 0, 7000, 7000), 2212, 3 );
71 evt.add_particle( p1 );
72 p1->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
73 p1->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
74 p1->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
75 p1->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI*2));
77 GenVertexPtr v2 = std::make_shared<GenVertex>();
79 GenParticlePtr p2 = std::make_shared<GenParticle>(
FourVector(0, 0, -7000, 7000), 2212, 3 );
80 evt.add_particle( p2 );
81 p2->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
82 p2->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
83 p2->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI*2));
84 v2->add_particle_in( p2 );
87 GenParticlePtr p3 = std::make_shared<GenParticle>(
FourVector(.750, -1.569, 32.191, 32.238),1, 3 );
88 evt.add_particle( p3 );
89 p3->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
90 p3->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
91 p3->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI*2));
92 v1->add_particle_out( p3 );
93 GenParticlePtr p4 = std::make_shared<GenParticle>(
FourVector(-3.047, -19., -54.629, 57.920),-2, 3 );
94 evt.add_particle( p4 );
95 p4->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
96 p4->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
97 p4->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI*2));
98 v2->add_particle_out( p4 );
101 GenVertexPtr v3 = std::make_shared<GenVertex>();
102 evt.add_vertex( v3 );
103 v3->add_particle_in( p3 );
104 v3->add_particle_in( p4 );
105 GenParticlePtr p6 = std::make_shared<GenParticle>(
FourVector(-3.813, 0.113, -1.833, 4.233 ), 22, 1 );
106 evt.add_particle( p6 );
107 p6->add_attribute(
"flow1", std::make_shared<IntAttribute>(231));
108 p6->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
109 p6->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI*2));
110 v3->add_particle_out( p6 );
111 GenParticlePtr p5 = std::make_shared<GenParticle>(
FourVector(1.517, -20.68, -20.605, 85.925), -24, 3 );
112 evt.add_particle( p5 );
113 p5->add_attribute(
"flow1", std::make_shared<IntAttribute>(243));
114 p5->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
115 p5->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI*2));
116 v3->add_particle_out( p5 );
119 GenVertexPtr v4 = std::make_shared<GenVertex>(
FourVector(0.12, -0.3, 0.05, 0.004));
120 evt.add_vertex( v4 );
121 v4->add_particle_in( p5 );
123 evt.add_particle( p7 );
124 v4->add_particle_out( p7 );
126 evt.add_particle( p8 );
127 v4->add_particle_out( p8 );
131 evt.add_attribute(
"signal_process_vertex", std::make_shared<IntAttribute>(v3->id()));
137 for ( GenParticlePtr ip: evt.particles()) {
142 xout1.write_event(evt);
144 xout4.write_event(evt);
149 p2->add_attribute(
"theta", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
150 p2->add_attribute(
"phi", std::make_shared<DoubleAttribute>(std::rand()/
double(RAND_MAX)*M_PI));
151 xout2.write_event(evt);
164 bool passed = ((COMPARE_ASCII_FILES(
"testPolarization1.dat",
"testPolarization5.out") == 0)&&(COMPARE_ASCII_FILES(
"testPolarization1.dat",
"testPolarization2.dat") != 0));
165 if (!passed)
return 1;
Definition of class Attribute, class IntAttribute and class StringAttribute.
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.
GenEvent I/O serialization for structured text files.