herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
StandardModel.h
1// -*- C++ -*-
2//
3// StandardModel.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_StandardModel_H
10#define HERWIG_StandardModel_H
11//
12// This is the declaration of the StandardModel class.
13
14#include "ThePEG/StandardModel/StandardModelBase.h"
15#include "Herwig/Models/StandardModel/RunningMassBase.h"
16#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
17#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
18#include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
19#include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
20#include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h"
21#include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h"
22#include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h"
23#include "ThePEG/Helicity/Vertex/AbstractSSSSVertex.h"
24#include "Herwig/Models/General/ModelGenerator.fh"
25#include "StandardModel.fh"
26
27namespace Herwig {
28using namespace ThePEG;
29using namespace ThePEG::Helicity;
30
40
45
49 typedef Ptr<Herwig::RunningMassBase>::pointer runPtr;
50
54 typedef Ptr<Herwig::RunningMassBase>::transient_pointer trunPtr;
56
57public:
58
65
70
74 virtual ~StandardModel();
76
77public:
78
86
92 void persistentInput(PersistentIStream & is, int version);
94
98 static void Init();
99
100protected:
104 virtual bool registerDefaultVertices() const { return true; }
105
106public:
107
115 double lnu() const {
116 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vnu()+anu());
117 }
118
122 double le() const {
123 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(ve()+ae());
124 }
125
129 double lu() const {
130 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vu()+au());
131 }
132
136 double ld() const {
137 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vd()+ad());
138 }
139
143 double rnu() const {
144 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vnu()-anu());
145 }
146
150 double re() const {
151 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(ve()-ae());
152 }
153
157 double ru() const {
158 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vu()-au());
159 }
160
164 double rd() const {
165 return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vd()-ad());
166 }
168
176 virtual tAbstractFFVVertexPtr vertexFFZ() const {
177 return FFZVertex_;
178 }
179
183 virtual tAbstractFFVVertexPtr vertexFFP() const {
184 return FFPVertex_;
185 }
186
190 virtual tAbstractFFVVertexPtr vertexFFG() const {
191 return FFGVertex_;
192 }
193
197 virtual tAbstractFFVVertexPtr vertexFFW() const {
198 return FFWVertex_;
199 }
200
204 virtual tAbstractFFSVertexPtr vertexFFH() const {
205 return FFHVertex_;
206 }
207
211 virtual tAbstractVVVVertexPtr vertexGGG() const {
212 return GGGVertex_;
213 }
214
218 virtual tAbstractVVVVertexPtr vertexWWW() const {
219 return WWWVertex_;
220 }
221
225 virtual tAbstractVVSVertexPtr vertexWWH() const {
226 return WWHVertex_;
227 }
228
232 virtual tAbstractVVVVVertexPtr vertexWWWW() const {
233 return WWWWVertex_;
234 }
235
239 virtual tAbstractVVVVVertexPtr vertexGGGG() const {
240 return GGGGVertex_;
241 }
242
246 virtual tAbstractVVSVertexPtr vertexHGG() const {
247 return HGGVertex_;
248 }
249
253 virtual tAbstractVVSVertexPtr vertexHPP() const {
254 return HPPVertex_;
255 }
256
260 virtual tAbstractSSSVertexPtr vertexHHH() const {
261 return HHHVertex_;
262 }
263
267 virtual tAbstractVVSSVertexPtr vertexWWHH() const {
268 return WWHHVertex_;
269 }
270
274 unsigned int numberOfVertices() const {
275 return vertexList_.size() + extraVertices_.size();
276 }
277
281 tVertexBasePtr vertex(size_t ix) const {
282 const size_t S = vertexList_.size();
283 if ( ix < S )
284 return vertexList_[ix];
285 else
286 return extraVertices_[ix - S];
287 }
289
295 Energy mass(Energy2 scale,tcPDPtr part) const {
296 return runningMass_->value(scale,part);
297 }
298
302 trunPtr massPtr() const {
303 return runningMass_;
304 }
305
309 const map<string,pair<unsigned int,int> > & couplings() const {
310 return couplings_;
311 }
312
313protected:
314
321 virtual IBPtr clone() const;
322
327 virtual IBPtr fullclone() const;
329
330protected:
331
337 virtual void doinit();
339
340protected:
341
345 void addVertex(VertexBasePtr in) {
346 if ( in )
347 vertexList_.push_back(in);
348 }
349
354 void resetMass(long id, Energy mass,tPDPtr particle=tPDPtr());
355
356protected:
357
361 void setCouplings(string name,pair<unsigned int,int> vals) {
362 couplings_[name] = vals;
363 }
364
365private:
366
371
372private:
373
382 AbstractFFVVertexPtr FFZVertex_;
383
387 AbstractFFVVertexPtr FFPVertex_;
388
392 AbstractFFVVertexPtr FFGVertex_;
393
397 AbstractFFVVertexPtr FFWVertex_;
398
402 AbstractFFSVertexPtr FFHVertex_;
403
407 AbstractVVSVertexPtr WWHVertex_;
408
412 AbstractVVVVertexPtr GGGVertex_;
413
417 AbstractVVVVertexPtr WWWVertex_;
418
422 AbstractVVVVVertexPtr GGGGVertex_;
423
427 AbstractVVVVVertexPtr WWWWVertex_;
428
432 AbstractVVSVertexPtr HGGVertex_;
433
437 AbstractVVSVertexPtr HPPVertex_;
438
442 AbstractSSSVertexPtr HHHVertex_;
443
447 AbstractVVSSVertexPtr WWHHVertex_;
448
452 vector<VertexBasePtr> vertexList_;
453
457 vector<VertexBasePtr> extraVertices_;
459
464
468 ModelGeneratorPtr modelGenerator_;
469
473 map<string,pair<unsigned int,int> > couplings_;
474};
475
476}
477
478#endif /* HERWIG_StandardModel_H */
This is the Herwig StandardModel class which inherits from ThePEG Standard Model class and implements...
Definition: StandardModel.h:39
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
static void Init()
Standard Init function used to initialize the interfaces.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual tAbstractVVVVVertexPtr vertexWWWW() const
Pointer to the quartic electroweak gauge boson vertex.
double lnu() const
The left and right couplings of the Z^0 including sin and cos theta_W.
unsigned int numberOfVertices() const
Total number of vertices.
StandardModel(const StandardModel &)
Copy-constructor.
StandardModel()
Default constructor.
map< string, pair< unsigned int, int > > couplings_
Couplings in the model.
AbstractFFSVertexPtr FFHVertex_
Pointer to the fermion-fermion-Higgs vertex.
virtual tAbstractFFVVertexPtr vertexFFW() const
Pointer to the fermion-fermion-W vertex.
AbstractSSSVertexPtr HHHVertex_
Pointer to triple Higgs vertex.
virtual tAbstractVVSVertexPtr vertexWWH() const
Pointer to the two electroweak gauge boson Higgs vertex.
double rd() const
The right-handed coupling of a down type quark.
double ru() const
The right-handed coupling of an up type quark.
virtual bool registerDefaultVertices() const
Should the default vertices be considered for generic diagrams.
double re() const
The right-handed coupling of a charged lepton.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
virtual tAbstractVVSVertexPtr vertexHGG() const
Pointer to the quartic gluon vertex.
AbstractVVVVertexPtr WWWVertex_
Pointer to the triple electroweak gauge boson vertex.
AbstractVVSVertexPtr HPPVertex_
Pointer to higgs-gamma-gamma vertex.
vector< VertexBasePtr > extraVertices_
Additional vertices to be considered in automatic ME construction.
void setCouplings(string name, pair< unsigned int, int > vals)
Set the couplings in the model.
AbstractFFVVertexPtr FFWVertex_
Pointer to the fermion-fermion-W vertex.
AbstractVVSSVertexPtr WWHHVertex_
Pointer to WWHH vertex.
AbstractVVSVertexPtr HGGVertex_
Pointer to higgs-gluon-gluon vertex.
void resetMass(long id, Energy mass, tPDPtr particle=tPDPtr())
Helper function to reset the mass of a ParticleData object in BSM models.
virtual tAbstractFFVVertexPtr vertexFFG() const
Pointer to the fermion-fermion-gluon vertex.
virtual tAbstractFFSVertexPtr vertexFFH() const
Pointer to the fermion-fermion-Higgs vertex.
Ptr< Herwig::RunningMassBase >::transient_pointer trunPtr
Transient pointer to the RunningMassBase object.
Definition: StandardModel.h:54
virtual tAbstractVVVVVertexPtr vertexGGGG() const
Pointer to the quartic gluon vertex.
AbstractVVVVVertexPtr GGGGVertex_
Pointer to the quartic gluon vertex.
AbstractVVVVVertexPtr WWWWVertex_
Pointer to the quartic electroweak gauge boson vertex.
double le() const
The left-handed coupling of a charged lepton.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
const map< string, pair< unsigned int, int > > & couplings() const
Set the couplings in the model.
virtual tAbstractFFVVertexPtr vertexFFP() const
Pointer to the fermion-fermion-photon vertex.
virtual tAbstractFFVVertexPtr vertexFFZ() const
Pointers to the objects handling the vertices.
AbstractVVVVertexPtr GGGVertex_
Pointer to the triple gluon vertex.
AbstractFFVVertexPtr FFPVertex_
Pointer to the fermion-fermion-photon vertex.
AbstractVVSVertexPtr WWHVertex_
Pointer to the two electroweak gauge boson Higgs vertex.
void addVertex(VertexBasePtr in)
Add a vertex to the list.
double lu() const
The left-handed coupling of an up type quark.
virtual tAbstractVVVVertexPtr vertexWWW() const
Pointer to the triple electroweak gauge boson vertex.
ModelGeneratorPtr modelGenerator_
Pointer to ModelGenerator Class.
AbstractFFVVertexPtr FFGVertex_
Pointer to the fermion-fermion-gluon vertex.
runPtr runningMass_
The running mass.
tVertexBasePtr vertex(size_t ix) const
Access to a vertex from the list.
vector< VertexBasePtr > vertexList_
Full list of vertices as a vector to allow searching.
virtual tAbstractVVSVertexPtr vertexHPP() const
Pointer to the quartic gluon vertex.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double ld() const
The left-handed coupling of a down type quark.
Ptr< Herwig::RunningMassBase >::pointer runPtr
Some typedefs for the pointers.
Definition: StandardModel.h:49
virtual tAbstractSSSVertexPtr vertexHHH() const
Pointer to the triple Higgs vertex.
double rnu() const
The right-handed coupling of a neutrino.
StandardModel & operator=(const StandardModel &)=delete
Private and non-existent assignment operator.
virtual tAbstractVVSSVertexPtr vertexWWHH() const
Pointer to the WWHH vertex.
Energy mass(Energy2 scale, tcPDPtr part) const
Return the running mass for a given scale and particle type.
AbstractFFVVertexPtr FFZVertex_
Pointers to the vertices for Standard Model helicity amplitude calculations.
virtual tAbstractVVVVertexPtr vertexGGG() const
Pointer to the triple gluon vertex.
trunPtr massPtr() const
Return a pointer to the object handling the running mass.
virtual ~StandardModel()
Destructor.
string name() const
double sin2ThetaW() const
-*- C++ -*-
ThePEG::Ptr< ParticleData >::transient_pointer tPDPtr
double sqrt(int x)
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr