herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
FFMgx2ggxDipoleKernel.h
1 // -*- C++ -*-
2 #ifndef HERWIG_FFMgx2ggxDipoleKernel_H
3 #define HERWIG_FFMgx2ggxDipoleKernel_H
4 //
5 // This is the declaration of the FFMgx2ggxDipoleKernel class.
6 //
7 
8 #include "DipoleSplittingKernel.h"
9 
10 namespace Herwig {
11 
12 using namespace ThePEG;
13 
23 
24 public:
25 
32 
36  virtual ~FFMgx2ggxDipoleKernel();
38 
39 public:
40 
45  virtual bool canHandle(const DipoleIndex&) const;
46 
52  virtual bool canHandleEquivalent(const DipoleIndex& a,
53  const DipoleSplittingKernel& sk,
54  const DipoleIndex& b) const;
55 
60  virtual tcPDPtr emitter(const DipoleIndex&) const;
61 
66  virtual tcPDPtr emission(const DipoleIndex&) const;
67 
72  virtual tcPDPtr spectator(const DipoleIndex&) const;
73 
78  virtual double evaluate(const DipoleSplittingInfo&) const;
79 
84  virtual vector< pair<int, Complex> > generatePhi( const DipoleSplittingInfo& dInfo, const RhoDMatrix& rho) const;
85 
89  virtual DecayMEPtr matrixElement(const DipoleSplittingInfo& dInfo) const;
90 
91 public:
92 
99  void persistentOutput(PersistentOStream & os) const;
100 
106  void persistentInput(PersistentIStream & is, int version);
108 
115  static void Init();
116 
117 protected:
118 
125  virtual IBPtr clone() const;
126 
131  virtual IBPtr fullclone() const;
133 
134 
135 // If needed, insert declarations of virtual function defined in the
136 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
137 
138 
139 private:
140 
145  int theAsymmetryOption=1;
146 
152 
157  FFMgx2ggxDipoleKernel & operator=(const FFMgx2ggxDipoleKernel &) = delete;
158 
159 };
160 
161 }
162 
163 #include "ThePEG/Utilities/ClassTraits.h"
164 
165 namespace ThePEG {
166 
171 template <>
172 struct BaseClassTrait<Herwig::FFMgx2ggxDipoleKernel,1> {
174  typedef Herwig::DipoleSplittingKernel NthBase;
175 };
176 
179 template <>
180 struct ClassTraits<Herwig::FFMgx2ggxDipoleKernel>
181  : public ClassTraitsBase<Herwig::FFMgx2ggxDipoleKernel> {
183  static string className() { return "Herwig::FFMgx2ggxDipoleKernel"; }
191  static string library() { return "HwDipoleShower.so"; }
192 };
193 
196 }
197 
198 #endif /* HERWIG_FFMgx2ggxDipoleKernel_H */
static ClassDescription< FFMgx2ggxDipoleKernel > initFFMgx2ggxDipoleKernel
The static object used to initialize the description of this class.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
DipoleIndex is used to index splitting generators for a particular dipole.
FFMgx2ggxDipoleKernel implements the g -> gg splitting off a final-final dipole.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
-*- C++ -*-
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.