herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
11 namespace Herwig {
12 
13 using namespace ThePEG;
14 
24 class BlobME: public BlobMEBase {
25 
26 public:
27 
33  BlobME();
34 
38  virtual ~BlobME();
40 
41 public:
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 
97 public:
98 
105  void persistentOutput(PersistentOStream & os) const;
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 
126 private:
127 
131  Ptr<MatchboxPhasespace>::ptr thePhasespace;
132 
137 
138 private:
139 
144  BlobME & operator=(const BlobME &) = delete;
145 
146 };
147 
148 }
149 
150 #endif /* Herwig_BlobME_H */
Ptr< MatchboxPhasespace >::tptr phasespace() const
Return the phase space used.
Definition: BlobME.h:95
BlobME serves as a base class for special processes such as instanton or sphaleron induced ones...
Definition: BlobME.h:24
Ptr< MatchboxPhasespace >::ptr thePhasespace
The phase space to be used.
Definition: BlobME.h:131
void nAdditional(size_t n)
Set the additional number of objects to generate.
Definition: BlobME.h:72
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom given nDim() uniform random numbers in the interval ]0...
Definition: BlobME.h:59
size_t theNAdditional
The multiplicity of additional objects to consider.
Definition: BlobME.h:136
size_t nAdditional() const
Return the additional number of objects to generate.
Definition: BlobME.h:67
-*- C++ -*-
virtual int nDim() const
The number of internal degreed of freedom used in the matrix element.
Definition: BlobME.h:83
virtual Energy2 scale() const
Return the scale associated with the phase space point provided by the last call to setKinematics()...
Definition: BlobME.h:47