herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
DipolePKOperator.h
1// -*- C++ -*-
2//
3// DipolePKOperator.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_DipolePKOperator_H
10#define HERWIG_DipolePKOperator_H
11//
12// This is the declaration of the DipolePKOperator class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h"
16#include "Herwig/MatrixElement/Matchbox/Base/MatchboxMEBase.h"
17#include "ThePEG/PDF/PDF.h"
18
19namespace Herwig {
20
21using namespace ThePEG;
22
32
33public:
34
41
47
48public:
49
54 virtual void setXComb(tStdXCombPtr xc);
55
59 virtual void setAlpha (double alpha)const;
60
66 virtual int nDimAdditional() const { return 1; }
67
72 vector<int> NLightJetVec() const;
73
78 vector<int> NHeavyJetVec() const;
79
84 vector<int> NLightBornVec() const;
85
90 vector<int> NHeavyBornVec() const;
91
96 vector<int> NLightProtonVec() const;
97
103 virtual double me2() const;
104
110 virtual CrossSection dSigHatDR() const {
111 return sqr(hbarc) * me2() * lastBorn()->lastXComb().jacobian() / (2.*lastSHat());
112 }
113
114public:
115
120 bool apply(tcPDPtr) const;
121
126 virtual bool apply(const cPDVector&) const;
127
131 double gammaSoft() const;
132
136 double softLogByz(tcPDPtr p) const;
137
141 double softLog(tcPDPtr p) const;
142
146 double KBarqq() const;
147
151 double KTildeqq() const;
152
156 double Pqq() const;
157
161 double KBarqg() const;
162
166 double KTildeqg() const;
167
171 double Pqg() const;
172
176 double KBargq() const;
177
181 double KTildegq() const;
182
186 double Pgq() const;
187
191 double KBargg() const;
192
196 double KTildegg() const;
197
201 double Pgg() const;
202
206 double sumParton(int id) const;
207
208public:
209
217
223 void persistentInput(PersistentIStream & is, int version);
225
232 static void Init();
233
234protected:
235
242 virtual IBPtr clone() const;
243
248 virtual IBPtr fullclone() const;
250
251private:
252
256 double CA;
257
261 double CF;
262
267
272
276 mutable double KQuark;
277
281 mutable double KGluon;
282
286 mutable Energy2 scale;
287
291 mutable tcPDFPtr pdf;
292
297
301 mutable double x;
302
306 mutable double z;
307
311 mutable map<pair<tcPDFPtr,tcPDPtr>,pair<double,double> > pdfCache;
312
317
321 double PDFx(tcPDPtr) const;
322
326 double PDFxByz(tcPDPtr) const;
327
328private:
329
335
336};
337
338}
339
340#endif /* HERWIG_DipolePKOperator_H */
DipolePKOperator implements the P+K insertion operator.
vector< int > NHeavyJetVec() const
Return a vector of PDG codes of the heavy flavours, which are contained in the jet particle group.
virtual void setXComb(tStdXCombPtr xc)
Set the XComb object steering the Born matrix element this class represents virtual corrections to.
map< pair< tcPDFPtr, tcPDPtr >, pair< double, double > > pdfCache
Cache PDFs evaluated at x and x/z.
vector< int > NHeavyBornVec() const
Return a vector of PDG codes of the heavy flavours, which are contained in the associated Born sub-pr...
double x
The x to be used.
double KTildeqg() const
The Ktilde^{qg} contribution.
virtual void setAlpha(double alpha) const
Set parameters for new alpha parameter.
virtual bool apply(const cPDVector &) const
Return true, if this virtual correction applies to the given process.
double softLogByz(tcPDPtr p) const
[(1/(1-z))*ln((1-z)/z)]_+
tcPDFPtr pdf
The PDF to be used.
tcPDPtr particle
The incoming parton type considered.
virtual int nDimAdditional() const
Return the number of additional random variables needed to calculate this virtual correction.
tcPDPtr parton
The currently considered incoming parton.
virtual IBPtr clone() const
Make a simple clone of this object.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
double KBarqq() const
The Kbar^{qq} contribution.
double gammaSoft() const
The initial-final contribution.
Energy2 scale
The scale to be used.
DipolePKOperator()
The default constructor.
double sumParton(int id) const
Get all contributions for the indicated incoming parton.
double KBargq() const
The Kbar^{gq} contribution.
double Pqq() const
The P^{qq} contribution.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double Pgq() const
The P^{gq} contribution.
static void Init()
The standard Init function used to initialize the interfaces.
double KBarqg() const
The Kbar^{qg} contribution.
double z
The convolution variable to be used.
double PDFx(tcPDPtr) const
Get a PDF value at x.
virtual ~DipolePKOperator()
The destructor.
virtual double me2() const
Evaluate the finite virtual correction for the variables supplied through the Born XComb object and p...
double KTildeqq() const
The Ktilde^{qq} contribution.
double PDFxByz(tcPDPtr) const
Get a PDF value at x/z.
double Pqg() const
The P^{qg} contribution.
bool apply(tcPDPtr) const
Return true, if contributions exist to the given parton.
double softLog(tcPDPtr p) const
[(1/(1-z))*ln((1-z))]_+
double KTildegg() const
The Ktilde^{gg} contribution.
double Pgg() const
The P^{gg} contribution.
double KTildegq() const
The Ktilde^{gq} contribution.
DipolePKOperator & operator=(const DipolePKOperator &)=delete
The assignment operator is private and must never be called.
double KBargg() const
The Kbar^{gg} contribution.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< int > NLightBornVec() const
Return a vector of PDG codes of the light flavours, which are contained in the associated Born sub-pr...
vector< int > NLightProtonVec() const
Return a vector of PDG codes of the light flavours, which are contained in the proton particle group.
vector< int > NLightJetVec() const
Return a vector of PDG codes of the light flavours, which are contained in the jet particle group.
virtual CrossSection dSigHatDR() const
Evaluate the finite virtual correction for the variables supplied through the Born XComb object and p...
MatchboxInsertionOperator is the base class for insertion operators.
Ptr< MatchboxMEBase >::tptr lastBorn() const
Return the Born matrix element this class represents virtual corrections to.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
constexpr auto sqr(const T &x) -> decltype(x *x)
vector< cPDPtr > cPDVector