herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
IFgx2qqxDipoleKernel.h
1// -*- C++ -*-
2#ifndef HERWIG_IFgx2qqxDipoleKernel_H
3#define HERWIG_IFgx2qqxDipoleKernel_H
4//
5// This is the declaration of the IFgx2qqxDipoleKernel class.
6//
7
8#include "DipoleSplittingKernel.h"
9
10namespace Herwig {
11
12using namespace ThePEG;
13
23
24public:
25
30
31public:
32
37 virtual bool canHandle(const DipoleIndex&) const;
38
44 virtual bool canHandleEquivalent(const DipoleIndex& a,
45 const DipoleSplittingKernel& sk,
46 const DipoleIndex& b) const;
47
52 virtual tcPDPtr emitter(const DipoleIndex&) const;
53
58 virtual tcPDPtr emission(const DipoleIndex&) const;
59
64 virtual tcPDPtr spectator(const DipoleIndex&) const;
65
70 virtual double evaluate(const DipoleSplittingInfo&) const;
71
76 virtual vector< pair<int, Complex> > generatePhi( const DipoleSplittingInfo& dInfo, const RhoDMatrix& rho) const;
77
81 virtual DecayMEPtr matrixElement(const DipoleSplittingInfo& dInfo) const;
82
83public:
84
92
98 void persistentInput(PersistentIStream & is, int version);
100
107 static void Init();
108
109protected:
110
117 virtual IBPtr clone() const;
118
123 virtual IBPtr fullclone() const;
125
126
127// If needed, insert declarations of virtual function defined in the
128// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
129
130
131private:
132
138
144
145};
146
147}
148
149#include "ThePEG/Utilities/ClassTraits.h"
150
151namespace ThePEG {
152
157template <>
158struct BaseClassTrait<Herwig::IFgx2qqxDipoleKernel,1> {
161};
162
165template <>
166struct ClassTraits<Herwig::IFgx2qqxDipoleKernel>
167 : public ClassTraitsBase<Herwig::IFgx2qqxDipoleKernel> {
169 static string className() { return "Herwig::IFgx2qqxDipoleKernel"; }
177 static string library() { return "HwDipoleShower.so"; }
178};
179
182}
183
184#endif /* HERWIG_IFgx2qqxDipoleKernel_H */
DipoleIndex is used to index splitting generators for a particular dipole.
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.
IFgx2qqxDipoleKernel implements the g -> qq splitting off an initial-final dipole.
virtual tcPDPtr emitter(const DipoleIndex &) const
Return the emitter data after splitting, given a dipole index.
virtual bool canHandle(const DipoleIndex &) const
Return true, if this splitting kernel applies to the given dipole index.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual tcPDPtr spectator(const DipoleIndex &) const
Return the spectator data after splitting, given a dipole index.
virtual tcPDPtr emission(const DipoleIndex &) const
Return the emission data after splitting, given a dipole index.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
IFgx2qqxDipoleKernel()
The default constructor.
static ClassDescription< IFgx2qqxDipoleKernel > initIFgx2qqxDipoleKernel
The static object used to initialize the description of this class.
IFgx2qqxDipoleKernel & operator=(const IFgx2qqxDipoleKernel &)=delete
The assignment operator is private and must never be called.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual DecayMEPtr matrixElement(const DipoleSplittingInfo &dInfo) const
Return the completely spin-unaveraged (i.e.
static void Init()
The standard Init function used to initialize the interfaces.
virtual double evaluate(const DipoleSplittingInfo &) const
Evaluate this splitting kernel for the given dipole splitting.
virtual bool canHandleEquivalent(const DipoleIndex &a, const DipoleSplittingKernel &sk, const DipoleIndex &b) const
Return true, if this splitting kernel is the same for the given index a, as the given splitting kerne...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual vector< pair< int, Complex > > generatePhi(const DipoleSplittingInfo &dInfo, const RhoDMatrix &rho) const
Evaluate rho_ii' V_ijk V*_i'jk / equivalent for initial-state splitting, required for generating spin...
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
static string className()
static string library()