20 #define M_PI 3.14159265358979323846264338327950288
22 #include "HepMC3TestUtils.h"
23 using namespace HepMC3;
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;
GenEvent I/O serialization for structured text files.
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.