herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
GenericHPPVertex.h
1 // -*- C++ -*-
2 #ifndef Herwig_GenericHPPVertex_H
3 #define Herwig_GenericHPPVertex_H
4 //
5 // This is the declaration of the GenericHPPVertex class.
6 //
7 
8 #include "VVSLoopVertex.h"
9 #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h"
10 #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h"
11 #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h"
12 #include "ThePEG/Persistency/PersistentOStream.h"
13 #include "ThePEG/Persistency/PersistentIStream.h"
14 #include "ThePEG/Utilities/EnumIO.h"
15 #include "ThePEG/PDT/ParticleData.h"
16 #include "Herwig/Models/StandardModel/StandardModel.h"
17 
18 namespace Herwig {
19 
20 using namespace ThePEG;
21 using namespace ThePEG::Helicity;
22 
32 
33 public:
34 
38  struct Interaction {
39 
43  Interaction(PDPtr in_particle=PDPtr(),SSSVertexPtr in_scalar=SSSVertexPtr(),
44  FFSVertexPtr in_fermion=FFSVertexPtr(),
45  VVSVertexPtr in_vector=VVSVertexPtr())
46  : particle(in_particle), scalar(in_scalar), fermion(in_fermion), vector(in_vector)
47  {}
48 
53 
57  SSSVertexPtr scalar;
58 
62  FFSVertexPtr fermion;
63 
67  VVSVertexPtr vector;
68  };
69 
70 public:
71 
76 
84  virtual void setCoupling (Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3);
85 
86 public:
87 
94  void persistentOutput(PersistentOStream & os) const;
95 
101  void persistentInput(PersistentIStream & is, int version);
103 
110  static void Init();
111 
112 protected:
113 
120  virtual IBPtr clone() const;
121 
126  virtual IBPtr fullclone() const;
128 
134  virtual void doinit();
135 
136 private:
137 
142  GenericHPPVertex & operator=(const GenericHPPVertex &) = delete;
143 
144 private:
145 
149  void initializeVertex();
150 
151 private:
152 
156  vector<PDPtr> bosons_;
157 
161  bool setup_;
162 
166  map<cPDPtr,vector<Interaction> > vertices_;
167 
171  Energy2 q2Last_;
172 
177 
181  long idLast_;
182 
186  tcHwSMPtr model_;
187 };
188 
193  const GenericHPPVertex::Interaction & x) {
194  os << x.particle << x.scalar << x.fermion << x.vector;
195  return os;
196 }
197 
203  is >> x.particle >> x.scalar >> x.fermion >> x.vector;
204  return is;
205 }
206 
207 }
208 
209 #endif /* Herwig_GenericHPPVertex_H */
Struct to store the stuff needed for the vertices.
std::complex< double > Complex
Interaction(PDPtr in_particle=PDPtr(), SSSVertexPtr in_scalar=SSSVertexPtr(), FFSVertexPtr in_fermion=FFSVertexPtr(), VVSVertexPtr in_vector=VVSVertexPtr())
Constructor.
The GenericHPPVertex class implements the coupling of the Higgs boson to gluons in a generic model us...
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Complex coupLast_
Last value of the coupling calculated.
VVSVertexPtr vector
The vector vertex.
long idLast_
Lasst id of the boson.
ostream & operator<<(ostream &, const DecayIntegrator &)
Output information on the DecayIntegrator for debugging purposes.
bool setup_
Has it been set up?
PersistentIStream & operator>>(PersistentIStream &is, map< ShowerInteraction, T, Cmp, A > &m)
Read a map with ShowerInteraction as the key.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
FFSVertexPtr fermion
The fermion vertex.
map< cPDPtr, vector< Interaction > > vertices_
The vertices to use.
Energy2 q2Last_
The scale at which coupling was last evaluated.
ThePEG::Ptr< ParticleData >::pointer PDPtr
vector< PDPtr > bosons_
The bosons to consider as particles.
The VVSLoopVertex is designed to calculate the coefficents for the terms in the Passarino-Veltman ten...
Definition: VVSLoopVertex.h:21
tcHwSMPtr model_
The model for running masses.
SSSVertexPtr scalar
The scalar vertex.
-*- C++ -*-