herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
VBFNLOPhasespace.h
1// -*- C++ -*-
2//
3// VBFNLOPhasespace.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_VBFNLOPhasespace_H
10#define Herwig_VBFNLOPhasespace_H
11//
12// This is the declaration of the VBFNLOPhasespace class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h"
16
17namespace Herwig {
18
19using namespace ThePEG;
20
33
34public:
35
42
48
49public:
50
54 virtual void setXComb(tStdXCombPtr);
55
59 virtual double generateTwoToNKinematics(const double*,
60 vector<Lorentz5Momentum>& momenta);
61
65 virtual double generateKinematics(const double* random,
66 vector<Lorentz5Momentum>& momenta) {
67 return generateTwoToNKinematics(random,momenta);
68 }
69
74 virtual int nDimPhasespace(int nFinal) const;
75
80 virtual bool haveX1X2() const { return true; }
81
86 virtual bool wantCMS() const { return false; }
87
91 virtual bool isInvertible() const { return false; }
92
93
94public:
95
103
109 void persistentInput(PersistentIStream & is, int version);
111
118 static void Init();
119
120protected:
121
128 virtual IBPtr clone() const;
129
134 virtual IBPtr fullclone() const;
136
137
138// If needed, insert declarations of virtual function defined in the
139// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
140
141
142protected:
143
151 virtual void doinit();
152
157 virtual void doinitrun();
159
160
161private:
162
167 Energy lastSqrtS;
168
169private:
170
176
181
182protected:
183
188
193
199
200 typedef double ArgType;
201 typedef Energy ValType;
202
203 static double aUnit() { return 1.; }
204 static Energy vUnit() { return 1.*GeV; }
205
206 Energy operator() (double xi) const;
207
208 Energy w;
209 cPDVector::const_iterator dataBegin;
210 cPDVector::const_iterator dataEnd;
211 vector<Lorentz5Momentum>::const_iterator momentaBegin;
212 vector<Lorentz5Momentum>::const_iterator momentaEnd;
213
214 ReshuffleEquation(Energy q,
215 cPDVector::const_iterator dBegin,
216 cPDVector::const_iterator dEnd,
217 vector<Lorentz5Momentum>::const_iterator mBegin,
218 vector<Lorentz5Momentum>::const_iterator mEnd)
219 : w(q),
220 dataBegin(dBegin), dataEnd(dEnd),
221 momentaBegin(mBegin),
222 momentaEnd(mEnd) {}
223
224 };
225
226};
227
228}
229
230#endif /* Herwig_VBFNLOPhasespace_H */
MatchboxPhasespace defines an abstract interface to a phase space generator.
VBFNLOPhasespace is an interface to the internal phasespace generator of VBFNLO. It uses the informat...
virtual void doinitrun()
Initialize this object.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual double generateKinematics(const double *random, vector< Lorentz5Momentum > &momenta)
Generate a phase space point and return its weight.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual bool isInvertible() const
Return true, if this phase space generator is invertible.
bool needToReshuffle
Whether or not we need to reshuffle.
virtual void setXComb(tStdXCombPtr)
Prepare a phase space generator for the given xcomb object.
string VBFNLOlib_
Location of the VBFNLO library.
void loadVBFNLO()
load the VBFNLO library
static void Init()
The standard Init function used to initialize the interfaces.
VBFNLOPhasespace & operator=(const VBFNLOPhasespace &)=delete
The assignment operator is private and must never be called.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual ~VBFNLOPhasespace()
The destructor.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Energy lastSqrtS
Last hadronic centre-of-mass energy, to update VBFNLO value only when this has changed.
virtual bool wantCMS() const
Return true, if this phase space generator expects the incoming partons in their center-of-mass syste...
virtual int nDimPhasespace(int nFinal) const
Return the number of random numbers required to produce a given multiplicity final state.
VBFNLOPhasespace()
The default constructor.
virtual double generateTwoToNKinematics(const double *, vector< Lorentz5Momentum > &momenta)
Generate a phase space point and return its weight.
virtual bool haveX1X2() const
Return true, if this phasespace generator will generate incoming partons itself.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
The function object defining the equation to be solved.