Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F19244481
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
13 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/Models/StandardModel/SMFFGVertex.cc b/Models/StandardModel/SMFFGVertex.cc
--- a/Models/StandardModel/SMFFGVertex.cc
+++ b/Models/StandardModel/SMFFGVertex.cc
@@ -1,67 +1,62 @@
// -*- C++ -*-
//
// SMFFGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2007 The Herwig Collaboration
//
// Herwig++ is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the StandardModelFFGVertex class.
//
#include "SMFFGVertex.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/StandardModel/StandardModelBase.h"
using namespace Herwig;
using namespace ThePEG;
NoPIOClassDescription<SMFFGVertex>
SMFFGVertex::initSMFFGVertex;
// Definition of the static class description member.
void SMFFGVertex::Init() {
static ClassDocumentation<SMFFGVertex> documentation
("The SMFFGVertex class is the implementation of"
"the coupling of the gluon to the Standard Model fermions");
}
// coupling for FFG vertex
void SMFFGVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr,tcPDPtr) {
// first the overall normalisation
if(q2!=_q2last||_couplast==0.) {
_couplast = -strongCoupling(q2);
_q2last=q2;
}
norm(_couplast);
// the left and right couplings
int iferm=abs(aa->id());
- if(iferm>=1 && iferm<=6) {
- left(1.);
- right(1.);
- }
- else
- throw HelicityConsistencyError() << "SMFFGVertex::setCoupling"
- << "Unknown particle in gluon vertex"
- << Exception::runerror;
+ assert(iferm>=1 && iferm<=6);
+ left(1.);
+ right(1.);
}
SMFFGVertex::SMFFGVertex() : _couplast(0.), _q2last(ZERO) {
// PDG codes for the particles
for(int ix=1;ix<7;++ix) {
addToList(-ix,ix,21);
}
}
void SMFFGVertex::doinit() {
orderInGs(1);
orderInGem(0);
FFVVertex::doinit();
}
diff --git a/Models/StandardModel/SMFFHVertex.cc b/Models/StandardModel/SMFFHVertex.cc
--- a/Models/StandardModel/SMFFHVertex.cc
+++ b/Models/StandardModel/SMFFHVertex.cc
@@ -1,112 +1,99 @@
// -*- C++ -*-
//
// SMFFHVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2007 The Herwig Collaboration
//
// Herwig++ is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the SMFFHVertex class.
//
#include "SMFFHVertex.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/Config/Constants.h"
using namespace Herwig;
IBPtr SMFFHVertex::clone() const {
return new_ptr(*this);
}
IBPtr SMFFHVertex::fullclone() const {
return new_ptr(*this);
}
SMFFHVertex::SMFFHVertex() {
// PDG codes for the particles
// the quarks
for(int ix=1;ix<7;++ix) {
addToList(-ix, ix, 25);
}
// the leptons
for(int ix=11;ix<17;ix+=2) {
addToList(-ix, ix, 25);
}
// set up for the couplings
_couplast=InvEnergy();
_idlast=0;
_q2last=ZERO;
_masslast=ZERO;
_mw=ZERO;
}
void SMFFHVertex::doinit() {
_theSM = dynamic_ptr_cast<tcHwSMPtr>(generator()->standardModel());
if (!_theSM)
throw InitException();
_mw= getParticleData(ThePEG::ParticleID::Wplus)->mass();
orderInGem(1);
orderInGs(0);
FFSVertex::doinit();
}
void SMFFHVertex::persistentOutput(PersistentOStream & os) const {
os << _theSM << ounit(_mw,GeV);
}
void SMFFHVertex::persistentInput(PersistentIStream & is, int) {
is >> _theSM >> iunit(_mw,GeV);
}
ClassDescription<SMFFHVertex>
SMFFHVertex::initSMFFHVertex;
// Definition of the static class description member.
void SMFFHVertex::Init() {
static ClassDocumentation<SMFFHVertex> documentation
("The SMFFHVertex class is the implementation"
" of the helicity amplitude calculation of the Standard Model Higgs"
" fermion-antiferiom vertex.");
}
void SMFFHVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr, tcPDPtr) {
int iferm=abs(aa->id());
// left and right couplings set to one
- left(1.); right(1.);
+ left (1.);
+ right(1.);
// first the overall normalisation
if(q2!=_q2last||_couplast==0./GeV) {
_couplast = -0.5*weakCoupling(q2)/_mw;
_q2last=q2;
_idlast=iferm;
- if((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)) {
- _masslast=_theSM->mass(q2,aa);
- }
- else {
- throw HelicityConsistencyError() << "SMFFHVertex::setCoupling "
- << "Unknown particle in Higgs vertex"
- << Exception::warning;
- _masslast = ZERO;
- }
+ assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16));
+ _masslast=_theSM->mass(q2,aa);
}
else if(iferm!=_idlast) {
_idlast=iferm;
- if((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)) {
- _masslast=_theSM->mass(q2,aa);
- }
- else {
- throw HelicityConsistencyError() << "SMFFHVertex::setCoupling "
- << "Unknown particle in Higgs vertex"
- << Exception::warning;
- _masslast = ZERO;
- }
+ assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16));
+ _masslast=_theSM->mass(q2,aa);
}
norm(_couplast*_masslast);
}
diff --git a/Models/StandardModel/SMWWWVertex.cc b/Models/StandardModel/SMWWWVertex.cc
--- a/Models/StandardModel/SMWWWVertex.cc
+++ b/Models/StandardModel/SMWWWVertex.cc
@@ -1,88 +1,87 @@
// -*- C++ -*-
//
// SMWWWVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2007 The Herwig Collaboration
//
// Herwig++ is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the SMWWWVertex class.
//
#include "SMWWWVertex.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
void SMWWWVertex::persistentOutput(PersistentOStream & os) const {
os << _zfact;
}
void SMWWWVertex::persistentInput(PersistentIStream & is, int) {
is >> _zfact;
}
ClassDescription<SMWWWVertex>
SMWWWVertex::initSMWWWVertex;
// Definition of the static class description member.
void SMWWWVertex::Init() {
static ClassDocumentation<SMWWWVertex> documentation
("The SMWWWVertex class is the implementation of the "
"Standard Model triple electroweak boson coupling.");
}
// couplings for the WWW vertex
void SMWWWVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c) {
- using ThePEG::Helicity::intermediate;
int ida=a->id();
int idb=b->id();
int idc=c->id();
// first the overall normalisation
if(q2!=_q2last||_couplast==0.) {
_couplast = electroMagneticCoupling(q2);
_q2last=q2;
}
// W- W+ photon and cylic perms
if((ida==-24 && idb== 24 && idc== 22) ||
(ida== 22 && idb==-24 && idc== 24) ||
(ida== 24 && idb== 22 && idc==-24) ) norm(_couplast);
// W+ W- photon (anticylic perms of above)
else if((ida== 24 && idb==-24 && idc== 22) ||
(ida== 22 && idb== 24 && idc==-24) ||
(ida==-24 && idb== 22 && idc== 24) ) norm(-_couplast);
// W- W+ Z and cylic perms
else if((ida==-24 && idb== 24 && idc== 23) ||
(ida== 23 && idb==-24 && idc== 24) ||
(ida== 24 && idb== 23 && idc==-24) ) norm(_couplast*_zfact);
// W+ W- Z (anticylic perms of above)
else if((ida== 24 && idb==-24 && idc== 23) ||
(ida== 23 && idb== 24 && idc==-24) ||
(ida==-24 && idb== 23 && idc== 24) ) norm(-_couplast*_zfact);
else
throw Helicity::HelicityConsistencyError()
<< "SMWWWVertex::setCoupling "
<< "Invalid particles in WWW Vertex"
<< a->PDGName() << " " << b->PDGName() << " " << c->PDGName()
<< Exception::runerror;
}
SMWWWVertex::SMWWWVertex() : _zfact(0.),_couplast(0.),
_q2last(sqr(Constants::MaxEnergy)) {
addToList(24, -24, 22);
addToList(24, -24, 23);
}
void SMWWWVertex::doinit() {
orderInGem(1);
orderInGs(0);
VVVVertex::doinit();
// factor for the Z vertex
double sw2=sin2ThetaW();
_zfact = sqrt((1.-sw2)/sw2);
}
diff --git a/Models/StandardModel/SMWWWWVertex.cc b/Models/StandardModel/SMWWWWVertex.cc
--- a/Models/StandardModel/SMWWWWVertex.cc
+++ b/Models/StandardModel/SMWWWWVertex.cc
@@ -1,176 +1,164 @@
// -*- C++ -*-
//
// SMWWWWVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2007 The Herwig Collaboration
//
// Herwig++ is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the SMWWWWVertex class.
//
#include "SMWWWWVertex.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
using namespace ThePEG;
SMWWWWVertex::SMWWWWVertex()
: _couplast(0.0), _q2last(sqr(Constants::MaxEnergy)),
_vfact(4,0.0), _sw2(0.), _cw2(0.) {
// particles
addToList(24, -24, 24, -24);
addToList(23, 24, 23, -24);
addToList(22, 24, 22, -24);
addToList(22, 24, 23, -24);
}
void SMWWWWVertex::doinit() {
orderInGem(2);
orderInGs(0);
VVVVVertex::doinit();
// couplings
_sw2 = sin2ThetaW();
_cw2 = 1.-_sw2;
double sw = sqrt(_sw2);
double cw = sqrt(_cw2);
_vfact[0] = -1./_sw2;
_vfact[1] = _cw2/_sw2;
_vfact[2] = 1.;
_vfact[3] = cw/sw;
// pointer for intermediate particles
_gamma = getParticleData(ThePEG::ParticleID::gamma);
_Z0 = getParticleData(ThePEG::ParticleID::Z0);
_wplus = getParticleData(ThePEG::ParticleID::Wplus);
_wminus = getParticleData(ThePEG::ParticleID::Wminus);
}
void SMWWWWVertex::persistentOutput(PersistentOStream & os) const {
os << _gamma << _Z0 << _wplus << _wminus
<< _vfact << _sw2 << _cw2;
}
void SMWWWWVertex::persistentInput(PersistentIStream & is, int) {
is >> _gamma >> _Z0 >> _wplus >> _wminus
>> _vfact >> _sw2 >> _cw2;
}
ClassDescription<SMWWWWVertex>SMWWWWVertex::initSMWWWWVertex;
// Definition of the static class description member.
void SMWWWWVertex::Init() {
static ClassDocumentation<SMWWWWVertex> documentation
("The SMWWWWVertex class is the implementation of the"
" Standard Model quartic electroweka gauge boson coupling.");
}
-
// couplings for the WWWW vertex
void SMWWWWVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b,
tcPDPtr c,tcPDPtr d) {
// id's of the particles
int id[4]={a->id(),b->id(),c->id(),d->id()};
// order the particles
int ngamma(0),nz(0);
int iorder[4];
for(int ix=0;ix<4;++ix) {
if (id[ix]==22) ++ngamma;
else if (id[ix]==23) ++nz;
}
// if photons or Z's
if(ngamma!=0 || nz!=0) {
int iy=0;
// put the photons first
for(int ix=0;iy<ngamma&&ix<4;++ix) {
if(id[ix]==22) {
iorder[iy]=ix;
++iy;
}
}
// then the Z bosons
for(int ix=0;iy<ngamma+nz&&ix<4;++ix) {
if(id[ix]==23) {
iorder[iy]=ix;
++iy;
}
}
// then the W+
for(int ix=0;iy<3&&ix<4;++ix) {
if(id[ix]==24) {
iorder[iy]=ix;
++iy;
}
}
- if (iy!=3) throw HelicityConsistencyError()
- << "SMWWWWVertex::setCoupling Error setting order"
- << Exception::runerror;
+ assert(iy==3);
// finally the W-
for(int ix=0;iy<4&&ix<4;++ix) {
if(id[ix]==-24) {
iorder[iy]=ix;
++iy;
}
}
- if(iy!=4)
- throw HelicityConsistencyError()
- << "SMWWWWVertex::setCoupling Error setting order"
- << Exception::warning;
+ assert(iy==4);
}
else {
int iy=0;
// first the W+
for(int ix=0;iy<3&&ix<4;++ix) {
if(id[ix]==24) {
iorder[iy]=ix;
++iy;
}
}
- if(iy!=2) throw HelicityConsistencyError()
- << "SMWWWWVertex::setCoupling Error setting order"
- << Exception::warning;
+ assert(iy==2);
// finally the W-
for(int ix=0;iy<4&&ix<4;++ix) {
if(id[ix]==-24) {
iorder[iy]=ix;
++iy;
}
}
- if(iy!=4) throw HelicityConsistencyError()
- << "SMWWWWVertex::setCoupling Error setting order"
- << Exception::warning;
+ assert(iy==4);
setIntermediate(_gamma,_Z0,_sw2,_cw2);
}
setOrder(iorder[0],iorder[1],iorder[2],iorder[3]);
setType(2);
// first the overall normalisation
if(q2!=_q2last||_couplast==0.) {
_couplast = sqr(electroMagneticCoupling(q2));
_q2last=q2;
}
// id's of the first two particles
int ida(0),idb(0);
if(iorder[0]==0) ida = abs(a->id());
else if(iorder[0]==1) ida = abs(b->id());
else if(iorder[0]==2) ida = abs(c->id());
else if(iorder[0]==3) ida = abs(d->id());
if(iorder[1]==0) idb = abs(a->id());
else if(iorder[1]==1) idb = abs(b->id());
else if(iorder[1]==2) idb = abs(c->id());
else if(iorder[1]==3) idb = abs(d->id());
// WWWW coupling
if(ida==24) norm(_vfact[0]*_couplast);
// ZZWW coupling
else if(ida==23&&idb==23) norm(_vfact[1]*_couplast);
// gamma gamma WW coupling
else if(ida==22&&idb==22) norm(_couplast);
// gamma Z WW coupling
else if(ida==22&&idb==23) norm(_vfact[3]*_couplast);
- else throw HelicityConsistencyError()
- << "SMWWWWVertex::setCoupling unknown particles"
- << Exception::runerror;
+ else assert(false);
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Sep 30, 4:42 AM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6564787
Default Alt Text
(13 KB)
Attached To
Mode
rHERWIGHG herwighg
Attached
Detach File
Event Timeline
Log In to Comment