herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEee2gZ2ll.h
1// -*- C++ -*-
2//
3// MEee2gZ2ll.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_MEee2gZ2ll_H
10#define HERWIG_MEee2gZ2ll_H
11//
12// This is the declaration of the MEee2gZ2ll class.
13//
14
15#include "Herwig/MatrixElement/HwMEBase.h"
16#include "Herwig/Models/StandardModel/StandardModel.h"
17#include "ThePEG/PDT/EnumParticles.h"
18#include "Herwig/MatrixElement/ProductionMatrixElement.h"
19#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
20#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
21#include "Herwig/Shower/ShowerAlpha.h"
22
23namespace Herwig {
24
25using namespace ThePEG;
26
35class MEee2gZ2ll: public HwMEBase {
36
37public:
38
42 MEee2gZ2ll() : allowed_(0), pTmin_(GeV),
43 preFactor_(6.) {
44 massOption(vector<unsigned int>(2,1));
45 }
46
54 virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
55
59 virtual bool hasMECorrection() {return false;}
60
64 virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,
67
68public:
69
76 virtual unsigned int orderInAlphaS() const;
77
82 virtual unsigned int orderInAlphaEW() const;
83
91 virtual double me2() const;
92
96 virtual Energy2 scale() const;
97
101 virtual void getDiagrams() const;
102
112
121 colourGeometries(tcDiagPtr diag) const;
122
128
129
130public:
131
139
145 void persistentInput(PersistentIStream & is, int version);
147
154 static void Init();
155
156protected:
157
164 virtual IBPtr clone() const {return new_ptr(*this);}
165
170 virtual IBPtr fullclone() const {return new_ptr(*this);}
172
173protected:
174
182 virtual void doinit();
183
193 virtual void rebind(const TranslationMap & trans)
194 ;
195
203
204protected:
205
211 double loME(const vector<cPDPtr> & partons,
212 const vector<Lorentz5Momentum> & momenta,
213 bool first) const;
214
225 ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> & fin,
226 vector<SpinorBarWaveFunction> & ain,
227 vector<SpinorBarWaveFunction> & fout,
228 vector<SpinorWaveFunction> & aout,
229 double & me,
230 double & cont,
231 double & BW ) const;
232
244 double meRatio(vector<cPDPtr> partons,
245 vector<Lorentz5Momentum> momenta,
246 unsigned int iemittor,
247 bool subtract=false) const;
248
255 InvEnergy2 realME(const vector<cPDPtr> & partons,
256 const vector<Lorentz5Momentum> & momenta) const;
257
261 Energy generateHard(RealEmissionProcessPtr tree,
262 vector<Lorentz5Momentum> & emission,
263 unsigned int & iemit, unsigned int & ispect,
264 bool applyVeto);
265
266
267protected:
268
272 AbstractFFVVertexPtr FFZVertex() const {return FFZVertex_;}
273
277 AbstractFFVVertexPtr FFPVertex() const {return FFPVertex_;}
278
282 PDPtr Z0() const {return Z0_;}
283
287 PDPtr gamma() const {return gamma_;}
288
289private:
290
295 MEee2gZ2ll & operator=(const MEee2gZ2ll &) = delete;
296
297private:
298
306 AbstractFFVVertexPtr FFZVertex_;
307
311 AbstractFFVVertexPtr FFPVertex_;
313
317 PDPtr Z0_;
318
322 PDPtr gamma_;
323
327 int allowed_;
328
332 ShowerAlphaPtr alphaQED_;
333
341 Energy pTmin_;
342
346 double preFactor_;
347
351 vector<cPDPtr> partons_;
352
356 vector<Lorentz5Momentum> loMomenta_;
358
359};
360
361}
362
363#endif /* HERWIG_MEee2gZ2ll_H */
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
HwMEBase & operator=(const HwMEBase &)=delete
The assignment operator is private and must never be called.
void massOption(vector< unsigned int > iopt)
Set the treatment of the outgoing masses.
Definition: HwMEBase.h:206
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:87
The MEee2gZ2ll class provides the matrix element for .
Definition: MEee2gZ2ll.h:35
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual bool hasMECorrection()
Has an old fashioned ME correction.
Definition: MEee2gZ2ll.h:59
virtual void constructVertex(tSubProPtr)
Construct the vertex of spin correlations.
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEee2gZ2ll.h:164
static void Init()
The standard Init function used to initialize the interfaces.
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEee2gZ2ll.h:170
virtual POWHEGType hasPOWHEGCorrection()
Members for hard corrections to the emission of QCD radiation.
Definition: MEee2gZ2ll.h:54
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
double meRatio(vector< cPDPtr > partons, vector< Lorentz5Momentum > momenta, unsigned int iemittor, bool subtract=false) const
The ratio of the matrix element for one additional jet over the leading order result.
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
double loME(const vector< cPDPtr > &partons, const vector< Lorentz5Momentum > &momenta, bool first) const
Calculate the matrix element for .
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
MEee2gZ2ll()
The default constructor.
Definition: MEee2gZ2ll.h:42
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
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.
virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr, ShowerInteraction)
Apply the POWHEG style correction.
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
The storage of the helicity amplitude expression for the matrix element of a hard process.
vector< DiagPtr > DiagramVector
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
Qty< 0, 1, 0 > Energy
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
vector< IBPtr > IVector