herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
FlatInvertibleLabframePhasespace.h
1 // -*- C++ -*-
2 //
3 // FlatInvertiblePhasespaceLabFrame.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_FlatInvertibleLabframePhasespace_H
10 #define Herwig_FlatInvertibleLabframePhasespace_H
11 //
12 // This is the declaration of the FlatInvertibleLabframePhasespace class.
13 //
14 
15 #include "Herwig/MatrixElement/Matchbox/Phasespace/FlatInvertiblePhasespace.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
29 
30 public:
31 
38 
44 
45 public:
46 
50  virtual double generateTwoToNKinematics(const double*,
51  vector<Lorentz5Momentum>& momenta);
52 
57  virtual int nDimPhasespace(int nFinal) const {
58  if ( nFinal == 1 )
59  return 3;
60  return 3*nFinal - 2;
61  }
62 
63 public:
64 
69  virtual bool haveX1X2() const { return true; }
70 
75  virtual bool wantCMS() const { return false; }
76 
81  virtual double invertTwoToNKinematics(const vector<Lorentz5Momentum>& momenta,
82  double* r) const;
83 
84 private:
85 
90  bool theLogSHat;
91 
92 public:
93 
100  void persistentOutput(PersistentOStream & os) const;
101 
107  void persistentInput(PersistentIStream & is, int version);
109 
116  static void Init();
117 
118 protected:
119 
126  virtual IBPtr clone() const;
127 
132  virtual IBPtr fullclone() const;
134 
135 
136 // If needed, insert declarations of virtual function defined in the
137 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
138 
139 
140 private:
141 
147 
148 };
149 
150 }
151 
152 #endif /* Herwig_FlatInvertiblePhasespace_H */
FlatInvertibleLabframePhasespace implements flat, invertible phase space generation in the lab frame...
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual int nDimPhasespace(int nFinal) const
Return the number of random numbers required to produce a given multiplicity final state...
FlatInvertiblePhasespace implements flat, invertible phase space generation.
virtual bool haveX1X2() const
Return true, if this phasespace generator will generate incoming partons itself.
bool theLogSHat
True if SHat should be generated flat in log(SHat/S), false if SHat should be generated flat in SHat...
virtual bool wantCMS() const
Return true, if this phase space generator expects the incoming partons in their center-of-mass syste...
-*- C++ -*-