herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEfftoffH.h
1 // -*- C++ -*-
2 #ifndef HERWIG_MEfftoffH_H
3 #define HERWIG_MEfftoffH_H
4 //
5 // This is the declaration of the MEfftoffH class.
6 //
7 
8 #include "HwMEBase.h"
9 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
10 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
11 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
12 #include "Herwig/PDT/GenericMassGenerator.h"
13 
14 namespace Herwig {
15 
16 using namespace ThePEG;
17 
25 class MEfftoffH: public HwMEBase {
26 
27 public:
28 
32  MEfftoffH() : _shapeopt(2), _maxflavour(5), _minflavour(1), _process(0),
33  _mh(), _wh(), _swap(false) {}
34 
41  virtual unsigned int orderInAlphaS() const;
42 
47  virtual unsigned int orderInAlphaEW() const;
48 
56  virtual double me2() const;
57 
61  virtual Energy2 scale() const;
62 
70  virtual void setKinematics();
71 
76  virtual int nDim() const;
77 
86  virtual bool generateKinematics(const double * r);
87 
92  virtual CrossSection dSigHatDR() const;
93 
102  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
103 
112  colourGeometries(tcDiagPtr diag) const;
113 
117  virtual void constructVertex(tSubProPtr);
119 
120 
121 public:
122 
129  void persistentOutput(PersistentOStream & os) const;
130 
136  void persistentInput(PersistentIStream & is, int version);
138 
145  static void Init();
146 
147 protected:
148 
159  double helicityME(vector<SpinorWaveFunction> & f1 ,
160  vector<SpinorWaveFunction> & f2 ,
161  vector<SpinorBarWaveFunction> & a1,
162  vector<SpinorBarWaveFunction> & a2,
163  bool swap1, bool swap2,
164  bool me) const;
165 
173  PDPtr WPlus() const {return _wplus;}
174 
178  PDPtr WMinus() const {return _wminus;}
179 
183  PDPtr Z0() const {return _z0;}
184 
188  PDPtr higgs() const {return _higgs;}
189 
193  void higgs(PDPtr in) {_higgs=in;}
195 
199  void setWWHVertex(AbstractVVSVertexPtr in) {
200  _vertexWWH = in;
201  }
202 
206  void lineShape(unsigned int in) {_shapeopt=in;}
207 
211  unsigned int process() const {return _process;}
212 
216  bool swapOrder() {return _swap;}
217 
221  void process(unsigned int in) {_process = in;}
222 
226  unsigned int maxFlavour() const {return _maxflavour;}
227 
231  unsigned int minFlavour() const {return _minflavour;}
232 
233 protected:
234 
242  virtual void doinit();
244 
245 private:
246 
251  MEfftoffH & operator=(const MEfftoffH &) = delete;
252 
253 private:
254 
258  unsigned int _shapeopt;
259 
263  unsigned int _maxflavour;
264 
268  unsigned int _minflavour;
269 
273  unsigned int _process;
274 
283 
288 
293 
299 
307  AbstractFFVVertexPtr _vertexFFW;
308 
312  AbstractFFVVertexPtr _vertexFFZ;
313 
317  AbstractVVSVertexPtr _vertexWWH;
319 
323  Energy _mh;
324 
328  Energy _wh;
329 
333  GenericMassGeneratorPtr _hmass;
334 
335 
340 
344  bool _swap;
345 };
346 
347 }
348 
349 #endif /* HERWIG_MEfftoffH_H */
void setWWHVertex(AbstractVVSVertexPtr in)
Set the pointer to the vector-vector-Higgs vertex.
Definition: MEfftoffH.h:199
unsigned int _shapeopt
Defines the Higgs resonance shape.
Definition: MEfftoffH.h:258
PDPtr Z0() const
Access to the data.
Definition: MEfftoffH.h:183
AbstractFFVVertexPtr _vertexFFZ
Vertex for fermion-fermion-Z.
Definition: MEfftoffH.h:312
unsigned int _process
Whether to include $WW$ and $ZZ$ processes or both.
Definition: MEfftoffH.h:273
MEfftoffH()
The default constructor.
Definition: MEfftoffH.h:32
Energy _mh
On-shell mass for the higgs.
Definition: MEfftoffH.h:323
void process(unsigned int in)
Which process to generate.
Definition: MEfftoffH.h:221
void higgs(PDPtr in)
Set the Higgs boson.
Definition: MEfftoffH.h:193
The MEfftoffH class is the base class for vector boson fusion type processes in Herwig.
Definition: MEfftoffH.h:25
unsigned int _maxflavour
Maximum flavour of the quarks involved.
Definition: MEfftoffH.h:263
Energy _wh
On-shell width for the higgs.
Definition: MEfftoffH.h:328
void lineShape(unsigned int in)
Set the line shape treatment.
Definition: MEfftoffH.h:206
bool _swap
if order swaped
Definition: MEfftoffH.h:344
The storage of the helicity amplitude expression for the matrix element of a hard process...
unsigned int maxFlavour() const
Maximum flavour of the incoming partons.
Definition: MEfftoffH.h:226
unsigned int process() const
Which process to generate.
Definition: MEfftoffH.h:211
unsigned int _minflavour
Minimum flavour of the quarks involved.
Definition: MEfftoffH.h:268
AbstractVVSVertexPtr _vertexWWH
Vertex for vector-vector-Higgs.
Definition: MEfftoffH.h:317
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
ProductionMatrixElement _me
Matrix element for spin correlations.
Definition: MEfftoffH.h:339
PDPtr _higgs
Higgs boson.
Definition: MEfftoffH.h:297
PDPtr WMinus() const
Access to the data.
Definition: MEfftoffH.h:178
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
Definition: MEfftoffH.h:333
PDPtr WPlus() const
Access to the vector ParticleData objects.
Definition: MEfftoffH.h:173
PDPtr higgs() const
Access to the Higgs boson.
Definition: MEfftoffH.h:188
vector< DiagPtr > DiagramVector
-*- C++ -*-
PDPtr _wplus
The intermediate vector bosons.
Definition: MEfftoffH.h:282
AbstractFFVVertexPtr _vertexFFW
The vertices for the calculation of the matrix element.
Definition: MEfftoffH.h:307
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
unsigned int minFlavour() const
Minimum flavour of the incoming partons.
Definition: MEfftoffH.h:231
bool swapOrder()
Whether momenta are swapped.
Definition: MEfftoffH.h:216