herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEPP2QQ.h
1// -*- C++ -*-
2//
3// MEPP2QQ.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_MEPP2QQ_H
10#define HERWIG_MEPP2QQ_H
11//
12// This is the declaration of the MEPP2QQ class.
13//
14
15#include "Herwig/MatrixElement/HwMEBase.h"
16#include "Herwig/MatrixElement/ProductionMatrixElement.h"
17#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
18#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
19#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
20#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
21#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
22
23namespace Herwig {
24using namespace ThePEG;
25using namespace ThePEG::Helicity;
26
34class MEPP2QQ: public HwMEBase {
35
36public:
37
42
49 virtual unsigned int orderInAlphaS() const;
50
55 virtual unsigned int orderInAlphaEW() const;
56
64 virtual double me2() const;
65
69 virtual Energy2 scale() const;
70
74 virtual void getDiagrams() const;
75
85
94 colourGeometries(tcDiagPtr diag) const;
95
101
102
103public:
104
112
118 void persistentInput(PersistentIStream & is, int version);
120
127 static void Init();
128
129protected:
130
143 double gg2qqbarME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2,
144 vector<SpinorBarWaveFunction> & q,vector<SpinorWaveFunction> & qbar,
145 unsigned int flow) const;
146
155 double qqbar2qqbarME(vector<SpinorWaveFunction> & q1,
156 vector<SpinorBarWaveFunction> & q2,
157 vector<SpinorBarWaveFunction> & q3,
158 vector<SpinorWaveFunction> & q4,
159 unsigned int flow) const;
160
169 double qq2qqME(vector<SpinorWaveFunction> & q1, vector<SpinorWaveFunction> & q2,
170 vector<SpinorBarWaveFunction> & q3, vector<SpinorBarWaveFunction> & q4,
171 unsigned int flow) const;
172
181 double qbarqbar2qbarqbarME(vector<SpinorBarWaveFunction> & q1,
182 vector<SpinorBarWaveFunction> & q2,
183 vector<SpinorWaveFunction> & q3,
184 vector<SpinorWaveFunction> & q4,
185 unsigned int flow) const;
186
195 double qg2qgME(vector<SpinorWaveFunction> & qin,vector<VectorWaveFunction> &g2,
196 vector<SpinorBarWaveFunction> & qout,vector<VectorWaveFunction> &g4,
197 unsigned int flow) const;
198
207 double qbarg2qbargME(vector<SpinorBarWaveFunction> & qin,
208 vector<VectorWaveFunction> &g2,
209 vector<SpinorWaveFunction> & qout,vector<VectorWaveFunction> &g4,
210 unsigned int flow) const;
212
213protected:
214
221 virtual IBPtr clone() const { return new_ptr(*this); }
222
227 virtual IBPtr fullclone() const { return new_ptr(*this); }
229
230protected:
231
239 virtual void doinit();
240
250 virtual void rebind(const TranslationMap & trans)
251 ;
252
260
261private:
262
267 MEPP2QQ & operator=(const MEPP2QQ &) = delete;
268
269private:
270
278 AbstractVVVVertexPtr _gggvertex;
279
283 AbstractFFVVertexPtr _qqgvertex;
285
289 unsigned int _quarkflavour;
290
294 unsigned int _process;
295
300 unsigned int _bottomopt;
301
305 unsigned int _topopt;
306
310 unsigned int _maxflavour;
311
315 mutable unsigned int _flow;
316
320 mutable unsigned int _diagram;
321
326
335
339 vector<PDPtr> _quark;
340
344 vector<PDPtr> _antiquark;
346
347};
348
349}
350
351#endif /* HERWIG_MEPP2QQ_H */
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
The MEPP2QQ class implements the production of a heavy quark-antiquark pair via QCD.
Definition: MEPP2QQ.h:34
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
unsigned int _flow
Colour flow.
Definition: MEPP2QQ.h:315
ProductionMatrixElement _me
Matrix element.
Definition: MEPP2QQ.h:325
PDPtr _gluon
ParticleData objects of the partons.
Definition: MEPP2QQ.h:334
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
double qbarqbar2qbarqbarME(vector< SpinorBarWaveFunction > &q1, vector< SpinorBarWaveFunction > &q2, vector< SpinorWaveFunction > &q3, vector< SpinorWaveFunction > &q4, unsigned int flow) const
Matrix element for .
double qq2qqME(vector< SpinorWaveFunction > &q1, vector< SpinorWaveFunction > &q2, vector< SpinorBarWaveFunction > &q3, vector< SpinorBarWaveFunction > &q4, unsigned int flow) const
Matrix element for .
double gg2qqbarME(vector< VectorWaveFunction > &g1, vector< VectorWaveFunction > &g2, vector< SpinorBarWaveFunction > &q, vector< SpinorWaveFunction > &qbar, unsigned int flow) const
Members to calculate the matrix elements.
unsigned int _quarkflavour
Quark Flavour.
Definition: MEPP2QQ.h:289
unsigned int _maxflavour
Maximum numbere of quark flavours to include.
Definition: MEPP2QQ.h:310
MEPP2QQ & operator=(const MEPP2QQ &)=delete
The assignment operator is private and must never be called.
double qqbar2qqbarME(vector< SpinorWaveFunction > &q1, vector< SpinorBarWaveFunction > &q2, vector< SpinorBarWaveFunction > &q3, vector< SpinorWaveFunction > &q4, unsigned int flow) const
Matrix element for .
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
double qg2qgME(vector< SpinorWaveFunction > &qin, vector< VectorWaveFunction > &g2, vector< SpinorBarWaveFunction > &qout, vector< VectorWaveFunction > &g4, unsigned int flow) const
Matrix element for .
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
virtual void constructVertex(tSubProPtr)
Construct the vertex of spin correlations.
double qbarg2qbargME(vector< SpinorBarWaveFunction > &qin, vector< VectorWaveFunction > &g2, vector< SpinorWaveFunction > &qout, vector< VectorWaveFunction > &g4, unsigned int flow) const
Matrix elements for .
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEPP2QQ.h:221
AbstractFFVVertexPtr _qqgvertex
vertex
Definition: MEPP2QQ.h:283
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
vector< PDPtr > _antiquark
the antiquarks
Definition: MEPP2QQ.h:344
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEPP2QQ.h:227
unsigned int _bottomopt
Option for the treatment of bottom and lighter quark masses.
Definition: MEPP2QQ.h:300
MEPP2QQ()
The default constructor.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
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.
unsigned int _process
Processes to include.
Definition: MEPP2QQ.h:294
unsigned int _topopt
Option for the treatment of top quark masses.
Definition: MEPP2QQ.h:305
vector< PDPtr > _quark
the quarks
Definition: MEPP2QQ.h:339
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
static void Init()
The standard Init function used to initialize the interfaces.
unsigned int _diagram
Diagram.
Definition: MEPP2QQ.h:320
AbstractVVVVertexPtr _gggvertex
Vertices needed to compute the diagrams.
Definition: MEPP2QQ.h:278
The storage of the helicity amplitude expression for the matrix element of a hard process.
vector< DiagPtr > DiagramVector
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
vector< IBPtr > IVector