ThePEG  1.8.0
HepMCConverter.h
1 // -*- C++ -*-
2 //
3 // HepMCConverter.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef ThePEG_HepMCConverter_H
10 #define ThePEG_HepMCConverter_H
11 // This is the declaration of the HepMCConverter class.
12 
13 #include "ThePEG/Config/ThePEG.h"
14 #include "ThePEG/EventRecord/Event.h"
15 #include "HepMCTraits.h"
16 
17 namespace ThePEG {
18 
19 
31 template <typename HepMCEventT, typename Traits = HepMCTraits<HepMCEventT> >
33 
34 public:
35 
38  struct HepMCConverterException: public Exception {};
45  struct Vertex {
50  };
51 
53  typedef typename Traits::ParticleT GenParticle;
55  typedef typename Traits::EventT GenEvent;
57  typedef typename Traits::VertexT GenVertex;
59  typedef typename Traits::PdfInfoT PdfInfo;
61  typedef map<tcPPtr,GenParticle*> ParticleMap;
63  typedef map<tcColinePtr,long> FlowMap;
65  typedef map<tcPPtr,Vertex*> VertexMap;
67  typedef map<const Vertex *, GenVertex*> GenVertexMap;
68 
69 public:
70 
80  static GenEvent * convert(const Event & ev, bool nocopies = false,
81  Energy eunit = Traits::defaultEnergyUnit(),
82  Length lunit = Traits::defaultLengthUnit());
83 
93  static void
94  convert(const Event & ev, GenEvent & gev, bool nocopies,
95  Energy eunit, Length lunit);
96 
106  static void
107  convert(const Event & ev, GenEvent & gev, bool nocopies = false);
108 
109 private:
110 
115  HepMCConverter(const Event & ev, bool nocopies, Energy eunit, Length lunit);
116 
121  HepMCConverter(const Event & ev, GenEvent & gev, bool nocopies,
122  Energy eunit, Length lunit);
123 
127  void init(const Event & ev, bool nocopies);
128 
132  HepMCConverter();
133 
138 
143 
144 private:
145 
149  GenParticle * createParticle(tcPPtr p) const;
150 
155  void join(tcPPtr parent, tcPPtr child);
156 
160  GenVertex * createVertex(Vertex * v);
161 
165  void setPdfInfo(const Event & e);
166 
167 private:
168 
172  GenEvent * geneve;
173 
178  ParticleMap pmap;
179 
184  FlowMap flowmap;
185 
189  vector<Vertex> vertices;
190 
194  VertexMap prov;
195 
199  VertexMap decv;
200 
204  GenVertexMap vmap;
205 
210 
215 
216 };
217 
218 }
219 
220 #include "HepMCConverter.tcc"
221 
222 #endif /* ThePEG_HepMCConverter_H */
Traits::PdfInfoT PdfInfo
Forward typedefs from Traits class.
map< tcColinePtr, long > FlowMap
Map ThePEG colour lines to HepMC colour indices.
GenVertexMap vmap
The mapping between temporary vertices and the created GenVertex Objects.
The HepMCConverter defines only one public static function which converts a ThePEG::Event object to a...
void join(tcPPtr parent, tcPPtr child)
Join the decay vertex of the parent with the decay vertex of the child.
static GenEvent * convert(const Event &ev, bool nocopies=false, Energy eunit=Traits::defaultEnergyUnit(), Length lunit=Traits::defaultLengthUnit())
Convert a ThePEG::Event to a HepMC::GenEvent.
The Event class contains all Particles produced in the generation of an event.
Definition: Event.h:36
GenVertex * createVertex(Vertex *v)
Create a GenVertex from a temporary Vertex.
GenEvent * geneve
The constructed GenEvent.
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:681
VertexMap prov
The mapping of particles to their production vertices.
GenParticle * createParticle(tcPPtr p) const
Create a GenParticle from a ThePEG Particle.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
ParticleMap pmap
The translation table between the ThePEG particles and the GenParticles.
set< tcPPtr, less< tcPPtr > > tcParticleSet
A set of transient pointers to const Particle.
Definition: EventConfig.h:80
Traits::EventT GenEvent
Forward typedefs from Traits class.
tcParticleSet in
Particles going in to the vertex.
FlowMap flowmap
The translation table between ThePEG ColourLine objects and HepMC Flow indices.
VertexMap decv
The mapping of particles to their decy vertices.
Help class to represent a temporary vertex which can be converted to a GenVertex. ...
QTY< 0, 1, 0 >::Type Energy
Energy.
Definition: Unitsystem.h:34
HepMCConverter()
Default constructor is unimplemented and private and should never be used.
HepMCConverter & operator=(const HepMCConverter &)
Assignment is unimplemented and private and should never be used.
QTY< 1, 0, 0 >::Type Length
Length.
Definition: Unitsystem.h:40
map< tcPPtr, Vertex * > VertexMap
Map ThePEG particles to vertices.
vector< Vertex > vertices
All temporary vertices created.
void setPdfInfo(const Event &e)
Create and set a PdfInfo object for the event.
Exception is the base class for all exceptions to be used in ThePEG.
Definition: Exception.h:44
void init(const Event &ev, bool nocopies)
Common init function used by the constructors.
map< tcPPtr, GenParticle * > ParticleMap
Map ThePEG particles to HepMC particles.
tcParticleSet out
Particles going out of the vertex.
map< const Vertex *, GenVertex * > GenVertexMap
Map vertices to GenVertex.
Traits::ParticleT GenParticle
Forward typedefs from Traits class.
Length lengthUnit
The length unit to be used in the GenEvent.
Traits::VertexT GenVertex
Forward typedefs from Traits class.
Energy energyUnit
The energy unit to be used in the GenEvent.