herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
DipoleMPKOperator.h
1// -*- C++ -*-
2//
3// DipoleMPKOperator.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_DipoleMPKOperator_H
10#define HERWIG_DipoleMPKOperator_H
11//
12// This is the declaration of the DipoleMPKOperator 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
35
36public:
37
44
50
51public:
52
57 virtual void setXComb(tStdXCombPtr xc);
58
64 virtual int nDimAdditional() const { return 1; }
65
70 vector<int> NLightJetVec() const;
71
76 vector<int> NHeavyJetVec() const;
77
82 vector<int> NLightBornVec() const;
83
88 vector<int> NHeavyBornVec() const;
89
94 vector<int> NLightProtonVec() const;
95
101 virtual double me2() const;
102
108 virtual CrossSection dSigHatDR() const {
109 return sqr(hbarc) * me2() * lastBorn()->lastXComb().jacobian() / (2.*lastSHat());
110 }
111
112public:
113
118 bool apply(tcPDPtr) const;
119
125
130 virtual bool apply(const cPDVector&) const;
131
136 double gammaSoft() const;
137
141 double softLogByz(tcPDPtr p) const;
142
146 double softLog(tcPDPtr p) const;
147
151 double KBarqq() const;
152
156 double KTildeqq() const;
157
161 double Pqq() const;
162
166 double KBarqg() const;
167
171 double KTildeqg() const;
172
176 double Pqg() const;
177
181 double KBargq() const;
182
186 double KTildegq() const;
187
191 double Pgq() const;
192
196 double KBargg() const;
197
201 double KTildegg() const;
202
206 double Pgg() const;
207
209
220 double Ja_gQplus(double muQ2) const;
221
227 double gammaSoft2(double muQ2) const;
228
232 double Kscriptqq_q(Energy2 sja, Energy2 mj2) const;
233
237 double Kscriptqg_q(Energy2 sja, Energy2 mj2) const;
238
242 double Kscriptgq_q() const;
243
247 double Kscriptgg_q(Energy2 sja, Energy2 mj2) const;
248
252 double Kscriptbarqq_q(Energy2 Qja2, Energy2 mj2) const;
253
257 double Kscriptbarqg_q(Energy2 Qja2, Energy2 mj2) const;
258
262 double Kscriptbargq_q() const;
263
267 double Kscriptbargg_q(Energy2 Qja2, Energy2 mj2) const;
268
270
280 double JaNS_QQ(double muQ2) const;
281
285 double Ja_QQzplus(double muQ2, int F, double zplus) const;
286
290 // double Kscriptqq_g(Energy2 sja) const;
291 double Kscriptqq_g(Energy2 sja, double lambda) const;
292
296 double Kscriptqg_g() const;
297
301 double Kscriptgq_g() const;
302
307 // double Kscriptgg_g(Energy2 sja) const;
308 double Kscriptgg_g(Energy2 sja, double lambda) const;
309
313 // double Kscriptbarqq_g(Energy2 Qja2) const;
314 double Kscriptbarqq_g(Energy2 Qja2, double lambda) const;
315
319 double Kscriptbarqg_g() const;
320
324 double Kscriptbargq_g() const;
325
329 // double Kscriptbargg_g(Energy2 Qja2) const;
330 double Kscriptbargg_g(Energy2 Qja2, double lambda) const;
331
333
337 double sumParton(int id) const;
338
339public:
340
348
354 void persistentInput(PersistentIStream & is, int version);
356
363 static void Init();
364
365protected:
366
373 virtual IBPtr clone() const;
374
379 virtual IBPtr fullclone() const;
381
382private:
383
387 double CA;
388
392 double CF;
393
398
403
407 double KQuark;
408
412 double KGluon;
413
417 mutable Energy2 scale;
418
422 mutable tcPDFPtr pdf;
423
428
432 mutable double x;
433
437 mutable double z;
438
445 mutable map<pair<tcPDFPtr,tcPDPtr>,vector<double> > pdfCache;
446
451
455 double PDFx(tcPDPtr) const;
456
460 double PDFxByz(tcPDPtr) const;
461
463
467 double PDFxByzplus(tcPDPtr,int,double) const;
468
470
471private:
472
478
479};
480
481}
482
483#endif /* HERWIG_DipoleMPKOperator_H */
DipoleMPKOperator implements the P+K insertion operator for the massive case. DipoleMPKOperator does ...
double Kscriptbarqg_g() const
The Kscriptbar^{qg}_g contribution (B.18)
virtual IBPtr clone() const
Make a simple clone of this object.
double JaNS_QQ(double muQ2) const
Kscript^{a,a'}_j terms with j=gluon The ones for a!=a' will return zero.
double gammaSoft2(double muQ2) const
[1/(1-z)]_+ * log( (2-z)/(2-z+\mu_Q^2) ) a,a' = quark for later use of this function in Kscript^{qq}_...
bool apply(tcPDPtr) const
Return true, if contributions exist to the given parton.
double Ja_gQplus(double muQ2) const
Kscript^{a,a'}_j terms with j=quark.
double KTildeqg() const
The Ktilde^{qg} contribution.
vector< int > NHeavyJetVec() const
Return a vector of PDG codes of the heavy flavours, which are contained in the jet particle group.
virtual double me2() const
Evaluate the finite virtual correction for the variables supplied through the Born XComb object and p...
vector< int > NLightProtonVec() const
Return a vector of PDG codes of the light flavours, which are contained in the proton particle group.
double Kscriptbarqg_q(Energy2 Qja2, Energy2 mj2) const
The Kscriptbar^{qg}_q contribution (B.17)
tcPDPtr parton
The currently considered incoming parton.
virtual CrossSection dSigHatDR() const
Evaluate the finite virtual correction for the variables supplied through the Born XComb object and p...
double PDFxByzplus(tcPDPtr, int, double) const
Get a PDF value at x/z_+.
double Kscriptbargq_g() const
The Kscriptbar^{gq}_g contribution (B.18)
double Kscriptbarqq_q(Energy2 Qja2, Energy2 mj2) const
The Kscriptbar^{qq}_q contribution (B.17)
double z
The convolution variable to be used.
double Kscriptqq_q(Energy2 sja, Energy2 mj2) const
The Kscript^{qq}_q contribution.
double Kscriptqg_q(Energy2 sja, Energy2 mj2) const
The Kscript^{qg}_q contribution.
virtual bool apply(const cPDVector &) const
Return true, if this virtual correction applies to the given process.
double PDFx(tcPDPtr) const
Get a PDF value at x.
tcPDFPtr pdf
The PDF to be used.
map< pair< tcPDFPtr, tcPDPtr >, vector< double > > pdfCache
Cache PDFs evaluated at x, x/z and x/z_+, z_+ depends hereby on the masses of the heavy flavours,...
double Ja_QQzplus(double muQ2, int F, double zplus) const
[J^a_{Q\bar{Q}}(z,\mu_Q^2)]_{z_+}
double KTildegq() const
The Ktilde^{gq} contribution.
double Pgq() const
The P^{gq} contribution.
double Kscriptqg_g() const
The Kscript^{qg}_g contribution.
virtual ~DipoleMPKOperator()
The destructor.
double Kscriptgg_q(Energy2 sja, Energy2 mj2) const
The Kscript^{gg}_q contribution.
double Kscriptbarqq_g(Energy2 Qja2, double lambda) const
The Kscriptbar^{qq}_g contribution (B.18)
double gammaSoft() const
The initial-final contribution [1/(1-z)]_+ + \delta(1-z)
double KBarqg() const
The Kbar^{qg} contribution.
tcPDPtr particle
The incoming parton type considered.
double Pgg() const
The P^{gg} contribution.
double softLogByz(tcPDPtr p) const
[(1/(1-z))*ln((1-z)/z)]_+
double KBargq() const
The Kbar^{gq} contribution.
DipoleMPKOperator()
The default constructor.
double Pqg() const
The P^{qg} contribution.
double KTildeqq() const
The Ktilde^{qq} contribution.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double Pqq() const
The P^{qq} contribution.
double x
The x to be used.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
DipoleMPKOperator & operator=(const DipoleMPKOperator &)=delete
The assignment operator is private and must never be called.
double Kscriptgq_q() const
The Kscript^{gq}_q contribution.
double KTildegg() const
The Ktilde^{gg} contribution.
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 > NLightJetVec() const
Return a vector of PDG codes of the light 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.
double Kscriptbargg_g(Energy2 Qja2, double lambda) const
The Kscriptbar^{gg}_g contribution (B.18)
double PDFxByz(tcPDPtr) const
Get a PDF value at x/z.
double KBarqq() const
The Kbar^{qq} contribution.
double sumParton(int id) const
Get all contributions for the indicated incoming parton.
bool applyNotMassless(tcPDPtr) const
Return true, if contributions exist to the given parton.
Energy2 scale
The scale to be used.
double Kscriptgq_g() const
The Kscript^{gq}_g contribution.
double softLog(tcPDPtr p) const
[(1/(1-z))*ln((1-z))]_+
double Kscriptbargg_q(Energy2 Qja2, Energy2 mj2) const
The Kscriptbar^{gg}_q contribution (B.17)
static void Init()
The standard Init function used to initialize the interfaces.
double Kscriptqq_g(Energy2 sja, double lambda) const
The Kscript^{qq}_g contribution.
double Kscriptgg_g(Energy2 sja, double lambda) const
The Kscript^{gg}_g contribution equals the Kscript^{qq}_g contribution.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double KBargg() const
The Kbar^{gg} contribution.
vector< int > NHeavyBornVec() const
Return a vector of PDG codes of the heavy flavours, which are contained in the associated Born sub-pr...
double Kscriptbargq_q() const
The Kscriptbar^{gq}_q contribution (B.17)
virtual int nDimAdditional() const
Return the number of additional random variables needed to calculate this virtual correction.
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