herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
25namespace Herwig {
26
27using namespace ThePEG;
28
38class MEee2gZ2qq: public HwMEBase {
39
40public:
41
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
145
154 colourGeometries(tcDiagPtr diag) const;
155
161
162
163public:
164
172
178 void persistentInput(PersistentIStream & is, int version);
180
187 static void Init();
188
189protected:
190
197 virtual IBPtr clone() const {return new_ptr(*this);}
198
203 virtual IBPtr fullclone() const {return new_ptr(*this);}
205
206protected:
207
215 virtual void doinit();
216
226 virtual void rebind(const TranslationMap & trans)
227 ;
228
236
237protected:
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
295private:
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
334protected:
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
361private:
362
367 MEee2gZ2qq & operator=(const MEee2gZ2qq &) = delete;
368
369private:
370
379
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
481private:
482
490 Energy pTminQED_;
494 Energy pTminQCD_;
495
500
504 vector<cPDPtr> partons_;
505
509 vector<Lorentz5Momentum> loMomenta_;
511
512};
513
514}
515
516#endif /* HERWIG_MEee2gZ2qq_H */
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:87
AbstractFFVVertexPtr FFPVertex() const
Pointer to the fermion-antifermion photon vertex.
Definition: MEee2gZ2qq.h:344
PDPtr gluon() const
Pointer to the particle data object for the gluon.
Definition: MEee2gZ2qq.h:359
PDPtr gamma() const
Pointer to the particle data object for the photon.
Definition: MEee2gZ2qq.h:354
double PS(double x1, double x2)
The matrix element, given , .
MEee2gZ2qq()
The default constructor.
Definition: MEee2gZ2qq.h:45
double d_kt2_
The initial kappa-tilde values for radiation from the antiquark.
Definition: MEee2gZ2qq.h:464
virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr, ShowerInteraction)
Apply the POWHEG style correction.
virtual bool softMatrixElementVeto(PPtr parent, PPtr progenitor, const bool &fs, const Energy &highestpT, const vector< tcPDPtr > &ids, const double &z, const Energy &scale, const Energy &pT)
Apply the soft matrix element correction.
bool spinCorrelations_
Switch on/off the helivity vertex construction.
Definition: MEee2gZ2qq.h:414
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr)
Apply the hard matrix element correction to a given hard process or decay.
AbstractFFVVertexPtr FFZVertex_
Pointers to the vertices.
Definition: MEee2gZ2qq.h:398
Energy d_Q_
CM energy.
Definition: MEee2gZ2qq.h:439
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
AbstractFFVVertexPtr FFGVertex_
Pointer to the fermion-antifermion photon vertex.
Definition: MEee2gZ2qq.h:408
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEee2gZ2qq.h:197
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
int maxflav_
The maximum PDG of the quarks to be produced.
Definition: MEee2gZ2qq.h:383
AbstractFFVVertexPtr FFZVertex() const
Pointer to the fermion-antifermion Z vertex.
Definition: MEee2gZ2qq.h:339
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEee2gZ2qq.h:203
virtual bool hasMECorrection()
Has an old fashioned ME correction.
Definition: MEee2gZ2qq.h:63
PDPtr Z0_
Pointer to the ParticleData objects.
Definition: MEee2gZ2qq.h:423
vector< Lorentz5Momentum > loMomenta_
Momenta of the leading-order partons.
Definition: MEee2gZ2qq.h:509
RealEmissionProcessPtr calculateRealEmission(RealEmissionProcessPtr born, bool veto, ShowerInteraction inter)
Calculate the reall emission.
virtual void constructVertex(tSubProPtr)
Construct the vertex of spin correlations.
ProductionMatrixElement HelicityME(vector< SpinorWaveFunction > &fin, vector< SpinorBarWaveFunction > &ain, vector< SpinorBarWaveFunction > &fout, vector< SpinorWaveFunction > &aout, double &me, double &cont, double &BW) const
Member to calculate the matrix element.
Energy d_m_
Quark mass.
Definition: MEee2gZ2qq.h:444
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
AbstractFFVVertexPtr FFPVertex_
Pointer to the fermion-antifermion photon vertex.
Definition: MEee2gZ2qq.h:403
ShowerAlphaPtr alphaQCD_
Pointer to the strong coupling.
Definition: MEee2gZ2qq.h:474
MEee2gZ2qq & operator=(const MEee2gZ2qq &)=delete
The assignment operator is private and must never be called.
static void Init()
The standard Init function used to initialize the interfaces.
double getKfromX(double, double)
Calculate .
virtual POWHEGType hasPOWHEGCorrection()
Members for hard corrections to the emission of QCD radiation.
Definition: MEee2gZ2qq.h:58
double preFactor_
Overestimate for the prefactor.
Definition: MEee2gZ2qq.h:499
pair< Energy, ShowerInteraction > generateHard(RealEmissionProcessPtr, vector< Lorentz5Momentum > &emission, unsigned int &iemit, unsigned int &ispect, bool applyVeto, ShowerInteraction)
Generate the momenta for a hard configuration.
vector< cPDPtr > partons_
ParticleData objects for the partons.
Definition: MEee2gZ2qq.h:504
unsigned int massopt_
Option for the treatment of the top quark mass.
Definition: MEee2gZ2qq.h:388
double meRatio(vector< cPDPtr > partons, vector< Lorentz5Momentum > momenta, unsigned int iemitter, ShowerInteraction inter, bool subtract=false) const
The ratio of the matrix element for one additional jet over the leading order result.
double MEV(double, double)
Vector and axial vector parts of the matrix element.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
InvEnergy2 realME(const vector< cPDPtr > &partons, const vector< Lorentz5Momentum > &momenta, ShowerInteraction inter) const
Calculate the matrix element for .
virtual void initializeMECorrection(RealEmissionProcessPtr, double &, double &)
Initialize the ME correction.
PDPtr gluon_
Pointer to the particle data object for the gluon.
Definition: MEee2gZ2qq.h:433
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
double d_v_
The v parameter.
Definition: MEee2gZ2qq.h:454
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
PDPtr Z0() const
Pointer to the particle data object for the Z.
Definition: MEee2gZ2qq.h:349
static const double EPS_
Cut-off parameter.
Definition: MEee2gZ2qq.h:469
Energy pTminQCD_
The cut off on pt for QCD, assuming massless quarks.
Definition: MEee2gZ2qq.h:494
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
Energy pTminQED_
Variables for the POWHEG style corrections.
Definition: MEee2gZ2qq.h:490
PDPtr gamma_
Pointer to the particle data object for the photon.
Definition: MEee2gZ2qq.h:428
ShowerAlphaPtr alphaQED_
Pointer to the EM coupling.
Definition: MEee2gZ2qq.h:479
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
double d_rho_
The rho parameter.
Definition: MEee2gZ2qq.h:449
double loME(const vector< cPDPtr > &partons, const vector< Lorentz5Momentum > &momenta, bool first) const
Calculate the matrix element for .
int minflav_
Parameters controlling the leading-order process.
Definition: MEee2gZ2qq.h:378
double d_kt1_
The initial kappa-tilde values for radiation from the quark.
Definition: MEee2gZ2qq.h:459
The storage of the helicity amplitude expression for the matrix element of a hard process.
vector< DiagPtr > DiagramVector
virtual Energy2 scale() const
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
vector< IBPtr > IVector