Rivet  1.8.0
RivetHepMC.hh
1 // -*- C++ -*-
2 #ifndef RIVET_RivetHepMC_HH
3 #define RIVET_RivetHepMC_HH
4 
5 #include "HepMC/GenEvent.h"
6 #include "HepMC/GenParticle.h"
7 #include "HepMC/GenVertex.h"
8 
9 #include <vector>
10 
11 namespace Rivet {
12 
13 
14  using HepMC::GenEvent;
15  using HepMC::GenParticle;
16  using HepMC::GenVertex;
17 
18 
19  inline vector<GenParticle*> particles(const GenEvent& ge) {
20  vector<GenParticle*> rtn;
21  for (GenEvent::particle_const_iterator pi = ge.particles_begin(); pi != ge.particles_end(); ++pi) {
22  rtn.push_back(*pi);
23  }
24  return rtn;
25  }
26  inline vector<GenParticle*> particles(const GenEvent* ge) {
27  assert(ge);
28  return particles(*ge);
29  }
30 // inline std::pair<GenEvent::particle_const_iterator, GenEvent::particle_const_iterator> particles(const GenEvent& ge) {
31 // return make_pair(ge.particles_begin(), ge.particles_end());
32 // }
33 // inline std::pair<GenEvent::particle_const_iterator, GenEvent::particle_const_iterator> particles(const GenEvent* ge) {
34 // assert(ge);
35 // return particles(*ge);
36 // }
37 
38 
39  inline vector<GenVertex*> vertices(const GenEvent& ge) {
40  vector<GenVertex*> rtn;
41  for (GenEvent::vertex_const_iterator vi = ge.vertices_begin(); vi != ge.vertices_end(); ++vi) {
42  rtn.push_back(*vi);
43  }
44  return rtn;
45  }
46  inline vector<GenVertex*> vertices(const GenEvent* ge) {
47  assert(ge);
48  return vertices(*ge);
49  }
50 // inline std::pair<GenEvent::vertex_const_iterator, GenEvent::vertex_const_iterator> vertices(const GenEvent& ge) {
51 // return make_pair(ge.vertices_begin(), ge.vertices_end());
52 // }
53 // inline std::pair<GenEvent::vertex_const_iterator, GenEvent::vertex_const_iterator> vertices(const GenEvent* ge) {
54 // assert(ge);
55 // return vertices(*ge);
56 // }
57 
58 
59  inline const std::pair<GenVertex::particles_in_const_iterator, GenVertex::particles_in_const_iterator> particles_in(const GenVertex* gv) {
60  return make_pair(gv->particles_in_const_begin(), gv->particles_in_const_end());
61  }
62 
63 
64  inline const std::pair<GenVertex::particles_out_const_iterator, GenVertex::particles_out_const_iterator> particles_out(const GenVertex* gv) {
65  return make_pair(gv->particles_out_const_begin(), gv->particles_out_const_end());
66  }
67 
68 
69  inline vector<GenParticle*> particles(GenVertex* gv, HepMC::IteratorRange range=HepMC::relatives) {
70  vector<GenParticle*> rtn;
71  for (GenVertex::particle_iterator pi = gv->particles_begin(range); pi != gv->particles_end(range); ++pi) {
72  rtn.push_back(*pi);
73  }
74  return rtn;
75  }
76 // inline std::pair<GenVertex::particle_iterator, GenVertex::particle_iterator> particles(GenVertex* gv, HepMC::IteratorRange range=HepMC::relatives) {
77 // return make_pair(gv->particles_begin(range), gv->particles_end(range));
78 // }
79 
80 
81 }
82 
83 #endif