herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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/PhaseSpaceMode.h"
18
19namespace Herwig {
20using namespace ThePEG;
21
29
30public:
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
67 double me2(const int ichan,const Particle & part,
68 const tPDVector & outgoing,
69 const vector<Lorentz5Momentum> & momenta,
70 MEOption meopt) const;
71
75 virtual void constructSpinInfo(const Particle & part,
77
83 virtual void dataBaseOutput(ofstream & os,bool header) const;
87 virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
88
92 virtual double matrixElementRatio(const Particle & inpart, const ParticleVector & decay2,
93 const ParticleVector & decay3, MEOption meopt,
94 ShowerInteraction inter);
95
96public:
97
105
111 void persistentInput(PersistentIStream & is, int version);
113
120 static void Init();
121
122protected:
123
130 virtual IBPtr clone() const {return new_ptr(*this);}
131
136 virtual IBPtr fullclone() const {return new_ptr(*this);}
138
139protected:
140
144 double calculateLambda(double x, double y, double z) const;
145
149 InvEnergy2 dipoleSubtractionTerm(double x1, double x2) const;
150
154 InvEnergy2 calculateRealEmission(double x1, double x2) const;
155
159 double calculateVirtualTerm() const;
160
164 double calculateNonSingletTerm(double beta, double L) const;
165
166protected:
167
175 virtual void doinit();
176
181 virtual void doinitrun();
183
184private:
185
191
192private:
193
197 AbstractFFSVertexPtr _hvertex;
198
202 vector<double> _maxwgt;
203
208
213
217 mutable vector<SpinorWaveFunction> _wave;
218
222 mutable vector<SpinorBarWaveFunction> _wavebar;
223private:
224
228 double CF_;
229
233 mutable Energy mHiggs_;
234
238 mutable double mu_;
239
243 mutable double mu2_;
244
248 mutable double aS_;
249
257 vector<tcPDPtr> partons_;
258
262 vector<Lorentz5Momentum> quark_;
263
267 Lorentz5Momentum gauge_;
268
273
277 Energy2 mh2_;
279
283 bool NLO_;
284};
285
286}
287
288#endif /* HERWIG_SMHiggsFermionsDecayer_H */
MEOption
Enum for the matrix element option.
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:76
The PerturbativeDecayer class is the base class for perturbative decays in Herwig and implements the ...
The SMHiggsFermionsDecayer class is designed to decay the Standard Model Higgs to the Standard Model ...
InvEnergy2 calculateRealEmission(double x1, double x2) const
Real emission term.
vector< SpinorWaveFunction > _wave
Spinor wavefunction.
double calculateVirtualTerm() const
Virtual term.
virtual ParticleVector decay(const Particle &parent, const tPDVector &children) const
For a given decay mode and a given particle instance, perform the decay and return the decay products...
ScalarWaveFunction _swave
Scalar wavefunction.
SMHiggsFermionsDecayer()
The default constructor.
double aS_
The strong coupling.
virtual void doinitrun()
Initialize this object.
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
static void Init()
The standard Init function used to initialize the interfaces.
double mu2_
The square of the reduced mass.
double calculateLambda(double x, double y, double z) const
Calcluate the Kallen function.
vector< Lorentz5Momentum > quark_
The fermion momenta.
virtual int modeNumber(bool &, tcPDPtr, const tPDVector &) const
Which of the possible decays is required.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
AbstractFFSVertexPtr _hvertex
Pointer to the Higgs vertex.
virtual double matrixElementRatio(const Particle &inpart, const ParticleVector &decay2, const ParticleVector &decay3, MEOption meopt, ShowerInteraction inter)
Calculate matrix element ratio R/B.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< tcPDPtr > partons_
Stuff for the POWHEG correction.
double calculateNonSingletTerm(double beta, double L) const
Non-singlet term.
RhoDMatrix _rho
Spin density matrix.
SMHiggsFermionsDecayer & operator=(const SMHiggsFermionsDecayer &)=delete
The assignment operator is private and must never be called.
vector< double > _maxwgt
maximum weights for the different decay modes
virtual IBPtr clone() const
Make a simple clone of this object.
vector< SpinorBarWaveFunction > _wavebar
Barred spinor wavefunction.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Lorentz5Momentum gauge_
The momentum of the radiated gauge boson.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
InvEnergy2 dipoleSubtractionTerm(double x1, double x2) const
Dipole subtraction term.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Energy2 mh2_
Higgs mass squared.
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
ThePEG::Ptr< Particle >::pointer PPtr
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr