herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
19 namespace Herwig {
20 
21 using namespace ThePEG;
22 
32 
33 public:
34 
41 
45  virtual ~DipolePKOperator();
47 
48 public:
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 
114 public:
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 
208 public:
209 
216  void persistentOutput(PersistentOStream & os) const;
217 
223  void persistentInput(PersistentIStream & is, int version);
225 
232  static void Init();
233 
234 protected:
235 
242  virtual IBPtr clone() const;
243 
248  virtual IBPtr fullclone() const;
250 
251 private:
252 
256  double CA;
257 
261  double CF;
262 
266  double gammaQuark;
267 
271  double gammaGluon;
272 
276  mutable double KQuark;
277 
281  mutable double KGluon;
282 
286  mutable Energy2 scale;
287 
291  mutable tcPDFPtr pdf;
292 
296  mutable tcPDPtr particle;
297 
301  mutable double x;
302 
306  mutable double z;
307 
311  mutable map<pair<tcPDFPtr,tcPDPtr>,pair<double,double> > pdfCache;
312 
316  mutable tcPDPtr parton;
317 
321  double PDFx(tcPDPtr) const;
322 
326  double PDFxByz(tcPDPtr) const;
327 
328 private:
329 
334  DipolePKOperator & operator=(const DipolePKOperator &) = delete;
335 
336 };
337 
338 }
339 
340 #endif /* HERWIG_DipolePKOperator_H */
tcPDPtr particle
The incoming parton type considered.
double z
The convolution variable to be used.
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr auto sqr(const T &x) -> decltype(x *x)
DipolePKOperator implements the P+K insertion operator.
virtual CrossSection dSigHatDR() const
Evaluate the finite virtual correction for the variables supplied through the Born XComb object and p...
tcPDFPtr pdf
The PDF to be used.
tcPDPtr parton
The currently considered incoming parton.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
virtual int nDimAdditional() const
Return the number of additional random variables needed to calculate this virtual correction...
vector< cPDPtr > cPDVector
Energy2 scale
The scale to be used.
MatchboxInsertionOperator is the base class for insertion operators.
-*- C++ -*-
double x
The x to be used.
map< pair< tcPDFPtr, tcPDPtr >, pair< double, double > > pdfCache
Cache PDFs evaluated at x and x/z.