herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
TreePhasespace.h
1// -*- C++ -*-
2//
3// TreePhasespace.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4// Copyright (C) 2002-2019 The Herwig Collaboration
5//
6// Herwig 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 Herwig_TreePhasespace_H
10#define Herwig_TreePhasespace_H
11//
12// This is the declaration of the TreePhasespace class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h"
16#include "Herwig/MatrixElement/Matchbox/Phasespace/TreePhasespaceChannels.h"
17
18namespace Herwig {
19
20using namespace ThePEG;
21
34
35public:
36
41
42public:
43
47 virtual void setXComb(tStdXCombPtr);
48
52 virtual double generateTwoToNKinematics(const double*,
53 vector<Lorentz5Momentum>& momenta);
54
59 virtual int nDimPhasespace(int nFinal) const {
60 if ( nFinal == 1 )
61 return 1;
62 return 3*(nFinal - 1); // one additional number needed for channel selection
63 }
64
65public:
66
74
80 void persistentInput(PersistentIStream & is, int version);
82
89 static void Init();
90
91protected:
92
99 virtual IBPtr clone() const;
100
105 virtual IBPtr fullclone() const;
107
108
109// If needed, insert declarations of virtual function defined in the
110// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
111
112
113protected:
114
122 virtual void doinit();
123
128 virtual void doinitrun();
130
131
132private:
133
137 Ptr<TreePhasespaceChannels>::ptr theChannelMap;
138
142 map<tStdXCombPtr,
143 map<Ptr<Tree2toNDiagram>::ptr,
144 pair <PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree> > >&
145 channelMap() { return theChannelMap->channelMap(); }
146
150 map<tStdXCombPtr,
151 map<Ptr<Tree2toNDiagram>::ptr,
152 pair <PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree> > >::iterator
154
159
164 double x0;
165
170 double xc;
171
176 Energy M0;
177
182 Energy Mc;
183
188
192 map<Ptr<Tree2toNDiagram>::ptr,
193 pair <PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree> >& lastChannels() {
194 return lastChannelsIterator->second;
195 }
196
197private:
198
204
205};
206
207}
208
209#endif /* Herwig_TreePhasespace_H */
MatchboxPhasespace defines an abstract interface to a phase space generator.
TreePhasespace is a multi-channel phase space generator adapting to singularity structures as determi...
static void Init()
The standard Init function used to initialize the interfaces.
PhasespaceHelpers::PhasespaceInfo lastPhasespaceInfo
The phase space info object to be used.
virtual int nDimPhasespace(int nFinal) const
Return the number of random numbers required to produce a given multiplicity final state.
Energy M0
Parameter steering from which on propagator virtualities are sampled flat.
Ptr< TreePhasespaceChannels >::ptr theChannelMap
The object storing channel maps.
Energy Mc
Parameter steering at which virtuality singularities of propagators are actually cut off.
bool theIncludeMirrored
Choose whether to also use mirrored phase space generation.
virtual IBPtr clone() const
Make a simple clone of this object.
TreePhasespace()
The default constructor.
map< tStdXCombPtr, map< Ptr< Tree2toNDiagram >::ptr, pair< PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree > > > & channelMap()
Map xcomb's to channel vectors indexed by diagram id.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual void doinitrun()
Initialize this object.
TreePhasespace & operator=(const TreePhasespace &)=delete
The assignment operator is private and must never be called.
double x0
Parameter steering from which on propagator virtualities are sampled flat.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double xc
Parameter steering at which virtuality singularities of propagators are actually cut off.
virtual void setXComb(tStdXCombPtr)
Prepare a phase space generator for the given xcomb object.
virtual double generateTwoToNKinematics(const double *, vector< Lorentz5Momentum > &momenta)
Generate a phase space point and return its weight.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
map< Ptr< Tree2toNDiagram >::ptr, pair< PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree > > & lastChannels()
Return the currently active channels.
map< tStdXCombPtr, map< Ptr< Tree2toNDiagram >::ptr, pair< PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree > > >::iterator lastChannelsIterator
The currently active channels.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
General information for phase space generation.