herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
18 namespace Herwig {
19 
20 using namespace ThePEG;
21 
34 
35 public:
36 
43 
47  virtual ~TreePhasespace();
49 
50 public:
51 
55  virtual void setXComb(tStdXCombPtr);
56 
60  virtual double generateTwoToNKinematics(const double*,
61  vector<Lorentz5Momentum>& momenta);
62 
67  virtual int nDimPhasespace(int nFinal) const {
68  if ( nFinal == 1 )
69  return 1;
70  return 3*(nFinal - 1); // one additional number needed for channel selection
71  }
72 
73 public:
74 
81  void persistentOutput(PersistentOStream & os) const;
82 
88  void persistentInput(PersistentIStream & is, int version);
90 
97  static void Init();
98 
99 protected:
100 
107  virtual IBPtr clone() const;
108 
113  virtual IBPtr fullclone() const;
115 
116 
117 // If needed, insert declarations of virtual function defined in the
118 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
119 
120 
121 protected:
122 
130  virtual void doinit();
131 
136  virtual void doinitrun();
138 
139 
140 private:
141 
145  Ptr<TreePhasespaceChannels>::ptr theChannelMap;
146 
150  map<tStdXCombPtr,
151  map<Ptr<Tree2toNDiagram>::ptr,
152  pair <PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree> > >&
153  channelMap() { return theChannelMap->channelMap(); }
154 
158  map<tStdXCombPtr,
159  map<Ptr<Tree2toNDiagram>::ptr,
160  pair <PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree> > >::iterator
162 
167 
172  double x0;
173 
178  double xc;
179 
184  Energy M0;
185 
190  Energy Mc;
191 
196 
200  map<Ptr<Tree2toNDiagram>::ptr,
201  pair <PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree> >& lastChannels() {
202  return lastChannelsIterator->second;
203  }
204 
205 private:
206 
211  TreePhasespace & operator=(const TreePhasespace &) = delete;
212 
213 };
214 
215 }
216 
217 #endif /* Herwig_TreePhasespace_H */
Energy M0
Parameter steering from which on propagator virtualities are sampled flat.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
MatchboxPhasespace defines an abstract interface to a phase space generator.
General information for phase space generation.
Energy Mc
Parameter steering at which virtuality singularities of propagators are actually cut off...
map< tStdXCombPtr, map< Ptr< Tree2toNDiagram >::ptr, pair< PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree > > > & channelMap()
Map xcomb&#39;s to channel vectors indexed by diagram id.
Ptr< TreePhasespaceChannels >::ptr theChannelMap
The object storing channel maps.
double x0
Parameter steering from which on propagator virtualities are sampled flat.
PhasespaceHelpers::PhasespaceInfo lastPhasespaceInfo
The phase space info object to be used.
double xc
Parameter steering at which virtuality singularities of propagators are actually cut off...
TreePhasespace is a multi-channel phase space generator adapting to singularity structures as determi...
-*- C++ -*-
bool theIncludeMirrored
Choose whether to also use mirrored phase space generation.
map< tStdXCombPtr, map< Ptr< Tree2toNDiagram >::ptr, pair< PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree > > >::iterator lastChannelsIterator
The currently active channels.
virtual int nDimPhasespace(int nFinal) const
Return the number of random numbers required to produce a given multiplicity final state...
map< Ptr< Tree2toNDiagram >::ptr, pair< PhasespaceHelpers::PhasespaceTree, PhasespaceHelpers::PhasespaceTree > > & lastChannels()
Return the currently active channels.