herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
BlobME.h
1// -*- C++ -*-
2#ifndef Herwig_BlobME_H
3#define Herwig_BlobME_H
4//
5// This is the declaration of the BlobME class.
6//
7
8#include "ThePEG/MatrixElement/BlobMEBase.h"
9#include "Herwig/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h"
10
11namespace Herwig {
12
13using namespace ThePEG;
14
24class BlobME: public BlobMEBase {
25
26public:
27
34
38 virtual ~BlobME();
40
41public:
42
47 virtual Energy2 scale() const {
48 return lastSHat();
49 }
50
59 virtual bool generateKinematics(const double * r) {
60 jacobian(thePhasespace->generateTwoToNKinematics(r,meMomenta()));
61 return jacobian() > 0.0;
62 }
63
67 size_t nAdditional() const { return theNAdditional; }
68
72 void nAdditional(size_t n) { theNAdditional = n; }
73
77 virtual size_t nOutgoing() const = 0;
78
83 virtual int nDim() const {
84 return thePhasespace->nDimPhasespace(nOutgoing()+nAdditional());
85 }
86
90 virtual void setXComb(tStdXCombPtr xc);
91
95 Ptr<MatchboxPhasespace>::tptr phasespace() const { return thePhasespace; }
96
97public:
98
106
112 void persistentInput(PersistentIStream & is, int version);
114
121 static void Init();
122
123// If needed, insert declarations of virtual function defined in the
124// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
125
126private:
127
131 Ptr<MatchboxPhasespace>::ptr thePhasespace;
132
137
138private:
139
144 BlobME & operator=(const BlobME &) = delete;
145
146};
147
148}
149
150#endif /* Herwig_BlobME_H */
BlobME serves as a base class for special processes such as instanton or sphaleron induced ones.
Definition: BlobME.h:24
virtual ~BlobME()
The destructor.
virtual int nDim() const
The number of internal degreed of freedom used in the matrix element.
Definition: BlobME.h:83
BlobME()
The default constructor.
virtual size_t nOutgoing() const =0
Return the minimal number of final state particles.
BlobME & operator=(const BlobME &)=delete
The assignment operator is private and must never be called.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
size_t theNAdditional
The multiplicity of additional objects to consider.
Definition: BlobME.h:136
Ptr< MatchboxPhasespace >::tptr phasespace() const
Return the phase space used.
Definition: BlobME.h:95
void nAdditional(size_t n)
Set the additional number of objects to generate.
Definition: BlobME.h:72
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
size_t nAdditional() const
Return the additional number of objects to generate.
Definition: BlobME.h:67
Ptr< MatchboxPhasespace >::ptr thePhasespace
The phase space to be used.
Definition: BlobME.h:131
virtual Energy2 scale() const
Return the scale associated with the phase space point provided by the last call to setKinematics().
Definition: BlobME.h:47
static void Init()
The standard Init function used to initialize the interfaces.
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom given nDim() uniform random numbers in the interval ]0,...
Definition: BlobME.h:59
virtual void setXComb(tStdXCombPtr xc)
Set the xcomb object.
vector< Lorentz5Momentum > & meMomenta()
-*- C++ -*-