herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEee2gZ2qq.h
1 // -*- C++ -*-
2 //
3 // MEee2gZ2qq.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_MEee2gZ2qq_H
10 #define HERWIG_MEee2gZ2qq_H
11 //
12 // This is the declaration of the MEee2gZ2qq class.
13 //
14 
15 #include "Herwig/MatrixElement/HwMEBase.h"
16 #include "Herwig/Models/StandardModel/StandardModel.h"
17 #include "ThePEG/PDT/EnumParticles.h"
18 #include "ThePEG/Repository/EventGenerator.h"
19 #include "ThePEG/Utilities/Rebinder.h"
20 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
21 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
22 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
23 #include "Herwig/Shower/ShowerAlpha.h"
24 
25 namespace Herwig {
26 
27 using namespace ThePEG;
28 
38 class MEee2gZ2qq: public HwMEBase {
39 
40 public:
41 
45  MEee2gZ2qq() : minflav_(1), maxflav_(5), massopt_(1),
46  spinCorrelations_(true),
47  pTminQED_(GeV), pTminQCD_(GeV),
48  preFactor_(6.)
49  {}
50 
58  virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
59 
63  virtual bool hasMECorrection() {return true;}
64 
68  virtual void initializeMECorrection(RealEmissionProcessPtr, double &,
69  double & );
70 
74  virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr);
75 
88  virtual bool softMatrixElementVeto(PPtr parent,
89  PPtr progenitor,
90  const bool & fs,
91  const Energy & highestpT,
92  const vector<tcPDPtr> & ids,
93  const double & z,
94  const Energy & scale,
95  const Energy & pT);
96 
100  virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,ShowerInteraction);
102 
109  virtual unsigned int orderInAlphaS() const;
110 
115  virtual unsigned int orderInAlphaEW() const;
116 
124  virtual double me2() const;
125 
129  virtual Energy2 scale() const;
130 
134  virtual void getDiagrams() const;
135 
144  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
145 
154  colourGeometries(tcDiagPtr diag) const;
155 
159  virtual void constructVertex(tSubProPtr);
161 
162 
163 public:
164 
171  void persistentOutput(PersistentOStream & os) const;
172 
178  void persistentInput(PersistentIStream & is, int version);
180 
187  static void Init();
188 
189 protected:
190 
197  virtual IBPtr clone() const {return new_ptr(*this);}
198 
203  virtual IBPtr fullclone() const {return new_ptr(*this);}
205 
206 protected:
207 
215  virtual void doinit();
216 
226  virtual void rebind(const TranslationMap & trans)
227  ;
228 
234  virtual IVector getReferences();
236 
237 protected:
238 
245  double loME(const vector<cPDPtr> & partons,
246  const vector<Lorentz5Momentum> & momenta,
247  bool first) const;
248 
259  ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> & fin,
260  vector<SpinorBarWaveFunction> & ain,
261  vector<SpinorBarWaveFunction> & fout,
262  vector<SpinorWaveFunction> & aout,
263  double & me,
264  double & cont,
265  double & BW ) const;
266 
279  double meRatio(vector<cPDPtr> partons,
280  vector<Lorentz5Momentum> momenta,
281  unsigned int iemitter,
282  ShowerInteraction inter,
283  bool subtract =false) const;
284 
291  InvEnergy2 realME(const vector<cPDPtr> & partons,
292  const vector<Lorentz5Momentum> & momenta,
293  ShowerInteraction inter) const;
294 
295 private:
296 
300  pair<Energy,ShowerInteraction>
301  generateHard(RealEmissionProcessPtr,
302  vector<Lorentz5Momentum> & emission,
303  unsigned int & iemit, unsigned int & ispect,
304  bool applyVeto,ShowerInteraction);
305 
309  RealEmissionProcessPtr calculateRealEmission(RealEmissionProcessPtr born, bool veto,
310  ShowerInteraction inter);
311 
315  double getKfromX(double, double);
316 
324  double MEV(double, double);
325 
331  double PS(double x1, double x2);
333 
334 protected:
335 
339  AbstractFFVVertexPtr FFZVertex() const {return FFZVertex_;}
340 
344  AbstractFFVVertexPtr FFPVertex() const {return FFPVertex_;}
345 
349  PDPtr Z0() const {return Z0_;}
350 
354  PDPtr gamma() const {return gamma_;}
355 
359  PDPtr gluon() const {return gluon_;}
360 
361 private:
362 
367  MEee2gZ2qq & operator=(const MEee2gZ2qq &) = delete;
368 
369 private:
370 
378  int minflav_;
379 
383  int maxflav_;
384 
388  unsigned int massopt_;
390 
398  AbstractFFVVertexPtr FFZVertex_;
399 
403  AbstractFFVVertexPtr FFPVertex_;
404 
408  AbstractFFVVertexPtr FFGVertex_;
410 
415 
424 
429 
435 
439  Energy d_Q_;
440 
444  Energy d_m_;
445 
449  double d_rho_;
450 
454  double d_v_;
455 
459  double d_kt1_;
460 
464  double d_kt2_;
465 
469  static const double EPS_;
470 
474  ShowerAlphaPtr alphaQCD_;
475 
479  ShowerAlphaPtr alphaQED_;
480 
481 private:
482 
490  Energy pTminQED_;
494  Energy pTminQCD_;
495 
499  double preFactor_;
500 
504  vector<cPDPtr> partons_;
505 
509  vector<Lorentz5Momentum> loMomenta_;
511 
512 };
513 
514 }
515 
516 #endif /* HERWIG_MEee2gZ2qq_H */
double d_kt2_
The initial kappa-tilde values for radiation from the antiquark.
Definition: MEee2gZ2qq.h:464
bool spinCorrelations_
Switch on/off the helivity vertex construction.
Definition: MEee2gZ2qq.h:414
void persistentInput(PersistentIStream &is, int version)
ThePEG::Ptr< Particle >::pointer PPtr
Energy d_Q_
CM energy.
Definition: MEee2gZ2qq.h:439
double d_v_
The v parameter.
Definition: MEee2gZ2qq.h:454
virtual void constructVertex(tSubProPtr sub)
const DiagramVector & diagrams() const
ShowerInteraction
Handy header file to be included in all Shower classes.
double d_rho_
The rho parameter.
Definition: MEee2gZ2qq.h:449
AbstractFFVVertexPtr FFGVertex_
Pointer to the fermion-antifermion photon vertex.
Definition: MEee2gZ2qq.h:408
virtual bool hasMECorrection()
Has an old fashioned ME correction.
Definition: MEee2gZ2qq.h:63
AbstractFFVVertexPtr FFZVertex_
Pointers to the vertices.
Definition: MEee2gZ2qq.h:398
PDPtr Z0_
Pointer to the ParticleData objects.
Definition: MEee2gZ2qq.h:423
double preFactor_
Overestimate for the prefactor.
Definition: MEee2gZ2qq.h:499
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEee2gZ2qq.h:197
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual double me2() const
virtual Energy2 scale() const
ShowerAlphaPtr alphaQCD_
Pointer to the strong coupling.
Definition: MEee2gZ2qq.h:474
AbstractFFVVertexPtr FFPVertex() const
Pointer to the fermion-antifermion photon vertex.
Definition: MEee2gZ2qq.h:344
vector< Lorentz5Momentum > loMomenta_
Momenta of the leading-order partons.
Definition: MEee2gZ2qq.h:509
virtual void doinit()
AbstractFFVVertexPtr FFPVertex_
Pointer to the fermion-antifermion photon vertex.
Definition: MEee2gZ2qq.h:403
The storage of the helicity amplitude expression for the matrix element of a hard process...
virtual POWHEGType hasPOWHEGCorrection()
Members for hard corrections to the emission of QCD radiation.
Definition: MEee2gZ2qq.h:58
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEee2gZ2qq.h:203
PDPtr gamma_
Pointer to the particle data object for the photon.
Definition: MEee2gZ2qq.h:428
PDPtr gamma() const
Pointer to the particle data object for the photon.
Definition: MEee2gZ2qq.h:354
unsigned int massopt_
Option for the treatment of the top quark mass.
Definition: MEee2gZ2qq.h:388
vector< cPDPtr > partons_
ParticleData objects for the partons.
Definition: MEee2gZ2qq.h:504
virtual unsigned int orderInAlphaS() const
ShowerAlphaPtr alphaQED_
Pointer to the EM coupling.
Definition: MEee2gZ2qq.h:479
static const double EPS_
Cut-off parameter.
Definition: MEee2gZ2qq.h:469
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
Energy pTminQED_
Variables for the POWHEG style corrections.
Definition: MEee2gZ2qq.h:490
ThePEG::Ptr< ParticleData >::pointer PDPtr
virtual unsigned int orderInAlphaEW() const
Energy pTminQCD_
The cut off on pt for QCD, assuming massless quarks.
Definition: MEee2gZ2qq.h:494
virtual Selector< const ColourLines *> colourGeometries(tcDiagPtr diag) const
int minflav_
Parameters controlling the leading-order process.
Definition: MEee2gZ2qq.h:378
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:87
int maxflav_
The maximum PDG of the quarks to be produced.
Definition: MEee2gZ2qq.h:383
virtual void getDiagrams() const
static void Init()
void persistentOutput(PersistentOStream &os) const
PDPtr Z0() const
Pointer to the particle data object for the Z.
Definition: MEee2gZ2qq.h:349
vector< DiagPtr > DiagramVector
-*- C++ -*-
PDPtr gluon_
Pointer to the particle data object for the gluon.
Definition: MEee2gZ2qq.h:433
virtual IVector getReferences()
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
vector< IBPtr > IVector
MEee2gZ2qq & operator=(const MEee2gZ2qq &)=delete
double d_kt1_
The initial kappa-tilde values for radiation from the quark.
Definition: MEee2gZ2qq.h:459
AbstractFFVVertexPtr FFZVertex() const
Pointer to the fermion-antifermion Z vertex.
Definition: MEee2gZ2qq.h:339
virtual void rebind(const TranslationMap &)
MEee2gZ2qq()
The default constructor.
Definition: MEee2gZ2qq.h:45
Energy d_m_
Quark mass.
Definition: MEee2gZ2qq.h:444
PDPtr gluon() const
Pointer to the particle data object for the gluon.
Definition: MEee2gZ2qq.h:359