herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SMHiggsGGHiggsPPDecayer.h
1// -*- C++ -*-
2//
3// SMHiggsGGHiggsPPDecayer.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_SMHiggsGGHiggsPPDecayer_H
10#define HERWIG_SMHiggsGGHiggsPPDecayer_H
11//
12// This is the declaration of the SMHiggsGGHiggsPPDecayer class.
13//
14
15#include "Herwig/Decay/PerturbativeDecayer.h"
16#include "Herwig/Decay/PhaseSpaceMode.h"
17#include "Herwig/Models/StandardModel/StandardModel.h"
18#include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
19
20namespace Herwig {
21using namespace ThePEG;
22using namespace ThePEG::Helicity;
23
32
33public:
34
39 {}
40
52 double me2(const int ichan,const Particle & part,
53 const tPDVector & outgoing,
54 const vector<Lorentz5Momentum> & momenta,
55 MEOption meopt) const;
56
60 virtual void constructSpinInfo(const Particle & part,
62
69 virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
70
74 virtual int modeNumber(bool &, tcPDPtr, const tPDVector & ) const {return -1;}
75
82 virtual ParticleVector decay(const Particle & parent,const tPDVector & children) const;
83
89 virtual void dataBaseOutput(ofstream & os,bool header) const;
90
94 virtual double matrixElementRatio(const Particle & inpart, const ParticleVector & decay2,
95 const ParticleVector & decay3, MEOption meopt,
96 ShowerInteraction inter);
97
101 virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
103
104public:
105
113
119 void persistentInput(PersistentIStream & is, int version);
121
128 static void Init();
129
130protected:
131
138 virtual IBPtr clone() const {return new_ptr(*this);}
139
144 virtual IBPtr fullclone() const {return new_ptr(*this);}
146
147protected:
148
156 virtual void doinit();
157
162 virtual void doinitrun();
164
165protected:
166
170 double realME(const vector<cPDPtr> & partons,
171 const vector<Lorentz5Momentum> & momenta) const;
172
176 Energy2 loME(Energy mh) const;
177
178private:
179
185
189 AbstractVVSVertexPtr _hggvertex;
190
194 AbstractVVSVertexPtr _hppvertex;
195
199 AbstractVVSVertexPtr _hzpvertex;
200
204 vector<double> _h0wgt;
205
210
215
219 mutable vector<VectorWaveFunction> _vwave[2];
220
221private:
222
231
236
240 unsigned int _massopt;
242};
243
244}
245
246#endif /* HERWIG_SMHiggsGGHiggsPPDecayer_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 SMHiggsGGHiggsPPDecayer class performs the of a Standard Model Higgs boson to: a pair of photons ...
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
RhoDMatrix _rho
Spin density matrix.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double realME(const vector< cPDPtr > &partons, const vector< Lorentz5Momentum > &momenta) const
Calculate the NLO real emission piece of ME.
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
int _maxloop
Maximum flavour of quarks to include in the loops.
AbstractVVSVertexPtr _hggvertex
Pointer to h->gluon,gluon vertex.
virtual double matrixElementRatio(const Particle &inpart, const ParticleVector &decay2, const ParticleVector &decay3, MEOption meopt, ShowerInteraction inter)
Calculate matrix element ratio R/B.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual void doinitrun()
Initialize this object.
AbstractVVSVertexPtr _hppvertex
Pointer to h->gamma,gamma vertex.
vector< double > _h0wgt
Maximum weight for integration.
Energy2 loME(Energy mh) const
Calculate the LO ME.
AbstractVVSVertexPtr _hzpvertex
Pointer to h->gamma,gamma vertex.
virtual IBPtr clone() const
Make a simple clone of this object.
unsigned int _massopt
Option for treatment of the fermion loops.
SMHiggsGGHiggsPPDecayer()
The default constructor.
SMHiggsGGHiggsPPDecayer & operator=(const SMHiggsGGHiggsPPDecayer &)=delete
The assignment operator is private and must never be called.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< VectorWaveFunction > _vwave[2]
Vector wavefunctions.
virtual int modeNumber(bool &, tcPDPtr, const tPDVector &) const
Which of the possible decays is required.
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 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...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
static void Init()
The standard Init function used to initialize the interfaces.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
ScalarWaveFunction _swave
Scalar wavefunction.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
int _minloop
Parameters for the real POWHEG correction.
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr