Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F10881056
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
11 KB
Subscribers
None
View Options
diff --git a/Models/Susy/SSCCZVertex.cc b/Models/Susy/SSCCZVertex.cc
--- a/Models/Susy/SSCCZVertex.cc
+++ b/Models/Susy/SSCCZVertex.cc
@@ -1,130 +1,127 @@
// -*- C++ -*-
//
// SSCCZVertex.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2017 The Herwig Collaboration
//
// Herwig is licenced under version 3 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 SSCCZVertex class.
//
#include "SSCCZVertex.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/PDT/EnumParticles.h"
using namespace ThePEG::Helicity;
using namespace Herwig;
SSCCZVertex::SSCCZVertex() : _sw2(0.), _cw(0.), _couplast(0.),
_q2last(), _id1last(0), _id2last(0),
_leftlast(0.), _rightlast(0.), _gblast(0) {
orderInGs(0);
orderInGem(1);
}
void SSCCZVertex::doinit() {
addToList(-1000024, 1000024, 23);
addToList(-1000024, 1000037, 23);
addToList(-1000037, 1000024, 23);
addToList(-1000037, 1000037, 23);
//photon
addToList(-1000024, 1000024, 22);
addToList(-1000037, 1000037, 22);
FFVVertex::doinit();
tSusyBasePtr theSS = dynamic_ptr_cast<SusyBasePtr>(generator()->standardModel());
if(!theSS)
throw InitException() << "SSCCZVertex::doinit - The model pointer "
<< "is null! "
<< Exception::abortnow;
_sw2 = sin2ThetaW();
_cw = sqrt(1. - _sw2);
_theU = theSS->charginoUMix();
_theV = theSS->charginoVMix();
if(!_theU || !_theV)
throw InitException() << "SSCCZVertex::doinit - "
<< "A mixing matrix pointer is null. U: "
<< _theU << " V: " << _theV
<< Exception::abortnow;
}
void SSCCZVertex::persistentOutput(PersistentOStream & os) const {
os << _sw2 << _cw << _theU << _theV;
}
void SSCCZVertex::persistentInput(PersistentIStream & is, int) {
is >> _sw2 >> _cw >> _theU >> _theV;
}
-// *** Attention *** The following static variable is needed for the type
-// description system in ThePEG. Please check that the template arguments
-// are correct (the class and its base class), and that the constructor
-// arguments are correct (the class name and the name of the dynamically
-// loadable library where the class implementation can be found).
+// The following static variable is needed for the type
+// description system in ThePEG.
DescribeClass<SSCCZVertex,Helicity::FFVVertex>
describeSSCCZVertex("Herwig::SSCCZVertex", "HwSusy.so");
void SSCCZVertex::Init() {
static ClassDocumentation<SSCCZVertex> documentation
("This class implements the coupling of a Z/gamma to a pair of"
" charginos. ");
}
void SSCCZVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2,
tcPDPtr part3) {
long ichar1(part1->id()), ichar2(part2->id()), boson(part3->id());
assert( boson == ParticleID::gamma || boson == ParticleID::Z0);
assert( abs(ichar1) == 1000024 || abs(ichar1) == 1000037);
assert( abs(ichar2) == 1000024 || abs(ichar2) == 1000037);
if(_q2last != q2||_couplast==0.) {
_q2last = q2;
_couplast = electroMagneticCoupling(q2);
}
norm(_couplast);
if(boson != _gblast || ichar1 != _id1last || ichar2 != _id2last) {
_gblast = boson;
_id1last = ichar1;
_id2last = ichar2;
if( boson == ParticleID::Z0 ) {
unsigned int ic1(0), ic2(0);
if(abs(ichar1) == 1000037) ic1 = 1;
if(abs(ichar2) == 1000037) ic2 = 1;
_leftlast = -(*_theV)(ic1, 0)*conj((*_theV)(ic2, 0)) -
0.5*(*_theV)(ic1, 1)*conj((*_theV)(ic2, 1));
_rightlast = -conj((*_theU)(ic1, 0))*(*_theU)(ic2, 0) -
0.5*conj((*_theU)(ic1, 1))*(*_theU)(ic2, 1);
if(abs(ichar1) == abs(ichar2)) {
_leftlast += _sw2;
_rightlast += _sw2;
}
_leftlast /= sqrt(_sw2)*_cw;
_rightlast /= sqrt(_sw2)*_cw;
}
else {
if(abs(ichar1) == abs(ichar2)) {
_leftlast = -1.;
_rightlast = -1.;
}
else {
_leftlast = 0.;
_rightlast = 0.;
}
}
if(ichar1>0) {
Complex temp = _leftlast;
_leftlast = -_rightlast;
_rightlast = -temp;
}
}
left(_leftlast);
right(_rightlast);
}
diff --git a/Models/Susy/SSWSSVertex.cc b/Models/Susy/SSWSSVertex.cc
--- a/Models/Susy/SSWSSVertex.cc
+++ b/Models/Susy/SSWSSVertex.cc
@@ -1,242 +1,237 @@
// -*- C++ -*-
//
// SSWSSVertex.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2017 The Herwig Collaboration
//
// Herwig is licenced under version 3 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 SSWSSVertex class.
//
#include "SSWSSVertex.h"
#include "ThePEG/Utilities/DescribeClass.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;
SSWSSVertex::SSWSSVertex():_sw(0.), _cw(0.), _q2last(),_couplast(0.),
- _ulast(0), _dlast(0), _gblast(0),
- _factlast(0.) {
+ _ulast(0), _dlast(0), _gblast(0),
+ _factlast(0.) {
orderInGem(1);
orderInGs(0);
}
void SSWSSVertex::doinit() {
//W-
//LL-squarks
for(long ix=1000001;ix<1000006;ix+=2) {
addToList(-24,ix+1,-ix);
}
//1-2 stop sbottom
addToList(-24,1000006,-2000005);
//2-1 stop sbottom
addToList(-24,2000006,-1000005);
//2-2 stop sbottom
addToList(-24,2000006,-2000005);
//LL-sleptons
for(long ix=1000011;ix<1000016;ix+=2) {
addToList(-24,-ix,ix+1);
}
//2-L stau
addToList(-24,-2000015,1000016);
//W+
for(long ix=1000001;ix<1000006;ix+=2) {
addToList(24,-(ix+1),ix);
}
//1-2 stop sbottom
addToList(24,-1000006,2000005);
//2-1 stop sbottom
addToList(24,-2000006,1000005);
//2-2 stop sbottom
addToList(24,-2000006,2000005);
//LL-sleptons
for(long ix=1000011;ix<1000016;ix+=2) {
addToList(24,ix,-ix-1);
}
//2-L stau
addToList(24,2000015,-1000016);
//---Z0----
//LL-sleptons
for(long ix=1000011;ix<1000017;++ix) {
addToList(23,ix,-ix);
}
//RR-sleptons
for(long ix=2000011;ix<2000016;ix+=2) {
addToList(23,ix,-ix);
}
//L-Rbar stau
addToList(23,1000015,-2000015);
//Lbar-R stau
addToList(23,-1000015,2000015);
//LL squarks
for(long ix=1000001;ix<1000007;++ix) {
addToList(23,ix,-ix);
}
//RR squarks
for(long ix=2000001;ix<2000007;++ix) {
addToList(23,ix,-ix);
}
//L-Rbar stop
addToList(23,1000006,-2000006);
//Lbar-R stop
addToList(23,-1000006,2000006);
//L-Rbar sbottom
addToList(23,1000005,-2000005);
//Lbar-R sbottom
addToList(23,-1000005,2000005);
//----gamma----
//sleptons
for(long ix=1000011;ix<1000016;ix+=2) {
addToList(22,ix,-ix);
}
for(long ix=2000011;ix<2000016;ix+=2) {
addToList(22,ix,-ix);
}
//squarks
for(long ix=1000001;ix<1000007;++ix) {
addToList(22,ix,-ix);
}
for(long ix=2000001;ix<2000007;++ix) {
addToList(22,ix,-ix);
}
VSSVertex::doinit();
tMSSMPtr theSS = dynamic_ptr_cast<MSSMPtr>(generator()->standardModel());
if(!theSS)
throw InitException() << "SSWSSVertex::doinit() - "
<< "The model pointer is null."
<< Exception::abortnow;
_sw = sqrt(sin2ThetaW());
_cw = sqrt( 1. - sqr(_sw) );
_stop = theSS->stopMix();
_sbottom = theSS->sbottomMix();
_stau = theSS->stauMix();
if(!_stop || !_stau || !_sbottom)
throw InitException() << "SSWSSVertex::doinit() - "
<< "A mixing matrix pointer is null."
<< " stop: " << _stop << " sbottom: " << _sbottom
<< " stau: " << _stau << Exception::abortnow;
}
void SSWSSVertex::persistentOutput(PersistentOStream & os) const {
os << _sw << _cw << _stau << _stop << _sbottom;
}
void SSWSSVertex::persistentInput(PersistentIStream & is, int) {
is >> _sw >> _cw >> _stau >> _stop >> _sbottom;
}
// The following static variable is needed for the type
// description system in ThePEG.
DescribeClass<SSWSSVertex,VSSVertex>
describeHerwigSSWSSVertex("Herwig::SSWSSVertex", "HwSusy.so");
void SSWSSVertex::Init() {
static ClassDocumentation<SSWSSVertex> documentation
("This is the implementation of the coupling of an SM boson "
"a pair of sfermions");
}
void SSWSSVertex::setCoupling(Energy2 q2,tcPDPtr part1,
- tcPDPtr part2,tcPDPtr part3){
+ tcPDPtr part2,tcPDPtr part3) {
long boson(abs(part1->id()));
- if( boson != ParticleID::Wplus && boson != ParticleID::Z0 &&
- boson != ParticleID::gamma ) {
- throw HelicityConsistencyError()
- << "SSWSSVertex::setCoupling() - The vector particle in this "
- << "vertex is not a W/Z. " << boson << Exception::warning;
- norm(0.);
- }
+ assert( boson == ParticleID::Wplus || boson == ParticleID::Z0 ||
+ boson == ParticleID::gamma );
long sf1(abs(part2->id())),sf2(abs(part3->id()));
assert( (sf1 >= 1000001 && sf1 <= 1000006)
|| (sf1 >= 1000011 && sf1 <= 1000016)
|| (sf1 >= 2000001 && sf1 <= 2000006)
|| (sf1 >= 2000011 && sf1 <= 2000016) );
assert( (sf2 >= 1000001 && sf2 <= 1000006)
|| (sf2 >= 1000011 && sf2 <= 1000016)
|| (sf2 >= 2000001 && sf2 <= 2000006)
|| (sf2 >= 2000011 && sf2 <= 2000016) );
if( sf1 % 2 != 0 ) swap(sf1, sf2);
if( sf1 != _ulast || sf2 != _dlast || boson != _gblast) {
_gblast = boson;
_ulast = sf1;
_dlast = sf2;
//photon is simplest
if( boson == ParticleID::gamma )
_factlast = getParticleData(sf1)->charge()/eplus;
else {
//determine which helicity state
unsigned int alpha(sf1/1000000 - 1), beta(sf2/1000000 - 1);
//mixing factors
Complex m1a(0.), m1b(0.);
if( sf1 == ParticleID::SUSY_t_1 || sf1 == ParticleID::SUSY_t_2 )
m1a = (*_stop)(alpha, 0);
else if( sf1 == ParticleID::SUSY_b_1 || sf1 == ParticleID::SUSY_b_2 )
m1a = (*_sbottom)(alpha, 0);
else if( sf1 == ParticleID::SUSY_tau_1minus ||
sf1 == ParticleID::SUSY_tau_2minus )
m1a = (*_stau)(alpha, 0);
else
m1a = (alpha == 0) ? Complex(1.) : Complex(0.);
if( sf2 == ParticleID::SUSY_t_1 || sf2 == ParticleID::SUSY_t_2 )
m1b = (*_stop)(beta, 0);
else if( sf2 == ParticleID::SUSY_b_1 || sf2 == ParticleID::SUSY_b_2 )
m1b = (*_sbottom)(beta, 0);
else if( sf2 == ParticleID::SUSY_tau_1minus ||
sf2 == ParticleID::SUSY_tau_2minus )
m1b = (*_stau)(beta, 0);
else
m1b = (beta == 0) ? Complex(1.) : Complex(0.);
//W boson
if( boson == ParticleID::Wplus ) {
_factlast = m1a*m1b/sqrt(2)/_sw;
}
//Z boson
else {
if( sf1 == ParticleID::SUSY_nu_eL || sf1 == ParticleID::SUSY_nu_muL ||
sf1 == ParticleID::SUSY_nu_tauL ) {
_factlast = 1./_cw/2./_sw;
}
else {
double lmda(1.);
if( sf2 % 2 == 0 ) lmda = -1.;
_factlast = lmda*m1a*m1b;
if( alpha == beta) {
double ef = getParticleData(sf1)->charge()/eplus;
_factlast += 2.*ef*sqr(_sw);
}
_factlast *= -1./2./_cw/_sw;
}
}
}
}
if( q2 != _q2last || _couplast==0. ) {
_q2last = q2;
_couplast = electroMagneticCoupling(q2);
}
if(part2->id()>0)
norm(-_couplast*_factlast);
else
norm(+_couplast*_factlast);
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, May 3, 5:49 AM (17 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4982827
Default Alt Text
(11 KB)
Attached To
rHERWIGHG herwighg
Event Timeline
Log In to Comment