hepmc - Diff between revs 43 and 67
Subversion Repositories:
| Rev 43 | Rev 67 | |||
|---|---|---|---|---|
| Line 6... | Line 6... | |||
| 6 | ////////////////////////////////////////////////////////////////////////// | 6 | ////////////////////////////////////////////////////////////////////////// | |
| 7 | // To Compile: go to the HepMC directory and type: | 7 | // To Compile: go to the HepMC directory and type: | |
| 8 | // gmake examples/example_BuildEventFromScratch.exe | 8 | // gmake examples/example_BuildEventFromScratch.exe | |
| 9 | // | 9 | // | |
| 10 | 10 | |||
| - | 11 | #include <iostream> | ||
| - | 12 | |||
| - | 13 | #include "VectorConversion.h" | ||
| 11 | #include "HepMC/GenEvent.h" | 14 | #include "HepMC/GenEvent.h" | |
| 12 | #include "HepMC/ParticleDataTable.h" | 15 | #include "HepMC/ParticleDataTable.h" | |
| 13 | #include "CLHEP/Vector/LorentzVector.h" | 16 | #include "CLHEP/Vector/LorentzVector.h" | |
| 14 | 17 | |||
| 15 | // in this example we use the HepMC namespace, so that we do not have to | 18 | // in this example we use the HepMC namespace, so that we do not have to | |
| 16 | // precede all HepMC classes with HepMC:: | 19 | // precede all HepMC classes with HepMC:: | |
| - | 20 | |||
| - | 21 | // This example also shows how to use the CLHEP Lorentz vector with HepMC2 | ||
| 17 | 22 | |||
| 18 | using namespace HepMC; | 23 | using namespace HepMC; | |
| 19 | using namespace CLHEP; | 24 | using namespace CLHEP; | |
| 20 | 25 | |||
| 21 | int main() { | 26 | int main() { | |
| Line 57... | Line 62... | |||
| 57 | // / p6 | 62 | // / p6 | |
| 58 | // p2 | 63 | // p2 | |
| 59 | // | 64 | // | |
| 60 | 65 | |||
| 61 | // First create the event container, with Signal Process 20, event number 1 | 66 | // First create the event container, with Signal Process 20, event number 1 | |
| - | 67 | // | ||
| - | 68 | // Note that the HepLorentzVectors will be automatically converted to | ||
| - | 69 | // HepMC::FourVector within GenParticle and GenVertex | ||
| 62 | GenEvent* evt = new GenEvent( 20, 1 ); | 70 | GenEvent* evt = new GenEvent( 20, 1 ); | |
| 63 | // | 71 | // | |
| 64 | // create vertex 1 and vertex 2, together with their inparticles | 72 | // create vertex 1 and vertex 2, together with their inparticles | |
| 65 | GenVertex* v1 = new GenVertex(); | 73 | GenVertex* v1 = new GenVertex(); | |
| 66 | evt->add_vertex( v1 ); | 74 | evt->add_vertex( v1 ); | |
| Line 90... | Line 98... | |||
| 90 | GenParticle* p5 = | 98 | GenParticle* p5 = | |
| 91 | new GenParticle( HepLorentzVector(1.517,-20.68,-20.605,85.925), -24,3); | 99 | new GenParticle( HepLorentzVector(1.517,-20.68,-20.605,85.925), -24,3); | |
| 92 | v3->add_particle_out( p5 ); | 100 | v3->add_particle_out( p5 ); | |
| 93 | // | 101 | // | |
| 94 | // create v4 | 102 | // create v4 | |
| 95 | GenVertex* v4 = new GenVertex(); | - | ||
| - | 103 | GenVertex* v4 = new GenVertex(HepLorentzVector(0.12,-0.3,0.05,0.004)); | ||
| 96 | evt->add_vertex( v4 ); | 104 | evt->add_vertex( v4 ); | |
| 97 | v4->add_particle_in( p5 ); | 105 | v4->add_particle_in( p5 ); | |
| 98 | v4->add_particle_out( | 106 | v4->add_particle_out( | |
| 99 | new GenParticle( HepLorentzVector(-2.445,28.816,6.082,29.552), 1,1 ) | 107 | new GenParticle( HepLorentzVector(-2.445,28.816,6.082,29.552), 1,1 ) | |
| 100 | ); | 108 | ); | |
| Line 104... | Line 112... | |||
| 104 | // | 112 | // | |
| 105 | // tell the event which vertex is the signal process vertex | 113 | // tell the event which vertex is the signal process vertex | |
| 106 | evt->set_signal_process_vertex( v3 ); | 114 | evt->set_signal_process_vertex( v3 ); | |
| 107 | // the event is complete, we now print it out to the screen | 115 | // the event is complete, we now print it out to the screen | |
| 108 | evt->print(); | 116 | evt->print(); | |
| - | 117 | |||
| - | 118 | // example conversion back to Lorentz vector | ||
| - | 119 | // add all outgoing momenta | ||
| - | 120 | std::cout << std::endl; | ||
| - | 121 | std::cout << " Add output momenta " << std::endl; | ||
| - | 122 | HepLorentzVector sum; | ||
| - | 123 | for ( GenEvent::particle_const_iterator p = evt->particles_begin(); | ||
| - | 124 | p != evt->particles_end(); ++p ){ | ||
| - | 125 | if( (*p)->status() == 1 ) { | ||
| - | 126 | sum += SVtoLV( (*p)->momentum() ); | ||
| - | 127 | (*p)->print(); | ||
| - | 128 | } | ||
| - | 129 | } | ||
| - | 130 | std::cout << "Vector Sum: " << sum << std::endl; | ||
| 109 | 131 | |||
| 110 | // now clean-up by deleteing all objects from memory | 132 | // now clean-up by deleteing all objects from memory | |
| 111 | // | 133 | // | |
| 112 | // deleting the event deletes all contained vertices, and all particles | 134 | // deleting the event deletes all contained vertices, and all particles | |
| 113 | // contained in those vertices | 135 | // contained in those vertices | |
