herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MEqq2W2ff.h
1 // -*- C++ -*-
2 //
3 // MEqq2W2ff.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_MEqq2W2ff_H
10 #define HERWIG_MEqq2W2ff_H
11 //
12 // This is the declaration of the MEqq2W2ff class.
13 //
14 
15 #include "Herwig/MatrixElement/DrellYanBase.h"
16 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
17 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
18 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
19 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh"
20 
21 namespace Herwig {
22 
23 using namespace ThePEG;
24 using namespace ThePEG::Helicity;
25 
33 class MEqq2W2ff: public DrellYanBase {
34 
35 public:
36 
40  MEqq2W2ff();
41 
48  virtual unsigned int orderInAlphaS() const;
49 
54  virtual unsigned int orderInAlphaEW() const;
55 
63  virtual double me2() const;
64 
68  virtual Energy2 scale() const;
69 
73  virtual void getDiagrams() const;
74 
83  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
84 
93  colourGeometries(tcDiagPtr diag) const;
94 
98  virtual void constructVertex(tSubProPtr);
100 
101 
102 public:
103 
110  void persistentOutput(PersistentOStream & os) const;
111 
117  void persistentInput(PersistentIStream & is, int version);
119 
126  static void Init();
127 
128 protected:
129 
138  double qqbarME(vector<SpinorWaveFunction> & fin ,
139  vector<SpinorBarWaveFunction> & ain ,
140  vector<SpinorBarWaveFunction> & fout,
141  vector<SpinorWaveFunction> & aout,
142  bool me) const;
143 
144 protected:
145 
152  virtual IBPtr clone() const { return new_ptr(*this); }
153 
158  virtual IBPtr fullclone() const { return new_ptr(*this); }
160 
161 protected:
162 
170  virtual void doinit();
172 
173 private:
174 
180 
185  MEqq2W2ff & operator=(const MEqq2W2ff &) = delete;
186 
187 private:
188 
192  AbstractFFVVertexPtr _theFFWVertex;
193 
202 
208 
216  unsigned int _maxflavour;
217 
221  unsigned int _plusminus;
222 
226  unsigned int _process;
228 
233 };
234 
235 }
236 
237 #include "ThePEG/Utilities/ClassTraits.h"
238 
239 namespace ThePEG {
240 
245 template <>
246 struct BaseClassTrait<Herwig::MEqq2W2ff,1> {
248  typedef Herwig::DrellYanBase NthBase;
249 };
250 
253 template <>
254 struct ClassTraits<Herwig::MEqq2W2ff>
255  : public ClassTraitsBase<Herwig::MEqq2W2ff> {
257  static string className() { return "Herwig::MEqq2W2ff"; }
261  static string library() { return "HwMEHadron.so"; }
262 };
263 
266 }
267 
268 #endif /* HERWIG_MEqq2W2ff_H */
ProductionMatrixElement _me
Matrix element for spin correlations.
Definition: MEqq2W2ff.h:232
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEqq2W2ff.h:158
unsigned int _process
Which decay products of the to include.
Definition: MEqq2W2ff.h:226
The DrellYanBase class class provides a base class for the implemented of Drell-Yan type processes an...
Definition: DrellYanBase.h:23
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
The storage of the helicity amplitude expression for the matrix element of a hard process...
tcPDPtr _wm
Pointer to the .
Definition: MEqq2W2ff.h:206
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
unsigned int _maxflavour
Switches to control the particles in the hard process.
Definition: MEqq2W2ff.h:216
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
tcPDPtr _wp
Pointers to the intermediates resonances.
Definition: MEqq2W2ff.h:201
vector< DiagPtr > DiagramVector
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEqq2W2ff.h:152
-*- C++ -*-
AbstractFFVVertexPtr _theFFWVertex
Pointer to the W vertex.
Definition: MEqq2W2ff.h:192
The MEqq2W2ff class implements the matrix element for including the decay of the to Standard Model ...
Definition: MEqq2W2ff.h:33
static ClassDescription< MEqq2W2ff > initMEqq2W2ff
The static object used to initialize the description of this class.
Definition: MEqq2W2ff.h:179
unsigned int _plusminus
Which intermediate bosons to include.
Definition: MEqq2W2ff.h:221