herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEqq2W2ff.h
1 // -*- C++ -*-
2 //
3 // MEqq2W2ff.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_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 
179  MEqq2W2ff & operator=(const MEqq2W2ff &) = delete;
180 
181 private:
182 
186  AbstractFFVVertexPtr _theFFWVertex;
187 
196 
202 
210  unsigned int _maxflavour;
211 
215  unsigned int _plusminus;
216 
220  unsigned int _process;
222 
227 };
228 
229 }
230 
231 #endif /* HERWIG_MEqq2W2ff_H */
ProductionMatrixElement _me
Matrix element for spin correlations.
Definition: MEqq2W2ff.h:226
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:220
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:200
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
unsigned int _maxflavour
Switches to control the particles in the hard process.
Definition: MEqq2W2ff.h:210
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
tcPDPtr _wp
Pointers to the intermediates resonances.
Definition: MEqq2W2ff.h:195
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:186
The MEqq2W2ff class implements the matrix element for including the decay of the to Standard Model ...
Definition: MEqq2W2ff.h:33
unsigned int _plusminus
Which intermediate bosons to include.
Definition: MEqq2W2ff.h:215