source: HiSusy/trunk/hepmc/x86_64-slc5-gcc41-opt/share/HepMC/examples/example_BuildEventFromScratch.cc @ 1

Last change on this file since 1 was 1, checked in by zerwas, 11 years ago

first import of structure, PYTHIA8 and DELPHES

File size: 4.1 KB
Line 
1//////////////////////////////////////////////////////////////////////////
2// Matt.Dobbs@Cern.CH, Feb 2000
3// Example of building an event and a particle data table from scratch
4// This is meant to be of use for persons implementing HepMC inside a MC
5// event generator
6//////////////////////////////////////////////////////////////////////////
7// To Compile: go to the HepMC directory and type:
8// gmake examples/example_BuildEventFromScratch.exe
9//
10
11#include <iostream>
12
13#include "HepMC/GenEvent.h"
14
15// in this example we use the HepMC namespace, so that we do not have to
16// precede all HepMC classes with HepMC::
17
18// This example also shows how to use the CLHEP Lorentz vector with HepMC2
19
20using namespace HepMC;
21
22int main() {
23    //
24    // In this example we will place the following event into HepMC "by hand"
25    //
26    //     name status pdg_id  parent Px       Py    Pz       Energy      Mass
27    //  1  !p+!    3   2212    0,0    0.000    0.000 7000.000 7000.000    0.938
28    //  2  !p+!    3   2212    0,0    0.000    0.000-7000.000 7000.000    0.938
29    //=========================================================================
30    //  3  !d!     3      1    1,1    0.750   -1.569   32.191   32.238    0.000
31    //  4  !u~!    3     -2    2,2   -3.047  -19.000  -54.629   57.920    0.000
32    //  5  !W-!    3    -24    1,2    1.517   -20.68  -20.605   85.925   80.799
33    //  6  !gamma! 1     22    1,2   -3.813    0.113   -1.833    4.233    0.000
34    //  7  !d!     1      1    5,5   -2.445   28.816    6.082   29.552    0.010
35    //  8  !u~!    1     -2    5,5    3.962  -49.498  -26.687   56.373    0.006
36
37    // now we build the graph, which will look like
38    //                       p7                         #
39    // p1                   /                           #
40    //   \v1__p3      p5---v4                           #
41    //         \_v3_/       \                           #
42    //         /    \        p8                         #
43    //    v2__p4     \                                  #
44    //   /            p6                                #
45    // p2                                               #
46    //                                                  #
47
48    // First create the event container, with Signal Process 20, event number 1
49    //
50    GenEvent* evt = new GenEvent( 20, 1 );
51    // define the units
52    evt->use_units(HepMC::Units::GEV, HepMC::Units::MM);
53    //
54    // create vertex 1 and vertex 2, together with their inparticles
55    GenVertex* v1 = new GenVertex();
56    evt->add_vertex( v1 );
57    v1->add_particle_in( new GenParticle( FourVector(0,0,7000,7000),
58                                       2212, 3 ) );
59    GenVertex* v2 = new GenVertex();
60    evt->add_vertex( v2 );
61    v2->add_particle_in( new GenParticle( FourVector(0,0,-7000,7000),
62                                       2212, 3 ) );
63    //
64    // create the outgoing particles of v1 and v2
65    GenParticle* p3 = 
66        new GenParticle( FourVector(.750,-1.569,32.191,32.238), 1, 3 );
67    v1->add_particle_out( p3 );
68    GenParticle* p4 = 
69        new GenParticle( FourVector(-3.047,-19.,-54.629,57.920), -2, 3 );
70    v2->add_particle_out( p4 );
71    //
72    // create v3
73    GenVertex* v3 = new GenVertex();
74    evt->add_vertex( v3 );
75    v3->add_particle_in( p3 );
76    v3->add_particle_in( p4 );
77    v3->add_particle_out( 
78        new GenParticle( FourVector(-3.813,0.113,-1.833,4.233 ), 22, 1 )
79        );
80    GenParticle* p5 = 
81        new GenParticle( FourVector(1.517,-20.68,-20.605,85.925), -24,3);
82    v3->add_particle_out( p5 );
83    //
84    // create v4
85    GenVertex* v4 = new GenVertex(FourVector(0.12,-0.3,0.05,0.004));
86    evt->add_vertex( v4 );
87    v4->add_particle_in( p5 );
88    v4->add_particle_out( 
89        new GenParticle( FourVector(-2.445,28.816,6.082,29.552), 1,1 )
90        );
91    v4->add_particle_out( 
92        new GenParticle( FourVector(3.962,-49.498,-26.687,56.373), -2,1 )
93        );
94    //   
95    // tell the event which vertex is the signal process vertex
96    evt->set_signal_process_vertex( v3 );
97    // the event is complete, we now print it out to the screen
98    evt->print();
99
100    // now clean-up by deleteing all objects from memory
101    //
102    // deleting the event deletes all contained vertices, and all particles
103    // contained in those vertices
104    delete evt;
105
106    return 0;
107}
Note: See TracBrowser for help on using the repository browser.