Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8725444
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
34 KB
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
rHERWIGHG herwighg
Event Timeline
Log In to Comment