Page MenuHomeHEPForge

No OneTemporary

Size
13 KB
Referenced Files
None
Subscribers
None
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

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)

Event Timeline