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