herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
FIMDecaygx2ggxDipoleKernel.h
1 // -*- C++ -*-
2 #ifndef HERWIG_FIMDecaygx2ggxDipoleKernel_H
3 #define HERWIG_FIMDecaygx2ggxDipoleKernel_H
4 //
5 // This is the declaration of the FIMDecaygx2ggxDipoleKernel class.
6 //
7 
8 #include "DipoleSplittingKernel.h"
9 
10 namespace Herwig {
11 
12 using namespace ThePEG;
13 
24 
25 public:
26 
33 
37  virtual ~FIMDecaygx2ggxDipoleKernel();
39 
40 public:
41 
46  virtual bool canHandle(const DipoleIndex&) const;
47 
53  virtual bool canHandleEquivalent(const DipoleIndex& a,
54  const DipoleSplittingKernel& sk,
55  const DipoleIndex& b) const;
56 
61  virtual tcPDPtr emitter(const DipoleIndex&) const;
62 
67  virtual tcPDPtr emission(const DipoleIndex&) const;
68 
73  virtual tcPDPtr spectator(const DipoleIndex&) const;
74 
79  virtual double evaluate(const DipoleSplittingInfo&) const;
80 
85  virtual vector< pair<int, Complex> > generatePhi( const DipoleSplittingInfo& dInfo, const RhoDMatrix& rho) const;
86 
90  virtual DecayMEPtr matrixElement(const DipoleSplittingInfo& dInfo) const;
91 
92 public:
93 
100  void persistentOutput(PersistentOStream & os) const;
101 
107  void persistentInput(PersistentIStream & is, int version);
109 
116  static void Init();
117 
118 protected:
119 
126  virtual IBPtr clone() const;
127 
132  virtual IBPtr fullclone() const;
134 
135 
136 // If needed, insert declarations of virtual function defined in the
137 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
138 
139 
140 private:
141 
147 
152  FIMDecaygx2ggxDipoleKernel & operator=(const FIMDecaygx2ggxDipoleKernel &) = delete;
153 
157  int theAsymmetryOption=0;
158 };
159 
160 }
161 
162 #include "ThePEG/Utilities/ClassTraits.h"
163 
164 namespace ThePEG {
165 
170 template <>
171 struct BaseClassTrait<Herwig::FIMDecaygx2ggxDipoleKernel,1> {
173  typedef Herwig::DipoleSplittingKernel NthBase;
174 };
175 
178 template <>
180  : public ClassTraitsBase<Herwig::FIMDecaygx2ggxDipoleKernel> {
182  static string className() { return "Herwig::FIMDecaygx2ggxDipoleKernel"; }
190  static string library() { return "HwDipoleShower.so"; }
191 };
192 
195 }
196 
197 #endif /* HERWIG_FIMDecaygx2ggxDipoleKernel_H */
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
DipoleIndex is used to index splitting generators for a particular dipole.
FIMDecaygx2ggxDipoleKernel implements the g -> gg splitting off a final-initial decay dipole and incl...
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
static ClassDescription< FIMDecaygx2ggxDipoleKernel > initFIMDecaygx2ggxDipoleKernel
The static object used to initialize the description of this class.
-*- C++ -*-
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.