herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SMHiggsWWDecayer.h
1// -*- C++ -*-
2//
3// SMHiggsWWDecayer.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_SMHiggsWWDecayer_H
10#define HERWIG_SMHiggsWWDecayer_H
11//
12// This is the declaration of the SMHiggsWWDecayer class.
13//
14
15#include "Herwig/Decay/PerturbativeDecayer.h"
16#include "Herwig/Decay/PhaseSpaceMode.h"
17#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh"
18#include "ThePEG/Helicity/Vertex/AbstractVVSVertex.fh"
19#include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
20#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
21
22namespace Herwig {
23
24using namespace ThePEG;
25using namespace ThePEG::Helicity;
26
36
37public:
38
43
44public:
45
50
57 virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
58
65 virtual ParticleVector decay(const Particle & parent,
66 const tPDVector & children) const;
67
71 virtual int modeNumber(bool &, tcPDPtr, const tPDVector & ) const {return -1;}
72
82 double me2(const int ichan,const Particle & part,
83 const tPDVector & outgoing,
84 const vector<Lorentz5Momentum> & momenta,
85 MEOption meopt) const;
86
90 virtual void constructSpinInfo(const Particle & part,
92
98 virtual void dataBaseOutput(ofstream & os,bool header) const;
99
100public:
101
109
115 void persistentInput(PersistentIStream & is, int version);
117
124 static void Init();
125
126protected:
127
134 virtual IBPtr clone() const {return new_ptr(*this);}
135
140 virtual IBPtr fullclone() const {return new_ptr(*this);}
142
143protected:
144
152 virtual void doinit();
153
158 virtual void doinitrun();
160
161
162private:
163
169
170private:
171
179 AbstractFFVVertexPtr _theFFWVertex;
180
184 AbstractFFVVertexPtr _theFFZVertex;
185
189 AbstractVVSVertexPtr _theHVVVertex;
191
200
206
210 vector<double> _ratio;
211
219 vector<double> _wmax;
220
224 vector<double> _zmax;
226
231
236
240 mutable vector<SpinorWaveFunction > _awave1;
241
245 mutable vector<SpinorWaveFunction > _awave2;
246
250 mutable vector<SpinorBarWaveFunction> _fwave1;
251
255 mutable vector<SpinorBarWaveFunction> _fwave2;
256};
257
258}
259
260#endif /* HERWIG_SMHiggsWWDecayer_H */
MEOption
Enum for the matrix element option.
The PerturbativeDecayer class is the base class for perturbative decays in Herwig and implements the ...
The SMHiggsWWDecayer class performs the decay of the Standard Model Higgs boson to and including th...
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
RhoDMatrix _rho
Spin density matrix.
ModeSelector _zdecays
Selector for the Z decays.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
AbstractVVSVertexPtr _theHVVVertex
Pointer to the higgs-WW/ZZ vertex.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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.
vector< SpinorWaveFunction > _awave2
2nd spinor wavefunction
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Selector< unsigned int > ModeSelector
A typedef to select the boson decay modes.
static void Init()
The standard Init function used to initialize the interfaces.
virtual int modeNumber(bool &, tcPDPtr, const tPDVector &) const
Which of the possible decays is required.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
AbstractFFVVertexPtr _theFFZVertex
Pointer to the fermion-femion-Z vertex.
vector< double > _ratio
Product of gauge boson branching ratios for normalisation.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
vector< double > _wmax
Maximum weights for the decays.
ModeSelector _wdecays
Selectors for the gauge boson decay modes.
AbstractFFVVertexPtr _theFFWVertex
Pointers to the vertices for the helicity calculations.
vector< SpinorBarWaveFunction > _fwave1
1st barred spinor wavefunction
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void doinitrun()
Initialize this object.
ScalarWaveFunction _swave
Scalar wavefunction.
SMHiggsWWDecayer()
The default constructor.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
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...
vector< SpinorBarWaveFunction > _fwave2
2nd barred spinor wavefunction
vector< double > _zmax
Maximum weight for decays.
SMHiggsWWDecayer & operator=(const SMHiggsWWDecayer &)=delete
The assignment operator is private and must never be called.
vector< SpinorWaveFunction > _awave1
1st spinor wavefunction
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr