herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
IFqx2qgxDipoleKernel.h
1 // -*- C++ -*-
2 #ifndef HERWIG_IFqx2qgxDipoleKernel_H
3 #define HERWIG_IFqx2qgxDipoleKernel_H
4 //
5 // This is the declaration of the IFqx2qgxDipoleKernel class.
6 //
7 
8 #include "DipoleSplittingKernel.h"
9 
10 namespace Herwig {
11 
12 using namespace ThePEG;
13 
23 
24 public:
25 
32 
36  virtual ~IFqx2qgxDipoleKernel();
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 
146 
151  IFqx2qgxDipoleKernel & operator=(const IFqx2qgxDipoleKernel &) = delete;
152 
153 };
154 
155 }
156 
157 #include "ThePEG/Utilities/ClassTraits.h"
158 
159 namespace ThePEG {
160 
165 template <>
166 struct BaseClassTrait<Herwig::IFqx2qgxDipoleKernel,1> {
168  typedef Herwig::DipoleSplittingKernel NthBase;
169 };
170 
173 template <>
174 struct ClassTraits<Herwig::IFqx2qgxDipoleKernel>
175  : public ClassTraitsBase<Herwig::IFqx2qgxDipoleKernel> {
177  static string className() { return "Herwig::IFqx2qgxDipoleKernel"; }
185  static string library() { return "HwDipoleShower.so"; }
186 };
187 
190 }
191 
192 #endif /* HERWIG_IFqx2qgxDipoleKernel_H */
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
DipoleIndex is used to index splitting generators for a particular dipole.
static ClassDescription< IFqx2qgxDipoleKernel > initIFqx2qgxDipoleKernel
The static object used to initialize the description of this class.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
IFqx2qgxDipoleKernel implements the q -> qg splitting off an initial-final dipole.
-*- C++ -*-
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.