herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
19 namespace Herwig {
20 
21 using namespace ThePEG;
22 
35 
36 public:
37 
44 
48  virtual ~DipoleMPKOperator();
50 
51 public:
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 
112 public:
113 
118  bool apply(tcPDPtr) const;
119 
124  bool applyNotMassless(tcPDPtr) const;
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 
339 public:
340 
347  void persistentOutput(PersistentOStream & os) const;
348 
354  void persistentInput(PersistentIStream & is, int version);
356 
363  static void Init();
364 
365 protected:
366 
373  virtual IBPtr clone() const;
374 
379  virtual IBPtr fullclone() const;
381 
382 private:
383 
387  double CA;
388 
392  double CF;
393 
397  double gammaQuark;
398 
402  double gammaGluon;
403 
407  double KQuark;
408 
412  double KGluon;
413 
417  mutable Energy2 scale;
418 
422  mutable tcPDFPtr pdf;
423 
427  mutable tcPDPtr particle;
428 
432  mutable double x;
433 
437  mutable double z;
438 
445  mutable map<pair<tcPDFPtr,tcPDPtr>,vector<double> > pdfCache;
446 
450  mutable tcPDPtr parton;
451 
455  double PDFx(tcPDPtr) const;
456 
460  double PDFxByz(tcPDPtr) const;
461 
463 
467  double PDFxByzplus(tcPDPtr,int,double) const;
468 
470 
471 private:
472 
477  DipoleMPKOperator & operator=(const DipoleMPKOperator &) = delete;
478 
479 };
480 
481 }
482 
483 #endif /* HERWIG_DipoleMPKOperator_H */
tcPDPtr particle
The incoming parton type considered.
tcPDPtr parton
The currently considered incoming parton.
Energy2 scale
The scale to be used.
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
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...
constexpr auto sqr(const T &x) -> decltype(x *x)
double z
The convolution variable to be used.
virtual CrossSection dSigHatDR() const
Evaluate the finite virtual correction for the variables supplied through the Born XComb object and p...
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< cPDPtr > cPDVector
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.
DipoleMPKOperator implements the P+K insertion operator for the massive case. DipoleMPKOperator does ...
tcPDFPtr pdf
The PDF to be used.
-*- C++ -*-
double x
The x to be used.