herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEPP2HiggsJet.h
1 // -*- C++ -*-
2 //
3 // MEPP2HiggsJet.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_MEPP2HiggsJet_H
10 #define HERWIG_MEPP2HiggsJet_H
11 //
12 // This is the declaration of the MEPP2HiggsJet class.
13 //
14 
15 #include "ThePEG/MatrixElement/ME2to2Base.h"
16 #include "Herwig/Utilities/Maths.h"
17 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
18 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
19 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
20 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
21 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
22 #include "Herwig/PDT/GenericMassGenerator.h"
23 #include "Herwig/MatrixElement/ProductionMatrixElement.h"
24 
25 namespace Herwig {
26 using namespace ThePEG;
27 using namespace ThePEG::Helicity;
28 
35 class MEPP2HiggsJet: public ME2to2Base {
36 
37 public:
38 
43  _shapeopt(2),_maxflavour(5), _process(0),
44  _minloop(6),_maxloop(6),_massopt(0) , _mh(ZERO),_wh(ZERO)
45  {}
46 
54  virtual CrossSection dSigHatDR() const;
55 
60  virtual int nDim() const;
61 
66  virtual unsigned int orderInAlphaS() const;
67 
72  virtual unsigned int orderInAlphaEW() const;
73 
81  virtual double me2() const;
82 
86  virtual Energy2 scale() const;
87 
91  virtual void getDiagrams() const;
92 
101  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
102 
111  colourGeometries(tcDiagPtr diag) const;
112 
121  virtual bool generateKinematics(const double * r);
122 
126  virtual void constructVertex(tSubProPtr);
128 
129 public:
130 
137  void persistentOutput(PersistentOStream & os) const;
138 
144  void persistentInput(PersistentIStream & is, int version);
146 
153  static void Init();
154 
155 protected:
156 
163  virtual IBPtr clone() const;
164 
169  virtual IBPtr fullclone() const;
171 
172 protected:
173 
181  virtual void doinit();
183 
184 private:
185 
198  double qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain,
199  ScalarWaveFunction & hout, vector<VectorWaveFunction> & gout,
200  bool me) const;
201 
210  double qgME(vector<SpinorWaveFunction> & fin,vector<VectorWaveFunction> & gin,
211  ScalarWaveFunction & hout, vector<SpinorBarWaveFunction> & fout,
212  bool me) const;
213 
222  double qbargME(vector<SpinorBarWaveFunction> & fin,vector<VectorWaveFunction> & gin,
223  ScalarWaveFunction & hout, vector<SpinorWaveFunction> & fout,
224  bool me) const;
225 
234  double ggME(vector<VectorWaveFunction> g1, vector<VectorWaveFunction> g2,
235  ScalarWaveFunction & hout, vector<VectorWaveFunction> g4,
236  bool me) const;
238 
239 private:
240 
245  MEPP2HiggsJet & operator=(const MEPP2HiggsJet &) = delete;
246 
247 private:
248 
252  unsigned int _shapeopt;
253 
257  unsigned int _maxflavour;
258 
262  unsigned int _process;
263 
268 
272  int _minloop;
273 
277  int _maxloop;
278 
282  unsigned int _massopt;
283 
287  Energy _mh;
288 
292  Energy _wh;
293 
297  GenericMassGeneratorPtr _hmass;
298 
306  mutable Complex _bi[5];
307 
311  mutable Complex _ci[8];
312 
316  mutable Complex _di[4];
318 
322  mutable double _diagwgt[3];
323 };
324 
325 }
326 
327 #endif /* HERWIG_MEPP2HiggsJet_H */
int _maxloop
Maximum flavour of quarks to include in the loops.
int _minloop
Minimum flavour of quarks to include in the loops.
std::complex< double > Complex
ProductionMatrixElement _me
Matrix element for spin correlations.
Energy _mh
On-shell mass for the higgs.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
unsigned int _shapeopt
Defines the Higgs resonance shape.
Energy _wh
On-shell width for the higgs.
unsigned int _process
Option for which processes to include.
unsigned int _maxflavour
Maximum PDG code of the quarks allowed.
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
The storage of the helicity amplitude expression for the matrix element of a hard process...
MEPP2HiggsJet()
The default constructor.
Definition: MEPP2HiggsJet.h:42
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
vector< DiagPtr > DiagramVector
The MEPP2HiggsJet class implements the matrix element for Higgs+jet production.
Definition: MEPP2HiggsJet.h:35
-*- C++ -*-
constexpr ZeroUnit ZERO
unsigned int _massopt
Option for treatment of the fermion loops.