herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
17namespace Herwig {
18
19using namespace ThePEG;
20
29
30public:
31
36
37public:
38
42 virtual double generateTwoToNKinematics(const double*,
43 vector<Lorentz5Momentum>& momenta);
44
49 virtual int nDimPhasespace(int nFinal) const {
50 if ( nFinal == 1 )
51 return 3;
52 return 3*nFinal - 2;
53 }
54
55public:
56
61 virtual bool haveX1X2() const { return true; }
62
67 virtual bool wantCMS() const { return false; }
68
73 virtual double invertTwoToNKinematics(const vector<Lorentz5Momentum>& momenta,
74 double* r) const;
75
76private:
77
83
84public:
85
93
99 void persistentInput(PersistentIStream & is, int version);
101
108 static void Init();
109
110protected:
111
118 virtual IBPtr clone() const;
119
124 virtual IBPtr fullclone() const;
126
127
128// If needed, insert declarations of virtual function defined in the
129// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
130
131
132private:
133
139
140};
141
142}
143
144#endif /* Herwig_FlatInvertiblePhasespace_H */
FlatInvertibleLabframePhasespace implements flat, invertible phase space generation in the lab frame.
static void Init()
The standard Init function used to initialize the interfaces.
bool theLogSHat
True if SHat should be generated flat in log(SHat/S), false if SHat should be generated flat in SHat.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
FlatInvertibleLabframePhasespace & operator=(const FlatInvertibleLabframePhasespace &)=delete
The assignment operator is private and must never be called.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual double invertTwoToNKinematics(const vector< Lorentz5Momentum > &momenta, double *r) const
Invert the given phase space point to the random numbers which would have generated it.
FlatInvertibleLabframePhasespace()
The default constructor.
virtual double generateTwoToNKinematics(const double *, vector< Lorentz5Momentum > &momenta)
Generate a phase space point and return its weight.
virtual bool wantCMS() const
Return true, if this phase space generator expects the incoming partons in their center-of-mass syste...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual int nDimPhasespace(int nFinal) const
Return the number of random numbers required to produce a given multiplicity final state.
virtual bool haveX1X2() const
Return true, if this phasespace generator will generate incoming partons itself.
FlatInvertiblePhasespace implements flat, invertible phase space generation.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr