herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
SMHiggsFermionsDecayer.h
1 // -*- C++ -*-
2 //
3 // SMHiggsFermionsDecayer.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_SMHiggsFermionsDecayer_H
10 #define HERWIG_SMHiggsFermionsDecayer_H
11 //
12 // This is the declaration of the SMHiggsFermionsDecayer class.
13 //
14 
15 #include "Herwig/Decay/PerturbativeDecayer.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
17 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
18 
19 namespace Herwig {
20 using namespace ThePEG;
21 
29 
30 public:
31 
36 
40  virtual int modeNumber(bool & , tcPDPtr , const tPDVector & ) const {return -1;}
41 
48  virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
49 
56  virtual ParticleVector decay(const Particle & parent,const tPDVector & children) const;
57 
66  virtual double me2(const int ichan, const Particle & part,
67  const ParticleVector & decay, MEOption meopt) const;
68 
74  virtual void dataBaseOutput(ofstream & os,bool header) const;
78  virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
79 
83  virtual double matrixElementRatio(const Particle & inpart, const ParticleVector & decay2,
84  const ParticleVector & decay3, MEOption meopt,
85  ShowerInteraction inter);
86 
87 public:
88 
95  void persistentOutput(PersistentOStream & os) const;
96 
102  void persistentInput(PersistentIStream & is, int version);
104 
111  static void Init();
112 
113 protected:
114 
121  virtual IBPtr clone() const {return new_ptr(*this);}
122 
127  virtual IBPtr fullclone() const {return new_ptr(*this);}
129 
130 protected:
131 
135  double calculateLambda(double x, double y, double z) const;
136 
140  InvEnergy2 dipoleSubtractionTerm(double x1, double x2) const;
141 
145  InvEnergy2 calculateRealEmission(double x1, double x2) const;
146 
150  double calculateVirtualTerm() const;
151 
155  double calculateNonSingletTerm(double beta, double L) const;
156 
157 protected:
158 
166  virtual void doinit();
167 
172  virtual void doinitrun();
174 
175 private:
176 
181  SMHiggsFermionsDecayer & operator=(const SMHiggsFermionsDecayer &) = delete;
182 
183 private:
184 
188  AbstractFFSVertexPtr _hvertex;
189 
193  vector<double> _maxwgt;
194 
198  mutable RhoDMatrix _rho;
199 
204 
208  mutable vector<SpinorWaveFunction> _wave;
209 
213  mutable vector<SpinorBarWaveFunction> _wavebar;
214 private:
215 
219  double CF_;
220 
224  mutable Energy mHiggs_;
225 
229  mutable double mu_;
230 
234  mutable double mu2_;
235 
239  mutable double aS_;
240 
248  vector<tcPDPtr> partons_;
249 
253  vector<Lorentz5Momentum> quark_;
254 
258  Lorentz5Momentum gauge_;
259 
264 
268  Energy2 mh2_;
270 
274  bool NLO_;
275 };
276 
277 }
278 
279 #endif /* HERWIG_SMHiggsFermionsDecayer_H */
ThePEG::Ptr< Particle >::pointer PPtr
ShowerInteraction
Handy header file to be included in all Shower classes.
ScalarWaveFunction _swave
Scalar wavefunction.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tcPDPtr > partons_
Stuff for the POWHEG correction.
AbstractFFSVertexPtr _hvertex
Pointer to the Higgs vertex.
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
The SMHiggsFermionsDecayer class is designed to decay the Standard Model Higgs to the Standard Model ...
Energy2 mh2_
Higgs mass squared.
RhoDMatrix _rho
Spin density matrix.
MEOption
Enum for the matrix element option.
vector< Lorentz5Momentum > quark_
The fermion momenta.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Lorentz5Momentum gauge_
The momentum of the radiated gauge boson.
vector< tPDPtr > tPDVector
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:76
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
The PerturbativeDecayer class is the base class for perturbative decays in Herwig and implements the ...
virtual IBPtr clone() const
Make a simple clone of this object.
vector< SpinorWaveFunction > _wave
Spinor wavefunction.
vector< double > _maxwgt
maximum weights for the different decay modes
virtual int modeNumber(bool &, tcPDPtr, const tPDVector &) const
Which of the possible decays is required.
-*- C++ -*-
vector< SpinorBarWaveFunction > _wavebar
Barred spinor wavefunction.
double mu2_
The square of the reduced mass.
vector< PPtr > ParticleVector
double aS_
The strong coupling.