HepMC3 event record library
SimpleEventTool.cc
1 // -*- C++ -*-
2 //
3 // This file is part of HepMC
4 // Copyright (C) 2014-2019 The HepMC collaboration (see AUTHORS for details)
5 //
6 #include "SimpleEventTool.h"
7 
9  // Create some four vectors for the electrons
10  double ele_mass_sqr = 0.000511*0.000511;
11  FourVector momentum_e1;
12  FourVector momentum_e2;
13 
14  momentum_e1.setPz( -2);
15  momentum_e2.setPz(3.5);
16 
17  momentum_e1.setE(sqrt(momentum_e1.pz()*momentum_e1.pz()+ele_mass_sqr));
18  momentum_e2.setE(sqrt(momentum_e2.pz()*momentum_e2.pz()+ele_mass_sqr));
19 
20  FourVector momentum_tau1(+1.38605041e+00,+1.38605041e+00,+7.50000000e-01,+2.75000005e+00);
21  FourVector momentum_tau2(-1.38605041e+00,-1.38605041e+00,+7.50000000e-01,+2.75000005e+00);
22 
23  // Make particles
24  HEPMC2CODE(
25  GenParticle *e1 = new GenParticle( momentum_e1, -11, 2 );
26  GenParticle *e2 = new GenParticle( momentum_e2, 11, 2 );
27  GenParticle *tau1 = new GenParticle( momentum_tau1, -15, 1 );
28  GenParticle *tau2 = new GenParticle( momentum_tau2, 15, 1 );
29  GenVertex *vertex = new GenVertex();
30  )
31  HEPMC3CODE(
32  // Although the code for HepMC2 would work (thanks to backward compatibility)
33  // we don't want to use deprecated functions
34  GenParticlePtr e1 = std::make_shared<GenParticle>( momentum_e1, -11, 2 );
35  GenParticlePtr e2 = std::make_shared<GenParticle>( momentum_e2, 11, 2 );
36  GenParticlePtr tau1 = std::make_shared<GenParticle>( momentum_tau1, -15, 1 );
37  GenParticlePtr tau2 = std::make_shared<GenParticle>( momentum_tau2, 15, 1 );
38  GenVertexPtr vertex = std::make_shared<GenVertex>();
39  )
40 
41  // Set masses
42  e1-> set_generated_mass(0.000511);
43  e2-> set_generated_mass(0.000511);
44  tau1->set_generated_mass(1.777);
45  tau2->set_generated_mass(1.777);
46 
47  // Make vertex
48  vertex->add_particle_in(e1);
49  vertex->add_particle_in(e2);
50  vertex->add_particle_out(tau1);
51  vertex->add_particle_out(tau2);
52 
53  hepmc.add_vertex(vertex);
54  return 0;
55 }
void add_vertex(GenVertexPtr v)
Add vertex.
Definition: GenEvent.cc:97
int process(GenEvent &hepmc)
Process event.
Stores vertex-related information.
Definition: GenVertex.h:26
Stores particle-related information.
Definition: GenParticle.h:31
Stores event-related information.
Definition: GenEvent.h:41
Generic 4-vector.
Definition: FourVector.h:35
void setPz(double pzz)
Definition: FourVector.h:127
double pz() const
z-component of momentum
Definition: FourVector.h:123
void setE(double ee)
Definition: FourVector.h:134