Page MenuHomeHEPForge

No OneTemporary

diff --git a/Models/Leptoquarks/LeptoquarkModelSLQFFVertex.cc b/Models/Leptoquarks/LeptoquarkModelSLQFFVertex.cc
--- a/Models/Leptoquarks/LeptoquarkModelSLQFFVertex.cc
+++ b/Models/Leptoquarks/LeptoquarkModelSLQFFVertex.cc
@@ -1,337 +1,337 @@
// -*- C++ -*-
//
// LeptoquarkModelSLQFFVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2011 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 LeptoquarkModelSLQFFVertex class.
//
#include "LeptoquarkModelSLQFFVertex.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 LeptoquarkModelSLQFFVertex::clone() const {
return new_ptr(*this);
}
IBPtr LeptoquarkModelSLQFFVertex::fullclone() const {
return new_ptr(*this);
}
LeptoquarkModelSLQFFVertex::LeptoquarkModelSLQFFVertex()
{}
void LeptoquarkModelSLQFFVertex::doinit() {
//S0
- addToList(15,6,-9911561);
- addToList(-15,-6,9911561);
+ addToList( 15, 6,-9911561);
+ addToList(-15,-6, 9911561);
- addToList(-16,-5,9911561);
- addToList(16,5,-9911561);
+ addToList(-16,-5, 9911561);
+ addToList( 16, 5,-9911561);
//~S0
- addToList(-15,-5,9921551);
- addToList(15,5,-9921551);
+ addToList(-15,-5, 9921551);
+ addToList( 15, 5,-9921551);
//S1 triplet
//S1p
- addToList(-15,-5,9931551);
- addToList(15,5,-9931551);
+ addToList(-15,-5, 9931551);
+ addToList( 15, 5,-9931551);
//S1z
- addToList(-15,-6,9931561);
- addToList(15,6,-9931561);
- addToList(-16,-5,9931561);
- addToList(16,5,-9931561);
+ addToList(-15,-6, 9931561);
+ addToList( 15, 6,-9931561);
+ addToList(-16,-5, 9931561);
+ addToList( 16, 5,-9931561);
//S1m
- addToList(-16,-6,9931661);
- addToList(16,6,-9931661);
+ addToList(-16,-6, 9931661);
+ addToList( 16, 6,-9931661);
//S1/2 doublet
- addToList(15,-6,9941561);
- addToList(-15,6,-9941561);
+ addToList( 15,-6, 9941561);
+ addToList(-15, 6,-9941561);
- addToList(-15,5,-9941551);
- addToList(-16,-6,-9941551);
- addToList(15,-5,9941551);
- addToList(16,-6,9941551);
+ addToList(-15, 5,-9941551);
+ addToList(-16, 6,-9941551);
+ addToList( 15,-5, 9941551);
+ addToList( 16,-6, 9941551);
//S1/2 tilde doublet
- addToList(5,-16,-9951651);
- addToList(-5, 16,9951651);
+ addToList( 5,-16,-9951651);
+ addToList(-5, 16, 9951651);
- addToList(-5, 15,9951551);
- addToList(5,-15,-9951551);
+ addToList(-5, 15, 9951551);
+ addToList( 5,-15,-9951551);
//dS0
- addToList(15,-5,9961551);
- addToList(-15,5,-9961551);
+ addToList( 15,-5, 9961551);
+ addToList(-15, 5,-9961551);
- addToList(16,-6,9961551);
- addToList(-16,6,-9961551);
+ addToList( 16,-6, 9961551);
+ addToList(-16, 6,-9961551);
//~dS0
- addToList(15,-6,9971561);
- addToList(-15,6,-9971561);
+ addToList( 15,-6, 9971561);
+ addToList(-15, 6,-9971561);
//dS1 triplet
//dS1p
- addToList(15,-6,9981561);
- addToList(-15,6,-9981561);
+ addToList( 15,-6, 9981561);
+ addToList(-15, 6,-9981561);
//dS1z
- addToList(16,-6,9981551);
- addToList(-16,6,-9981551);
+ addToList( 16,-6, 9981551);
+ addToList(-16, 6,-9981551);
- addToList(15,-5,9981551);
- addToList(-15,5,-9981551);
+ addToList( 15,-5, 9981551);
+ addToList(-15, 5,-9981551);
//dS1m
- addToList(16,-5,9981651);
- addToList(-16,5,-9981651);
+ addToList( 16,-5, 9981651);
+ addToList(-16, 5,-9981651);
//dS1/2 doublet
- addToList(-15,-5,9991551);
- addToList(15,5,-9991551);
+ addToList(-15,-5, 9991551);
+ addToList( 15, 5,-9991551);
- addToList(-15,-6,9991561);
- addToList(15,6,-9991561);
+ addToList(-15,-6, 9991561);
+ addToList( 15, 6,-9991561);
- addToList(-16,-5,9991561);
- addToList(16,5,-9991561);
+ addToList(-16,-5, 9991561);
+ addToList( 16, 5,-9991561);
//dS1/2 tilde doublet
- addToList(-15,-6,9901561);
- addToList(15,6,-9901561);
+ addToList(-15,-6, 9901561);
+ addToList( 15, 6,-9901561);
- addToList(-16,-6,9901661);
- addToList(16,6,-9901661);
+ addToList(-16,-6, 9901661);
+ addToList( 16, 6,-9901661);
orderInGem(0);
orderInGs(0);
_theModel = generator()->standardModel();
tcHwLeptoquarkPtr hwLeptoquark=dynamic_ptr_cast<tcHwLeptoquarkPtr>(_theModel);
if(hwLeptoquark){
_CFF=hwLeptoquark->cfermion();
_cL0 =hwLeptoquark->cleft();
_cR0 =hwLeptoquark->cright();
_cR0t = hwLeptoquark->crighttilde();
_cL1 =hwLeptoquark->cleft1();
_cL12 =hwLeptoquark->cleft12();
_cR12 =hwLeptoquark->cright12();
_cL12t =hwLeptoquark->cleft12tilde();
_derivscale = hwLeptoquark->fscale();
_dcL0 =hwLeptoquark->dcleft();
_dcR0 =hwLeptoquark->dcright();
_dcR0t = hwLeptoquark->dcrighttilde();
_dcL1 =hwLeptoquark->dcleft1();
_dcL12 =hwLeptoquark->dcleft12();
_dcR12 =hwLeptoquark->dcright12();
_dcL12t =hwLeptoquark->dcleft12tilde();
}
FFSVertex::doinit();
}
void LeptoquarkModelSLQFFVertex::persistentOutput(PersistentOStream & os) const {
os << _CFF << _cL0 << _cR0 << _cR0t << _cL1 << _cL12 << _cR12 << _cL12t << _dcL0 << _dcR0 << _dcR0t << _dcL1 << _dcL12 << _dcR12 << _dcL12t << _derivscale;
}
void LeptoquarkModelSLQFFVertex::persistentInput(PersistentIStream & is, int) {
is >> _CFF >> _cL0 >> _cR0 >> _cR0t >> _cL1 >> _cL12 >> _cR12 >> _cL12t >>_dcL0 >> _dcR0 >> _dcR0t >> _dcL1 >> _dcL12 >> _dcR12 >> _dcL12t >> _derivscale;
}
ClassDescription<LeptoquarkModelSLQFFVertex>
LeptoquarkModelSLQFFVertex::initLeptoquarkModelSLQFFVertex;
// Definition of the static class description member.
void LeptoquarkModelSLQFFVertex::Init() {
static ClassDocumentation<LeptoquarkModelSLQFFVertex> documentation
("The LeptoquarkModelSLQFFVertex class is the implementation"
" of the helicity amplitude calculation of the Leptoquark"
" quark-lepton vertex.");
}
void LeptoquarkModelSLQFFVertex::setCoupling(Energy2,tcPDPtr aa ,tcPDPtr bb, tcPDPtr cc) {
long isc(cc->id()), ism(aa->id()),
ichg(bb->id());
long lqid = isc;
long smid_1 = ism;
long smid_2 = ichg;
if(fabs(lqid) < 9900000) {
lqid = ism;
smid_1 = ichg;
smid_2 = isc;
}
if(fabs(lqid) < 9900000) {
lqid = ichg;
smid_1 = ism;
smid_2 = isc;
}
if( fabs(smid_1) > fabs(smid_2) ) { swap(smid_1, smid_2); }
double mtop = 174.2;
double mbot = 4.2;
double mtau = 1.77699;
//set the couplings to left and right
//S0
if( fabs(isc) == 9911561 || fabs(ism) == 9911561 || fabs(ichg) == 9911561 ) {
if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) {
_cL = -_cL0; _cR = Complex(0.);
}
if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) {
_cL = _cL0;
_cR = _cR0;
}
}
//~S0
if( fabs(isc) == 9921551 || fabs(ism) == 9921551 || fabs(ichg) == 9921551 ) {
_cL = Complex(0.); _cR = _cR0t;
}
//S1 triplet
//Q = + 4/3
if( fabs(isc) == 9931551 || fabs(ism) == 9931551 || fabs(ichg) == 9931551 ) {
_cL = sqrt(2.)* _cL1; _cR = Complex(0.);
}
//Q = + 1/3
if( fabs(isc) == 9931561 || fabs(ism) == 9931561 || fabs(ichg) == 9931561 ) {
_cL = - _cL1; _cR = Complex(0.);
}
//Q = - 2/3
if( fabs(isc) == 9931661 || fabs(ism) == 9931661 || fabs(ichg) == 9931661 ) {
_cL = sqrt(2.) * _cL1; _cR = Complex(0.);
}
//S1/2 doublet
//Q = + 5/3
if( fabs(isc) == 9941561 || fabs(ism) == 9941561 || fabs(ichg) == 9941561 ) {
_cR = _cL12; _cL = _cR12;
}
//Q = + 2/3
if( fabs(isc) == 9941551 || fabs(ism) == 9941551 || fabs(ichg) == 9941551 ) {
if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) {
_cR = Complex(0.); _cL = - _cR12;
}
if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) {
_cL = Complex(0.); _cR = _cL12;
}
}
//S1/2 tilde doublet
//Q = + 2/3
if( fabs(isc) == 9951551 || fabs(ism) == 9951551 || fabs(ichg) == 9951551 ) {
_cR = _cL12t; _cL = Complex(0.);
}
//Q = - 1/3
if( fabs(isc) == 9951651 || fabs(ism) == 9951651 || fabs(ichg) == 9951651 ) {
_cR = _cL12t; _cL = Complex(0.);
}
//dS0
if( fabs(isc) == 9961551 || fabs(ism) == 9961551 || fabs(ichg) == 9961551) {
if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) {
_cR = _dcL0 * mbot +_dcR0 * mtau;
_cL = _dcR0 * mbot + _dcL0 * mtau;
}
if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) {
_cR = _dcL0 * mtop;
_cL = Complex(0.);
}
_cL /= sqrt(2.) * _derivscale;
_cR /= sqrt(2.) * _derivscale;
}
//d~S0
if( fabs(isc) == 9971561 || fabs(ism) == 9971561 || fabs(ichg) == 9971561) {
_cR = _dcR0t * mtau / (sqrt(2.) * _derivscale);
_cL = _dcR0t * mtop / (sqrt(2.) * _derivscale);
}
//dS1 triplet
if( fabs(isc) == 9981561 || fabs(ism) == 9981561 || fabs(ichg) == 9981561) {
_cR = sqrt(2.) * _dcL1 * mtop / (sqrt(2.) * _derivscale);
_cL = sqrt(2.) * _dcL1 * mtau / (sqrt(2.) * _derivscale);
}
if( fabs(isc) == 9981551 || fabs(ism) == 9981551 || fabs(ichg) == 9981551) {
if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) {
_cR = -_dcL1 * mbot;
_cL = -_dcL1 * mtau;
}
if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) {
_cR = _dcL1 * mtop;
_cL = Complex(0.);
}
_cL /= sqrt(2.) * _derivscale;
_cR /= sqrt(2.) * _derivscale;
}
if( fabs(isc) == 9981651 || fabs(ism) == 9981651 || fabs(ichg) == 9981651) {
_cL = sqrt(2.) * _dcL1 * mbot / (sqrt(2.) * _derivscale);
_cR = Complex(0.);
}
//dS1/2 doublet
if( fabs(isc) == 9991551 || fabs(ism) == 9991551 || fabs(ichg) == 9991551 ) {
_cL = _dcL12 * mbot + _dcR12 * mtau;
_cR = _dcR12 * mbot + _dcL12 * mtau;
_cL /= sqrt(2.) * _derivscale;
_cR /= sqrt(2.) * _derivscale;
}
if( fabs(isc) == 9991561 || fabs(ism) == 9991561 || fabs(ichg) == 9991561 ) {
if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) {
_cL = _dcR12 * mtau;
_cR = _dcR12 * mtop;
}
if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) {
_cL = _dcL12 * mbot;
}
_cL /= sqrt(2.) * _derivscale;
_cR /= sqrt(2.) * _derivscale;
}
//dS1/2 tilde doublet
if( fabs(isc) == 9901561 || fabs(ism) == 9901561 || fabs(ichg) == 9901561 ) {
_cL = _dcL12t * mtop / (sqrt(2.) * _derivscale); _cR = _dcL12t * mtau / (sqrt(2.) * _derivscale);
}
if( fabs(isc) == 9901661 || fabs(ism) == 9901661 || fabs(ichg) == 9901661 ) {
_cL = _dcL12t * mtop / (sqrt(2.) * _derivscale); _cR = Complex(0.);
}
if(smid_1 > 0) {
left(conj(_cR)); right(conj(_cL));
} else { left(_cL); right(_cR); }
norm(_CFF);
}
diff --git a/Models/Susy/NMSSM/NMSSMWWHHVertex.cc b/Models/Susy/NMSSM/NMSSMWWHHVertex.cc
--- a/Models/Susy/NMSSM/NMSSMWWHHVertex.cc
+++ b/Models/Susy/NMSSM/NMSSMWWHHVertex.cc
@@ -1,173 +1,173 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the NMSSMWWHHVertex class.
//
#include "NMSSMWWHHVertex.h"
#include "NMSSM.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
NMSSMWWHHVertex::NMSSMWWHHVertex() : couplast_(0.),q2last_(ZERO),
sw_(0.), cw_(0.), sb_(0.), cb_(0.)
{}
IBPtr NMSSMWWHHVertex::clone() const {
return new_ptr(*this);
}
IBPtr NMSSMWWHHVertex::fullclone() const {
return new_ptr(*this);
}
void NMSSMWWHHVertex::persistentOutput(PersistentOStream & os) const {
os << sw_ << cw_ << sb_ << cb_ << mixS_ << mixP_;
}
void NMSSMWWHHVertex::persistentInput(PersistentIStream & is, int) {
is >> sw_ >> cw_ >> sb_ >> cb_ >> mixS_ >> mixP_;
}
ClassDescription<NMSSMWWHHVertex> NMSSMWWHHVertex::initNMSSMWWHHVertex;
// Definition of the static class description member.
void NMSSMWWHHVertex::Init() {
static ClassDocumentation<NMSSMWWHHVertex> documentation
("The NMSSMWWHHVertex class implements the coupling of"
" two electroweak and two Higgs bosons in the NMSSM.");
}
void NMSSMWWHHVertex::doinit() {
int scalar[3]={25,35,45};
int pseudo[2]={36,46};
// scalar higgs bosons
for(unsigned int i=0;i<3;++i) {
// pair of scalars
for(unsigned int j=0;j<3;++j) {
addToList( 24,-24,scalar[i],scalar[j]);
addToList( 23, 23,scalar[i],scalar[j]);
}
// scalar charged
- addToList( 22, 24,scalar[i], 37);
- addToList( 22,-24,scalar[i],-37);
- addToList( 23, 24,scalar[i], 37);
- addToList( 23,-24,scalar[i],-37);
+ addToList( 22, 24,scalar[i],-37);
+ addToList( 22,-24,scalar[i], 37);
+ addToList( 23, 24,scalar[i],-37);
+ addToList( 23,-24,scalar[i], 37);
}
// pair of pseudoscalars
for(unsigned int i=0;i<2;++i) {
for(unsigned int j=0;j<2;++j) {
addToList( 24,-24,pseudo[i],pseudo[j]);
addToList( 23, 23,pseudo[i],pseudo[j]);
}
// pseudo charged
- addToList( 22, 24,pseudo[i], 37);
- addToList( 22,-24,pseudo[i],-37);
- addToList( 23, 24,pseudo[i], 37);
- addToList( 23,-24,pseudo[i],-37);
+ addToList( 22, 24,pseudo[i],-37);
+ addToList( 22,-24,pseudo[i], 37);
+ addToList( 23, 24,pseudo[i],-37);
+ addToList( 23,-24,pseudo[i], 37);
}
addToList( 24,-24, 37,-37);
addToList( 23, 23, 37,-37);
addToList( 22, 23, 37,-37);
addToList( 22, 22, 37,-37);
// cast to NMSSM model
tcNMSSMPtr model=dynamic_ptr_cast<tcNMSSMPtr>(generator()->standardModel());
if(!model)
throw InitException() << "Must have the NMSSM Model in NMSSMWWHHVertex::doinit()"
<< Exception::runerror;
// sin and cos theta_W
sw_ = sqrt( sin2ThetaW());
cw_ = sqrt(1.-sin2ThetaW());
// get the mixing matrices
mixS_ = model->CPevenHiggsMix();
if(!mixS_) throw InitException() << "Mixing matrix for CP-even neutral Higgs"
<< " bosons is not set in NMSSMWWHHVertex::doinit()"
<< Exception::runerror;
mixP_ = model->CPoddHiggsMix();
if(!mixP_) throw InitException() << "Mixing matrix for CP-odd neutral Higgs"
<< " bosons is not set in NMSSMWWHHVertex::doinit()"
<< Exception::runerror;
// sin and cos beta
double beta = atan(model->tanBeta());
sb_ = sin(beta);
cb_ = cos(beta);
// order in couplings
orderInGem(2);
orderInGs (0);
// base class
VVSSVertex::doinit();
}
void NMSSMWWHHVertex::setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,
tcPDPtr part3, tcPDPtr part4) {
if(q2!=q2last_||couplast_==0.) {
couplast_ = sqr(electroMagneticCoupling(q2));
q2last_=q2;
}
int ibos1 = part1->id(), ibos2 = part2->id();
int isca1 = part3->id(), isca2 = part4->id();
Complex fact(1.);
if(abs(ibos1)==abs(ibos2)) {
fact *= 0.5/sqr(sw_);
if(ibos1==ParticleID::Z0) fact /= sqr(cw_);
// charged
if(abs(isca1)==37) {
if(ibos1==ParticleID::Z0) fact *= sqr(sqr(cw_)-sqr(sw_));
else if(ibos1==ParticleID::gamma) fact = 2.;
}
// pair of scalars
else if((isca1-5)%10==0) {
unsigned int i = (isca1-25)/10;
unsigned int j = (isca2-25)/10;
fact *= (*mixS_)(i,0)*(*mixS_)(j,0)+(*mixS_)(i,1)*(*mixS_)(j,1);
}
// pair of pseudoscalars
else if((isca1-6)%10==0) {
unsigned int i = (isca1-36)/10;
unsigned int j = (isca2-36)/10;
fact *= (*mixP_)(i,0)*(*mixP_)(j,0)+(*mixP_)(i,1)*(*mixP_)(j,1);
}
else
assert(false);
}
else if(abs(ibos1)==ParticleID::Wplus ||
abs(ibos2)==ParticleID::Wplus) {
if(abs(ibos1)==ParticleID::gamma ||
abs(ibos2)==ParticleID::gamma) {
fact *= -0.5/sw_;
}
else {
fact *= 0.5/cw_;
}
if((isca1-5)%10==0) {
unsigned int i = (isca1-25)/10;
fact *= sb_*(*mixS_)(i,0) - cb_*(*mixS_)(i,1);
}
else if((isca2-5)%10==0) {
unsigned int i = (isca2-25)/10;
fact *= sb_*(*mixS_)(i,0) - cb_*(*mixS_)(i,1);
}
else if((isca1-6)%10==0) {
unsigned int i = (isca1-36)/10;
fact *= sb_*(*mixP_)(i,0) + cb_*(*mixP_)(i,1);
fact *= isca2==ParticleID::Hplus ? -Complex(0.,1.) : Complex(0.,1.);
}
else if((isca2-6)%10==0) {
unsigned int i = (isca2-36)/10;
fact *= sb_*(*mixP_)(i,0) + cb_*(*mixP_)(i,1);
fact *= isca1==ParticleID::Hplus ? -Complex(0.,1.) : Complex(0.,1.);
}
else
assert(false);
}
else {
fact = (sqr(cw_)-sqr(sw_))/cw_/sw_;
}
// set the coupling
norm(couplast_*fact);
}
diff --git a/Models/Susy/SSWWHHVertex.cc b/Models/Susy/SSWWHHVertex.cc
--- a/Models/Susy/SSWWHHVertex.cc
+++ b/Models/Susy/SSWWHHVertex.cc
@@ -1,177 +1,177 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the SSWWHHVertex class.
//
#include "SSWWHHVertex.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "MSSM.h"
using namespace Herwig;
SSWWHHVertex::SSWWHHVertex() : couplast_(0.), q2last_(ZERO)
{}
IBPtr SSWWHHVertex::clone() const {
return new_ptr(*this);
}
IBPtr SSWWHHVertex::fullclone() const {
return new_ptr(*this);
}
void SSWWHHVertex::persistentOutput(PersistentOStream & os) const {
os << coup_;
}
void SSWWHHVertex::persistentInput(PersistentIStream & is, int) {
is >> coup_;
}
ClassDescription<SSWWHHVertex> SSWWHHVertex::initSSWWHHVertex;
// Definition of the static class description member.
void SSWWHHVertex::Init() {
static ClassDocumentation<SSWWHHVertex> documentation
("The SSWWHHVertex class implements the coupling of two Higgs bosons and"
"two electroweak vector bosons in the MSSM.");
}
void SSWWHHVertex::doinit() {
int id[3]={25,35,36};
for(unsigned int ix=0;ix<3;++ix) {
addToList( 24,-24,id[ix],id[ix]);
addToList( 23, 23,id[ix],id[ix]);
- addToList( 22, 24,id[ix], 37);
- addToList( 22,-24,id[ix],-37);
- addToList( 23, 24,id[ix], 37);
- addToList( 23,-24,id[ix],-37);
+ addToList( 22, 24,id[ix],-37);
+ addToList( 22,-24,id[ix], 37);
+ addToList( 23, 24,id[ix],-37);
+ addToList( 23,-24,id[ix], 37);
}
addToList( 24,-24, 37,-37);
addToList( 23, 23, 37,-37);
addToList( 22, 23, 37,-37);
addToList( 22, 22, 37,-37);
VVSSVertex::doinit();
tMSSMPtr model = dynamic_ptr_cast<tMSSMPtr>(generator()->standardModel());
if( !model )
throw Exception()
<< "SSWWHHVertex::doinit() - The pointer to the MSSM object is null!"
<< Exception::abortnow;
coup_.resize(11);
double sw2 = sin2ThetaW();
double sw = sqrt(sw2);
double cw2 = 1.-sw2;
double cw = sqrt(cw2);
double c2w = cw2-sw2;
double sinalp = sin(model->higgsMixingAngle());
double cosalp = sqrt(1. - sqr(sinalp));
double tanbeta = model->tanBeta();
double sinbeta = tanbeta/sqrt(1. + sqr(tanbeta));
double cosbeta = sqrt( 1. - sqr(sinbeta) );
double sinbma = sinbeta*cosalp - cosbeta*sinalp;
double cosbma = cosbeta*cosalp + sinbeta*sinalp;
// WWHH
coup_[0] = 0.5/sw2;
// ZZH0H0
coup_[1] = 0.5/sw2/cw2;
// ZZH+H-
coup_[2] = 0.5*sqr(c2w)/cw2/sw2;
// Z W h0 H+
coup_[3] =-0.5/cw*cosbma;
// Z W H0 H+
coup_[4] = 0.5/cw*sinbma;
// Z W A0 H+
coup_[5] =-Complex(0.,0.5)/cw;
// A A H+H-
coup_[6] = 2.;
// A Z H+H-
coup_[7] = c2w/sw/cw;
// A W h0 H+
coup_[8] = 0.5*cosbma/sw;
// A W H0 H+
coup_[9] =-0.5*sinbma/sw;
// A W A0 H+
coup_[10] = Complex(0.,0.5)/sw;
}
void SSWWHHVertex::setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,
tcPDPtr part3, tcPDPtr part4) {
if(q2!=q2last_||couplast_==0.) {
couplast_ = sqr(electroMagneticCoupling(q2));
q2last_=q2;
}
int ibos1 = part1->id(), ibos2 = part2->id();
int isca1 = part3->id(), isca2 = part4->id();
if(abs(ibos1)==abs(ibos2)) {
if(abs(ibos1)==ParticleID::Wplus) {
norm(couplast_*coup_[0]);
}
else if(ibos1==ParticleID::Z0) {
if(abs(isca1)==ParticleID::Hplus)
norm(couplast_*coup_[2]);
else
norm(couplast_*coup_[1]);
}
else if(ibos1==ParticleID::gamma) {
norm(couplast_*coup_[6]);
}
else
assert(false);
}
else if(abs(ibos1)==ParticleID::Wplus ||
abs(ibos2)==ParticleID::Wplus) {
if(abs(ibos1)==ParticleID::gamma ||
abs(ibos2)==ParticleID::gamma) {
if(abs(isca1)==ParticleID::h0 ||
abs(isca2)==ParticleID::h0) {
norm(couplast_*coup_[8]);
}
else if(abs(isca1)==ParticleID::H0 ||
abs(isca2)==ParticleID::H0) {
norm(couplast_*coup_[9]);
}
else if(abs(isca1)==ParticleID::A0 ||
abs(isca2)==ParticleID::A0) {
if(isca1==ParticleID::Hplus ||
isca2==ParticleID::Hplus) {
norm(couplast_* coup_[10] );
}
else {
norm(couplast_*conj(coup_[10]));
}
}
else
assert(false);
}
else {
if(abs(isca1)==ParticleID::h0 ||
abs(isca2)==ParticleID::h0) {
norm(couplast_*coup_[3]);
}
else if(abs(isca1)==ParticleID::H0 ||
abs(isca2)==ParticleID::H0) {
norm(couplast_*coup_[4]);
}
else if(abs(isca1)==ParticleID::A0 ||
abs(isca2)==ParticleID::A0) {
if(isca1==ParticleID::Hplus ||
isca2==ParticleID::Hplus) {
norm(couplast_* coup_[5] );
}
else {
norm(couplast_*conj(coup_[5]));
}
}
else
assert(false);
}
}
else {
norm(couplast_*coup_[7]);
}
}
diff --git a/Models/UED/UEDF1F1W0Vertex.cc b/Models/UED/UEDF1F1W0Vertex.cc
--- a/Models/UED/UEDF1F1W0Vertex.cc
+++ b/Models/UED/UEDF1F1W0Vertex.cc
@@ -1,155 +1,155 @@
// -*- C++ -*-
//
// UEDF1F1W0Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2011 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 UEDF1F1W0Vertex class.
//
#include "UEDF1F1W0Vertex.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/PDT/EnumParticles.h"
using namespace ThePEG::Helicity;
using namespace Herwig;
UEDF1F1W0Vertex::UEDF1F1W0Vertex(): theRadius(ZERO), theQ2Last(ZERO),
theCoupLast(0.),
thefermALast(0), thefermBLast(0)
{}
void UEDF1F1W0Vertex::doinit() {
//outgoing W+
for( long i = 2; i < 17; i += 2 ) {
if( i == 7 ) i += 5;
addToList(-5100000 - i, 5100000 + i - 1, 24);
if( i < 7 ) {
addToList(-6100000 - i, 6100000 + i - 1, 24);
}
}
addToList(-6100006, 5100005, 24);
- addToList(-5100005, 6100006, 24);
+ addToList(-5100006, 6100005, 24);
//outgoing W-
for( long i = 1; i < 16; i += 2 ) {
if( i == 6 ) i += 5;
addToList(-5100000 - i, 5100001 + i, -24);
if( i < 6 ) {
addToList(-6100000 - i, 6100001 + i, -24);
}
}
addToList(-6100005, 5100006, -24);
addToList(-5100005, 6100006, -24);
FFVVertex::doinit();
tUEDBasePtr model = dynamic_ptr_cast<tUEDBasePtr>(generator()->standardModel());
if(!model)
throw InitException() << "UEDF1F1W0Vertex::doinit() - The pointer to "
<< "the UEDBase object is null!"
<< Exception::runerror;
theRadius = model->compactRadius();
orderInGs(0);
orderInGem(0);
}
void UEDF1F1W0Vertex::persistentOutput(PersistentOStream & os) const {
os << ounit(theRadius,1/GeV);
}
void UEDF1F1W0Vertex::persistentInput(PersistentIStream & is, int) {
is >> iunit(theRadius,1/GeV);
}
ClassDescription<UEDF1F1W0Vertex> UEDF1F1W0Vertex::initUEDF1F1W0Vertex;
// Definition of the static class description member.
void UEDF1F1W0Vertex::Init() {
static ClassDocumentation<UEDF1F1W0Vertex> documentation
("This class implements the coupling of a pair of level-1 KK fermions"
"to an SM W boson");
}
void UEDF1F1W0Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2,
#ifndef NDEBUG
tcPDPtr part3) {
#else
tcPDPtr) {
#endif
long ianti(abs(part1->id())), iferm(abs(part2->id()));
assert( abs(part3->id()) == 24 );
bool ferma = (iferm >= 5100001 && iferm <= 5100006) ||
(iferm >= 6100001 && iferm <= 6100006) ||
(iferm >= 5100011 && iferm <= 5100016) ||
(iferm >= 6100011 && iferm <= 6100016);
bool fermb = (ianti >= 5100001 && ianti <= 5100006) ||
(ianti >= 6100001 && ianti <= 6100006) ||
(ianti >= 5100011 && ianti <= 5100016) ||
(ianti >= 6100011 && ianti <= 6100016);
if( !ferma || !fermb )
throw HelicityLogicalError() << "UEDF1F1W0Vertex::setCoupling - "
<< "There is an unknown particle(s) in the "
<< "UED F^(1) F^(1) W^(0) vertex. ID: "
<< ianti << " " << iferm
<< Exception::runerror;
if(q2 != theQ2Last || theCoupLast == 0. ) {
theQ2Last = q2;
theCoupLast = sqrt(0.5)*weakCoupling(q2);
}
if(iferm != thefermALast || ianti != thefermBLast) {
thefermALast = iferm;
thefermBLast = ianti;
int stateA(ianti/1000000), stateB(iferm/1000000);
long sma = (stateA == 6) ? ianti - 6100000 : ianti - 5100000;
long smb = (stateB == 6) ? iferm - 6100000 : iferm - 5100000;
double afu(0.), afd(0.);
if( sma % 2 == 0 ) {
afu = atan(getParticleData(sma)->mass()*theRadius)/2.;
afd = atan(getParticleData(smb)->mass()*theRadius)/2.;
}
else {
afd = atan(getParticleData(sma)->mass()*theRadius)/2.;
afu = atan(getParticleData(smb)->mass()*theRadius)/2.;
}
if( stateA == stateB ) {
if( stateA == 5 ) {
left(cos(afu)*cos(afd));
right(cos(afu)*cos(afd));
}
else {
left(sin(afu)*sin(afd));
right(sin(afu)*sin(afd));
}
}
else {
if( sma % 2 == 0 ) {
if( stateA == 5 ) {
left(cos(afu)*sin(afd));
right(-cos(afu)*sin(afd));
}
else {
left(sin(afu)*cos(afd));
right(-sin(afu)*cos(afd));
}
}
else {
if( stateA == 5 ) {
left(sin(afu)*cos(afd));
right(-sin(afu)*cos(afd));
}
else {
left(cos(afu)*sin(afd));
right(-cos(afu)*sin(afd));
}
}
}
}
norm(theCoupLast);
}
diff --git a/src/Leptoquark.model b/src/Leptoquark.model
--- a/src/Leptoquark.model
+++ b/src/Leptoquark.model
@@ -1,238 +1,238 @@
##################################################
# Common setup for Leptoquark models
#
# See LHC-LQ.in or ILC-LQ.in for example usage
#
# This file does not contain anything that
# users need to touch. User settings are in
# ???-LQ.in
#
###################################################
#
# Particle Data object for the Leptoquarks
#
###################################################
cd /Herwig/Particles
create /ThePEG/ParticleData S0bar
setup S0bar 9911561 S0bar 400.0 0.0 0.0 0.0 -1 3 1 0
create /ThePEG/ParticleData S0
setup S0 -9911561 S0 400.0 0.0 0.0 0.0 1 -3 1 0
makeanti S0bar S0
create /ThePEG/ParticleData ~S0bar
setup ~S0bar 9921551 ~S0bar 400.0 0.0 0.0 0.0 -4 3 1 0
create /ThePEG/ParticleData ~S0
setup ~S0 -9921551 ~S0 400.0 0.0 0.0 0.0 4 -3 1 0
makeanti ~S0bar ~S0
create /ThePEG/ParticleData S1pbar
setup S1pbar 9931551 S1pbar 400.0 0.0 0.0 0.0 -4 3 1 0
create /ThePEG/ParticleData S1p
setup S1p -9931551 S1p 400.0 0.0 0.0 0.0 4 -3 1 0
makeanti S1pbar S1p
create /ThePEG/ParticleData S1mbar
setup S1mbar 9931661 S1mbar 400.0 0.0 0.0 0.0 2 3 1 0
create /ThePEG/ParticleData S1m
setup S1m -9931661 S1m 400.0 0.0 0.0 0.0 -2 -3 1 0
makeanti S1mbar S1m
create /ThePEG/ParticleData S1zbar
setup S1zbar 9931561 S1zbar 400.0 0.0 0.0 0.0 -1 3 1 0
create /ThePEG/ParticleData S1z
setup S1z -9931561 S1z 400.0 0.0 0.0 0.0 1 -3 1 0
makeanti S1zbar S1z
create /ThePEG/ParticleData S12p
setup S12p 9941561 S12p 400.0 0.0 0.0 0.0 5 3 1 0
create /ThePEG/ParticleData S12pbar
setup S12pbar -9941561 S12pbar 400.0 0.0 0.0 0.0 -5 -3 1 0
makeanti S12p S12pbar
create /ThePEG/ParticleData S12m
setup S12m 9941551 S12m 400.0 0.0 0.0 0.0 2 3 1 0
create /ThePEG/ParticleData S12mbar
setup S12mbar -9941551 S12mbar 400.0 0.0 0.0 0.0 -2 -3 1 0
makeanti S12m S12mbar
create /ThePEG/ParticleData S12tp
setup S12tp 9951551 S12tp 400.0 0.0 0.0 0.0 2 3 1 0
create /ThePEG/ParticleData S12tpbar
setup S12tpbar -9951551 S12tpbar 400.0 0.0 0.0 0.0 -2 -3 1 0
makeanti S12tp S12tpbar
create /ThePEG/ParticleData S12tm
setup S12tm 9951651 S12tm 400.0 0.0 0.0 0.0 -1 3 1 0
create /ThePEG/ParticleData S12tmbar
setup S12tmbar -9951651 S12tmbar 400.0 0.0 0.0 0.0 1 -3 1 0
makeanti S12tm S12tmbar
create /ThePEG/ParticleData dS0
setup dS0 9961551 dS0 400.0 0.0 0.0 0.0 2 3 1 0
create /ThePEG/ParticleData dS0bar
setup dS0bar -9961551 dS0bar 400.0 0.0 0.0 0.0 -2 -3 1 0
makeanti dS0 dS0bar
create /ThePEG/ParticleData ~dS0
setup ~dS0 9971561 ~dS0 400.0 0.0 0.0 0.0 5 3 1 0
create /ThePEG/ParticleData ~dS0bar
setup ~dS0bar -9971561 ~dS0bar 400.0 0.0 0.0 0.0 -5 -3 1 0
makeanti ~dS0 ~dS0bar
create /ThePEG/ParticleData dS1p
setup dS1p 9981561 dS1p 400.0 0.0 0.0 0.0 5 3 1 0
create /ThePEG/ParticleData dS1pbar
setup dS1pbar -9981561 dS1pbar 400.0 0.0 0.0 0.0 -5 -3 1 0
makeanti dS1p dS1pbar
create /ThePEG/ParticleData dS1m
setup dS1m 9981651 dS1m 400.0 0.0 0.0 0.0 -1 3 1 0
create /ThePEG/ParticleData dS1mbar
setup dS1mbar -9981651 dS1mbar 400.0 0.0 0.0 0.0 1 -3 1 0
makeanti dS1m dS1mbar
create /ThePEG/ParticleData dS1z
setup dS1z 9981551 dS1z 400.0 0.0 0.0 0.0 2 3 1 0
create /ThePEG/ParticleData dS1zbar
setup dS1zbar -9981551 dS1zbar 400.0 0.0 0.0 0.0 -2 -3 1 0
makeanti dS1z dS1zbar
create /ThePEG/ParticleData dS12pbar
setup dS12pbar 9991551 dS12pbar 400.0 0.0 0.0 0.0 -4 3 1 0
create /ThePEG/ParticleData dS12p
setup dS12p -9991551 dS12p 400.0 0.0 0.0 0.0 4 -3 1 0
makeanti dS12pbar dS12p
create /ThePEG/ParticleData dS12mbar
setup dS12mbar 9991561 dS12mbar 400.0 0.0 0.0 0.0 -1 3 1 0
create /ThePEG/ParticleData dS12m
setup dS12m -9991561 dS12m 400.0 0.0 0.0 0.0 1 -3 1 0
makeanti dS12mbar dS12m
create /ThePEG/ParticleData dS12tpbar
-setup dS12tpbar 9901561 dS12tpbar 400.0 0.0 0.0 0.0 -4 3 1 0
+setup dS12tpbar 9901561 dS12tpbar 400.0 0.0 0.0 0.0 -1 3 1 0
create /ThePEG/ParticleData dS12tp
-setup dS12tp -9901561 dS12tp 400.0 0.0 0.0 0.0 4 -3 1 0
+setup dS12tp -9901561 dS12tp 400.0 0.0 0.0 0.0 1 -3 1 0
makeanti dS12tpbar dS12tp
create /ThePEG/ParticleData dS12tmbar
-setup dS12tmbar 9901661 dS12tmbar 400.0 0.0 0.0 0.0 -1 3 1 0
+setup dS12tmbar 9901661 dS12tmbar 400.0 0.0 0.0 0.0 2 3 1 0
create /ThePEG/ParticleData dS12tm
-setup dS12tm -9901661 dS12tm 400.0 0.0 0.0 0.0 1 -3 1 0
+setup dS12tm -9901661 dS12tm 400.0 0.0 0.0 0.0 -2 -3 1 0
makeanti dS12tmbar dS12tm
###################################################
#
# Main directory and model object
#
###################################################
mkdir /Herwig/NewPhysics/Leptoquark
cd /Herwig/NewPhysics/Leptoquark
create Herwig::LeptoquarkModel Model HwLeptoquarkModel.so
# SM couplings
set Model:QCD/RunningAlphaS /Herwig/AlphaS
set Model:EW/RunningAlphaEM /Herwig/AlphaEM
set Model:EW/CKM /Herwig/CKM
set Model:RunningMass /Herwig/RunningMass
set Model:LQCoupling 0.312
set Model:g_S0_L 1.0
set Model:g_S0_R 1.0
set Model:g_S0t_R 1.0
set Model:g_S1_L 1.0
set Model:g_S12_L 1.0
set Model:g_S12_R 1.0
set Model:g_S12t_L 1.0
set Model:g_dS0_L 1.0
set Model:g_dS0_R 1.0
set Model:g_dS0t_R 1.0
set Model:g_dS1_L 1.0
set Model:g_dS12_L 1.0
set Model:g_dS12_R 1.0
set Model:g_dS12t_L 1.0
set Model:derivscale 500.0
###################################################
#
# Vertices
#
###################################################
# create Leptoquark model vertices
mkdir /Herwig/Vertices/Leptoquark
cd /Herwig/Vertices/Leptoquark
library HwLeptoquarkModel.so
create Herwig::LeptoquarkModelSLQSLQGVertex Leptoquark_SLQSLQGVertex
create Herwig::LeptoquarkModelSLQSLQGGVertex Leptoquark_SLQSLQGGVertex
create Herwig::LeptoquarkModelSLQFFVertex Leptoquark_SLQFFVertex
cd /Herwig/NewPhysics/Leptoquark
# SM vertices
set Model:Vertex/FFZ /Herwig/Vertices/FFZVertex
set Model:Vertex/FFW /Herwig/Vertices/FFWVertex
set Model:Vertex/FFH /Herwig/Vertices/FFHVertex
set Model:Vertex/FFG /Herwig/Vertices/FFGVertex
set Model:Vertex/FFP /Herwig/Vertices/FFPVertex
set Model:Vertex/GGG /Herwig/Vertices/GGGVertex
set Model:Vertex/GGGG /Herwig/Vertices/GGGGVertex
set Model:Vertex/WWH /Herwig/Vertices/WWHVertex
set Model:Vertex/WWW /Herwig/Vertices/WWWVertex
set Model:Vertex/WWWW /Herwig/Vertices/WWWWVertex
set Model:Vertex/HGG /Herwig/Vertices/HGGVertex
set Model:Vertex/HHH /Herwig/Vertices/HHHVertex
set Model:Vertex/WWHH /Herwig/Vertices/WWHHVertex
set Model:Vertex/HHH /Herwig/Vertices/HHHVertex
set Model:Vertex/HPP /Herwig/Vertices/HPPVertex
# Leptoquark model vertices
set Model:Vertex/SLQSLQG /Herwig/Vertices/Leptoquark/Leptoquark_SLQSLQGVertex
set Model:Vertex/SLQSLQGG /Herwig/Vertices/Leptoquark/Leptoquark_SLQSLQGGVertex
set Model:Vertex/SLQFF /Herwig/Vertices/Leptoquark/Leptoquark_SLQFFVertex
###################################################
#
# Set up spin correlation Decayers
#
###################################################
cd /Herwig/NewPhysics
set TwoBodyDC:CreateDecayModes Yes
set ThreeBodyDC:CreateDecayModes No
insert NewModel:DecayParticles 0 /Herwig/Particles/S0bar
insert NewModel:DecayParticles 1 /Herwig/Particles/~S0bar
insert NewModel:DecayParticles 2 /Herwig/Particles/S1pbar
insert NewModel:DecayParticles 3 /Herwig/Particles/S1mbar
insert NewModel:DecayParticles 4 /Herwig/Particles/S1zbar
insert NewModel:DecayParticles 5 /Herwig/Particles/S12p
insert NewModel:DecayParticles 6 /Herwig/Particles/S12m
insert NewModel:DecayParticles 7 /Herwig/Particles/S12tp
insert NewModel:DecayParticles 8 /Herwig/Particles/S12tm
insert NewModel:DecayParticles 9 /Herwig/Particles/dS0
insert NewModel:DecayParticles 10 /Herwig/Particles/~dS0
insert NewModel:DecayParticles 11 /Herwig/Particles/dS1p
insert NewModel:DecayParticles 12 /Herwig/Particles/dS1m
insert NewModel:DecayParticles 13 /Herwig/Particles/dS1z
insert NewModel:DecayParticles 14 /Herwig/Particles/dS12pbar
insert NewModel:DecayParticles 15 /Herwig/Particles/dS12mbar
insert NewModel:DecayParticles 16 /Herwig/Particles/dS12tpbar
insert NewModel:DecayParticles 17 /Herwig/Particles/dS12tmbar
###################################################
# Set up the model framework
###################################################
set Leptoquark/Model:ModelGenerator NewModel
###################################################
#
# Choose Leptoquark over SM
#
###################################################
cd /Herwig/Generators
set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/Leptoquark/Model
set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/Leptoquark/Model
#insert /Herwig/Shower/ShowerHandler:DecayInShower 0 9911561

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jan 21, 1:43 AM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4234450
Default Alt Text
(34 KB)

Event Timeline