herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
DipoleMIOperator.h
1// -*- C++ -*-
2//
3// DipoleMIOperator.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4// Copyright (C) 2002-2019 The Herwig Collaboration
5//
6// Herwig is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef HERWIG_DipoleMIOperator_H
10#define HERWIG_DipoleMIOperator_H
11//
12// This is the declaration of the DipoleMIOperator class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h"
16#include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.h"
17
18namespace Herwig {
19
20using namespace ThePEG;
21
34
35public:
36
43
49
50public:
51
56 virtual void setXComb(tStdXCombPtr xc);
57
62 virtual bool apply(const cPDVector&) const;
63
68 bool apply(tcPDPtr) const;
69
74 vector<int> NLightJetVec() const;
75
80 vector<int> NHeavyJetVec() const;
81
86 vector<int> NLightBornVec() const;
87
92 vector<int> NHeavyBornVec() const;
93
98 vector<int> NLightProtonVec() const;
99
105 virtual double me2() const;
106
110 virtual double oneLoopDoublePole() const;
111
115 virtual double oneLoopSinglePole() const;
116
117public:
118
122 template <class T>
123 inline T rootOfKallen (T a, T b, T c) const {
124 return sqrt( a*a + b*b + c*c - 2.*( a*b+a*c+b*c ) ); }
125
126public:
127
135
141 void persistentInput(PersistentIStream & is, int version);
143
150 static void Init();
151
152protected:
153
160 virtual IBPtr clone() const;
161
166 virtual IBPtr fullclone() const;
168
169private:
170
174 double CA;
175
179 double CF;
180
185
190
208 double betaZero;
209
213 double KQuark;
214
218 double KGluon;
219
220private:
221
225 // double Vj(const ParticleData&, const ParticleData&, Energy2, double, bool=false) const;
226 double Vj(const ParticleData&, const ParticleData&, Energy2, double, double, int, bool=false) const;
227
231 double VsDoublePole(const ParticleData&, const ParticleData&) const;
232
236 double VsSinglePole(const ParticleData&, const ParticleData&, Energy2) const;
237
241 double GammaQuark(const ParticleData&) const;
242
246 double GammaGluon() const;
247
251 double GammaQuarkSinglePole(const ParticleData&) const;
252
256 double GammaGluonSinglePole() const;
257
258private:
259
265
266};
267
268}
269
270#endif /* HERWIG_DipoleMIOperator_H */
DipoleMIOperator implements the I(\epsilon) insertion operator for the massive case....
virtual double oneLoopDoublePole() const
If defined, return the coefficient of the pole in epsilon^2.
virtual bool apply(const cPDVector &) const
Return true, if this virtual correction applies to the given process.
double GammaGluon() const
\Gamma_g, finite term
virtual void setXComb(tStdXCombPtr xc)
Set the XComb object steering the Born matrix element this class represents virtual corrections to.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
DipoleMIOperator()
The default constructor.
virtual double oneLoopSinglePole() const
If defined, return the coefficient of the pole in epsilon.
double Vj(const ParticleData &, const ParticleData &, Energy2, double, double, int, bool=false) const
V_j, non-singular terms.
vector< int > NLightProtonVec() const
Return a vector of PDG codes of the light flavours, which are contained in the proton particle group.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< int > NHeavyJetVec() const
Return a vector of PDG codes of the heavy flavours, which are contained in the jet particle group.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
static void Init()
The standard Init function used to initialize the interfaces.
double VsDoublePole(const ParticleData &, const ParticleData &) const
V^{(s)}, double pole part in expanded convention.
T rootOfKallen(T a, T b, T c) const
Triangular / Kallen function.
double VsSinglePole(const ParticleData &, const ParticleData &, Energy2) const
V^{(s)}, single pole part in expanded convention.
double GammaQuarkSinglePole(const ParticleData &) const
\Gamma_q, single pole term
virtual double me2() const
Evaluate the finite virtual correction for the variables supplied through the Born XComb object and p...
double betaZero
\beta_0 The Matchbox convention is \beta_0=\gamma_g.
DipoleMIOperator & operator=(const DipoleMIOperator &)=delete
The assignment operator is private and must never be called.
vector< int > NHeavyBornVec() const
Return a vector of PDG codes of the heavy flavours, which are contained in the associated Born sub-pr...
bool apply(tcPDPtr) const
Return true, if contributions exist to the given parton.
vector< int > NLightBornVec() const
Return a vector of PDG codes of the light flavours, which are contained in the associated Born sub-pr...
virtual IBPtr clone() const
Make a simple clone of this object.
vector< int > NLightJetVec() const
Return a vector of PDG codes of the light flavours, which are contained in the jet particle group.
double GammaQuark(const ParticleData &) const
\Gamma_q, finite term
double GammaGluonSinglePole() const
\Gamma_g, single pole term
virtual ~DipoleMIOperator()
The destructor.
MatchboxInsertionOperator is the base class for insertion operators.
-*- C++ -*-
double sqrt(int x)
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< cPDPtr > cPDVector