thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
HepMCConverter.h
1// -*- C++ -*-
2//
3// HepMCConverter.h is a part of ThePEG - Toolkit for HEP Event Generation
4// Copyright (C) 1999-2019 Leif Lonnblad
5//
6// ThePEG is licenced under version 3 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
14#include "ThePEG/EventRecord/Event.h"
15#include "HepMCTraits.h"
16
17namespace ThePEG {
18
19
31template <typename HepMCEventT, typename Traits = HepMCTraits<HepMCEventT> >
33
34public:
35
38 struct HepMCConverterException: public Exception {};
45 struct Vertex {
50 };
51
53 typedef typename Traits::ParticleT GenParticle;
55 typedef typename Traits::ParticlePtrT GenParticlePtrT;
57 typedef typename Traits::EventT GenEvent;
59 typedef typename Traits::VertexT GenVertex;
61 typedef typename Traits::VertexPtrT GenVertexPtrT;
63 typedef typename Traits::PdfInfoT PdfInfo;
65 typedef map<tcPPtr,GenParticlePtrT> ParticleMap;
67 typedef map<tcColinePtr,long> FlowMap;
69 typedef map<tcPPtr,Vertex*> VertexMap;
71 typedef map<const Vertex *, GenVertexPtrT> GenVertexMap;
72
73public:
74
84 static GenEvent * convert(const Event & ev, bool nocopies = false,
85 Energy eunit = Traits::defaultEnergyUnit(),
86 Length lunit = Traits::defaultLengthUnit());
87
97 static void
98 convert(const Event & ev, GenEvent & gev, bool nocopies,
99 Energy eunit, Length lunit);
100
110 static void
111 convert(const Event & ev, GenEvent & gev, bool nocopies = false);
112
113private:
114
119 HepMCConverter(const Event & ev, bool nocopies, Energy eunit, Length lunit);
120
125 HepMCConverter(const Event & ev, GenEvent & gev, bool nocopies,
126 Energy eunit, Length lunit);
127
131 void init(const Event & ev, bool nocopies);
132
137
142
147
148private:
149
154
159 void join(tcPPtr parent, tcPPtr child);
160
165
169 void setPdfInfo(const Event & e);
170
171private:
172
177
183
189
193 vector<Vertex> vertices;
194
199
204
209
214
219
220};
221
222}
223
224#include "HepMCConverter.tcc"
225
226#endif /* ThePEG_HepMCConverter_H */
This is the main config header file for ThePEG.
The Event class contains all Particles produced in the generation of an event.
Definition: Event.h:37
Exception is the base class for all exceptions to be used in ThePEG.
Definition: Exception.h:44
The HepMCConverter defines only one public static function which converts a ThePEG::Event object to a...
Traits::EventT GenEvent
Forward typedefs from Traits class.
map< tcColinePtr, long > FlowMap
Map ThePEG colour lines to HepMC colour indices.
FlowMap flowmap
The translation table between ThePEG ColourLine objects and HepMC Flow indices.
map< tcPPtr, GenParticlePtrT > ParticleMap
Map ThePEG particles to HepMC particles.
VertexMap decv
The mapping of particles to their decy vertices.
HepMCConverter()
Default constructor is unimplemented and private and should never be used.
void init(const Event &ev, bool nocopies)
Common init function used by the constructors.
VertexMap prov
The mapping of particles to their production vertices.
map< const Vertex *, GenVertexPtrT > GenVertexMap
Map vertices to GenVertex.
HepMCConverter(const Event &ev, GenEvent &gev, bool nocopies, Energy eunit, Length lunit)
The proper constructors are private.
void join(tcPPtr parent, tcPPtr child)
Join the decay vertex of the parent with the decay vertex of the child.
Traits::VertexPtrT GenVertexPtrT
Forward typedefs from Traits class.
GenVertexPtrT createVertex(Vertex *v)
Create a GenVertex from a temporary Vertex.
HepMCConverter(const HepMCConverter &)
Copy constructor is unimplemented and private and should never be used.
void setPdfInfo(const Event &e)
Create and set a PdfInfo object for the event.
GenParticlePtrT createParticle(tcPPtr p) const
Create a GenParticle from a ThePEG Particle.
Traits::VertexT GenVertex
Forward typedefs from Traits class.
static void convert(const Event &ev, GenEvent &gev, bool nocopies=false)
Convert a ThePEG::Event to a HepMC::GenEvent.
Traits::ParticleT GenParticle
Forward typedefs from Traits class.
static void convert(const Event &ev, GenEvent &gev, bool nocopies, Energy eunit, Length lunit)
Convert a ThePEG::Event to a HepMC::GenEvent.
Length lengthUnit
The length unit to be used in the GenEvent.
Traits::PdfInfoT PdfInfo
Forward typedefs from Traits class.
ParticleMap pmap
The translation table between the ThePEG particles and the GenParticles.
Traits::ParticlePtrT GenParticlePtrT
Forward typedefs from Traits class.
GenVertexMap vmap
The mapping between temporary vertices and the created GenVertex Objects.
HepMCConverter & operator=(const HepMCConverter &)=delete
Assignment is unimplemented and private and should never be used.
HepMCConverter(const Event &ev, bool nocopies, Energy eunit, Length lunit)
The proper constructors are private.
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.
Energy energyUnit
The energy unit to be used in the GenEvent.
GenEvent * geneve
The constructed GenEvent.
map< tcPPtr, Vertex * > VertexMap
Map ThePEG particles to vertices.
vector< Vertex > vertices
All temporary vertices created.
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
set< tcPPtr, less< tcPPtr > > tcParticleSet
A set of transient pointers to const Particle.
Definition: EventConfig.h:80
Help class to represent a temporary vertex which can be converted to a GenVertex.
tcParticleSet out
Particles going out of the vertex.
tcParticleSet in
Particles going in to the vertex.