herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MEqq2W2ffPowheg.h
1 // -*- C++ -*-
2 //
3 // MEqq2W2ffPowheg.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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_MEqq2W2ffPowheg_H
10 #define HERWIG_MEqq2W2ffPowheg_H
11 //
12 // This is the declaration of the MEqq2W2ffPowheg class.
13 //
14 
15 #include "Herwig/MatrixElement/Hadron/MEqq2W2ff.h"
16 #include "ThePEG/PDF/BeamParticleData.h"
17 
18 namespace Herwig {
19 using namespace ThePEG;
20 
28 class MEqq2W2ffPowheg: public MEqq2W2ff {
29 
30 public:
31 
36 
42  virtual Energy2 scale() const;
43 
48  virtual int nDim() const;
49 
57  virtual bool generateKinematics(const double * r);
58 
64  virtual CrossSection dSigHatDR() const;
66 
67 public:
68 
75  void persistentOutput(PersistentOStream & os) const;
76 
82  void persistentInput(PersistentIStream & is, int version);
84 
91  static void Init();
92 
93 protected:
94 
99  double NLOweight() const;
103  double x(double xt, double v) const;
107  double x_a(double x, double v) const;
111  double x_b(double x, double v) const;
115  double xbar(double v) const;
120  double Ltilde_qg(double x, double v) const;
125  double Ltilde_gq(double x, double v) const;
130  double Ltilde_qq(double x, double v) const;
134  double Vtilde_qq() const;
139  double Ccalbar_qg(double x) const;
144  double Fcal_qg(double x, double v) const;
149  double Fcal_gq(double x, double v) const;
154  double Fcal_qq(double x, double v) const;
159  double Ftilde_qg(double xt, double v) const;
164  double Ftilde_gq(double xt, double v) const;
169  double Ftilde_qq(double xt, double v) const;
174  double Ctilde_qg(double x, double v) const;
179  double Ctilde_gq(double x, double v) const;
184  double Ctilde_qq(double x, double v) const;
185 
186 protected:
187 
194  virtual IBPtr clone() const { return new_ptr(*this); }
195 
200  virtual IBPtr fullclone() const { return new_ptr(*this); }
202 
203 protected:
204 
212  virtual void doinit();
214 
215 private:
216 
222 
227  MEqq2W2ffPowheg & operator=(const MEqq2W2ffPowheg &) = delete;
228 
229 private:
230 
234  mutable double _xb_a;
235 
239  mutable double _xb_b;
240 
245 
250 
254  mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_A;
255 
259  mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_B;
260 
265 
269  const double TR_;
270 
274  const double CF_;
275 
279  mutable double _alphaS2Pi;
280 
284  mutable Energy2 _mll2;
285 
289  mutable Energy2 _mu2;
290 
298  unsigned int _contrib;
299 
303  unsigned int _nlo_alphaS_opt;
304 
309 
313  double _a;
314 
318  double _p;
319 
323  double _eps;
325 
333  unsigned int _scaleopt;
334 
338  Energy _fixedScale;
339 
343  double _scaleFact;
345 
353  double _xt;
354 
358  double _v;
360 
368  mutable double _oldq;
369 
373  mutable double _oldqbar;
375 };
376 
377 }
378 
379 #include "ThePEG/Utilities/ClassTraits.h"
380 
381 namespace ThePEG {
382 
387 template <>
388 struct BaseClassTrait<Herwig::MEqq2W2ffPowheg,1> {
390  typedef Herwig::MEqq2W2ff NthBase;
391 };
392 
395 template <>
396 struct ClassTraits<Herwig::MEqq2W2ffPowheg>
397  : public ClassTraitsBase<Herwig::MEqq2W2ffPowheg> {
399  static string className() { return "Herwig::MEqq2W2ffPowheg"; }
403  static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; }
404 };
405 
408 }
409 
410 #endif /* HERWIG_MEqq2W2ffPowheg_H */
virtual IBPtr clone() const
Make a simple clone of this object.
double _xt
Radiation variables.
unsigned int _scaleopt
Choice of the scale.
double _xb_b
The momentum fraction of the second parton in the Born process.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
tcPDPtr _parton_b
The ParticleData object for the second parton in the Born process.
double _oldq
Values of the PDF&#39;s before radiation.
The MEqq2W2ffPowheg class implements the matrix element for including the decay of the to Standard ...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double _xb_a
The momentum fraction of the first parton in the Born process.
Energy2 _mu2
The renormalization/factorization scale.
Ptr< BeamParticleData >::transient_const_pointer _hadron_A
The BeamParticleData object for the first hadron.
double _alphaS2Pi
The value of used for the calculation.
unsigned int _contrib
Parameters for the NLO weight.
double _oldqbar
For the antiquark.
Energy _fixedScale
Fixed scale if used.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
double _p
The power of the correction term to reduce the negative contribution.
double _scaleFact
Prefactor if variable scale used.
static ClassDescription< MEqq2W2ffPowheg > initMEqq2W2ffPowheg
The static object used to initialize the description of this class.
Energy2 _mll2
The mass squared of the lepton pair.
Ptr< BeamParticleData >::transient_const_pointer _hadron_B
The BeamParticleData object for the second hadron.
const double TR_
The colour factor.
double _eps
Cut-off for the correction function.
double _v
The angular variable.
-*- C++ -*-
unsigned int _nlo_alphaS_opt
Whether to use a fixed or a running QCD coupling for the NLO weight.
The MEqq2W2ff class implements the matrix element for including the decay of the to Standard Model ...
Definition: MEqq2W2ff.h:33
tcPDPtr _parton_a
The ParticleData object for the first parton in the Born process.
double _a
The magnitude of the correction term to reduce the negative contribution.
const double CF_
The colour factor.
double _fixed_alphaS
The value of alphaS to use for the nlo weight if _nloalphaSopt=1.
tcPDPtr _gluon
the ParticleData object for the gluon