herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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/DecayPhaseSpaceMode.h"
17 #include "Herwig/Models/StandardModel/StandardModel.h"
18 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
19 
20 namespace Herwig {
21 using namespace ThePEG;
22 using namespace ThePEG::Helicity;
23 
32 
33 public:
34 
38  SMHiggsGGHiggsPPDecayer() : _h0wgt(3,1.), _minloop(6), _maxloop(6), _massopt(0)
39  {}
40 
51  virtual double me2(const int ichan, const Particle & part,
52  const ParticleVector & decay, MEOption meopt) const;
53 
60  virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
61 
65  virtual int modeNumber(bool &, tcPDPtr, const tPDVector & ) const {return -1;}
66 
73  virtual ParticleVector decay(const Particle & parent,const tPDVector & children) const;
74 
80  virtual void dataBaseOutput(ofstream & os,bool header) const;
81 
85  virtual double matrixElementRatio(const Particle & inpart, const ParticleVector & decay2,
86  const ParticleVector & decay3, MEOption meopt,
87  ShowerInteraction inter);
88 
92  virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
94 
95 public:
96 
103  void persistentOutput(PersistentOStream & os) const;
104 
110  void persistentInput(PersistentIStream & is, int version);
112 
119  static void Init();
120 
121 protected:
122 
129  virtual IBPtr clone() const {return new_ptr(*this);}
130 
135  virtual IBPtr fullclone() const {return new_ptr(*this);}
137 
138 protected:
139 
147  virtual void doinit();
148 
153  virtual void doinitrun();
155 
156 protected:
157 
161  double realME(const vector<cPDPtr> & partons,
162  const vector<Lorentz5Momentum> & momenta) const;
163 
167  Energy2 loME(Energy mh) const;
168 
169 private:
170 
175  SMHiggsGGHiggsPPDecayer & operator=(const SMHiggsGGHiggsPPDecayer &) = delete;
176 
180  AbstractVVSVertexPtr _hggvertex;
181 
185  AbstractVVSVertexPtr _hppvertex;
186 
190  AbstractVVSVertexPtr _hzpvertex;
191 
195  vector<double> _h0wgt;
196 
200  mutable RhoDMatrix _rho;
201 
206 
210  mutable vector<VectorWaveFunction> _vwave[2];
211 
212 private:
213 
221  int _minloop;
222 
226  int _maxloop;
227 
231  unsigned int _massopt;
233 };
234 
235 }
236 
237 #endif /* HERWIG_SMHiggsGGHiggsPPDecayer_H */
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
int _maxloop
Maximum flavour of quarks to include in the loops.
ShowerInteraction
Handy header file to be included in all Shower classes.
vector< double > _h0wgt
Maximum weight for integration.
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.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ScalarWaveFunction _swave
Scalar wavefunction.
unsigned int _massopt
Option for treatment of the fermion loops.
MEOption
Enum for the matrix element option.
AbstractVVSVertexPtr _hggvertex
Pointer to h->gluon,gluon vertex.
AbstractVVSVertexPtr _hppvertex
Pointer to h->gamma,gamma vertex.
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.
int _minloop
Parameters for the real POWHEG correction.
RhoDMatrix _rho
Spin density matrix.
SMHiggsGGHiggsPPDecayer()
The default constructor.
-*- C++ -*-
The SMHiggsGGHiggsPPDecayer class performs the of a Standard Model Higgs boson to: a pair of photons ...
vector< PPtr > ParticleVector
AbstractVVSVertexPtr _hzpvertex
Pointer to h->gamma,gamma vertex.