File indexing completed on 2026-08-06 09:24:17
0001
0002 #ifndef Herwig_GenericHGGVertex_H
0003 #define Herwig_GenericHGGVertex_H
0004
0005
0006
0007
0008 #include "VVSLoopVertex.h"
0009 #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h"
0010 #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h"
0011 #include "ThePEG/Persistency/PersistentOStream.h"
0012 #include "ThePEG/Persistency/PersistentIStream.h"
0013 #include "ThePEG/Utilities/EnumIO.h"
0014 #include "ThePEG/PDT/ParticleData.h"
0015 #include "Herwig/Models/StandardModel/StandardModel.h"
0016
0017 namespace Herwig {
0018
0019 using namespace ThePEG;
0020 using namespace ThePEG::Helicity;
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 class GenericHGGVertex: public VVSLoopVertex {
0031
0032 public:
0033
0034
0035
0036
0037 struct Interaction {
0038
0039
0040
0041
0042 Interaction(PDPtr in_particle=PDPtr(),SSSVertexPtr in_scalar=SSSVertexPtr(),
0043 FFSVertexPtr in_fermion=FFSVertexPtr())
0044 : particle(in_particle), scalar(in_scalar), fermion(in_fermion)
0045 {}
0046
0047
0048
0049
0050 PDPtr particle;
0051
0052
0053
0054
0055 SSSVertexPtr scalar;
0056
0057
0058
0059
0060 FFSVertexPtr fermion;
0061 };
0062
0063 public:
0064
0065
0066
0067
0068 GenericHGGVertex();
0069
0070
0071
0072
0073
0074
0075
0076
0077 virtual void setCoupling (Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3);
0078
0079 public:
0080
0081
0082
0083
0084
0085
0086
0087 void persistentOutput(PersistentOStream & os) const;
0088
0089
0090
0091
0092
0093
0094 void persistentInput(PersistentIStream & is, int version);
0095
0096
0097
0098
0099
0100
0101
0102
0103 static void Init();
0104
0105 protected:
0106
0107
0108
0109
0110
0111
0112
0113 virtual IBPtr clone() const;
0114
0115
0116
0117
0118
0119 virtual IBPtr fullclone() const;
0120
0121
0122
0123
0124
0125
0126
0127 virtual void doinit();
0128
0129 private:
0130
0131
0132
0133
0134
0135 GenericHGGVertex & operator=(const GenericHGGVertex &) = delete;
0136
0137 private:
0138
0139
0140
0141
0142 void initializeVertex();
0143
0144 private:
0145
0146
0147
0148
0149 vector<PDPtr> bosons_;
0150
0151
0152
0153
0154 bool setup_;
0155
0156
0157
0158
0159 map<cPDPtr,vector<Interaction> > vertices_;
0160
0161
0162
0163
0164 Energy2 q2Last_;
0165
0166
0167
0168
0169 Complex coupLast_;
0170
0171
0172
0173
0174 long idLast_;
0175
0176
0177
0178
0179 tcHwSMPtr model_;
0180 };
0181
0182
0183
0184
0185 inline PersistentOStream & operator<<(PersistentOStream & os,
0186 const GenericHGGVertex::Interaction & x) {
0187 os << x.particle << x.scalar << x.fermion;
0188 return os;
0189 }
0190
0191
0192
0193
0194 inline PersistentIStream & operator>>(PersistentIStream & is,
0195 GenericHGGVertex::Interaction & x) {
0196 is >> x.particle >> x.scalar >> x.fermion;
0197 return is;
0198 }
0199
0200 }
0201
0202 #endif