Page MenuHomeHEPForge

No OneTemporary

diff --git a/Models/LHTP/LHTPWWHVertex.cc b/Models/LHTP/LHTPWWHVertex.cc
--- a/Models/LHTP/LHTPWWHVertex.cc
+++ b/Models/LHTP/LHTPWWHVertex.cc
@@ -1,224 +1,188 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the LHTPWWHVertex class.
//
#include "LHTPWWHVertex.h"
#include "LHTPModel.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
IBPtr LHTPWWHVertex::clone() const {
return new_ptr(*this);
}
IBPtr LHTPWWHVertex::fullclone() const {
return new_ptr(*this);
}
void LHTPWWHVertex::persistentOutput(PersistentOStream & os) const {
- os << ounit(_coup,GeV);
+ os << ounit(coup_,GeV);
}
void LHTPWWHVertex::persistentInput(PersistentIStream & is, int) {
- is >> iunit(_coup,GeV);
+ is >> iunit(coup_,GeV);
}
// Static variable needed for the type description system in ThePEG.
DescribeClass<LHTPWWHVertex,VVSVertex>
describeHerwigLHTPWWHVertex("Herwig::LHTPWWHVertex", "HwLHTPModel.so");
void LHTPWWHVertex::Init() {
static ClassDocumentation<LHTPWWHVertex> documentation
("The LHTPWWHVertex class implements the coupling of two electroweak"
" gauge bosons to a Higgs boson in the Little Higgs Model with T-Parity"
"including the additional heavy photon, Z and W bosons and the "
"triplet Higgs bosons.");
}
-LHTPWWHVertex::LHTPWWHVertex() : _couplast(0.), _q2last(0.*GeV2) {
+LHTPWWHVertex::LHTPWWHVertex() : coupLast_(0.), q2Last_(0.*GeV2) {
// order in the couplings
orderInGem(1);
orderInGs(0);
// W_L W_L H
addToList( 24, -24, 25);
// Z_L Z_L H
addToList( 23, 23, 25);
// W_H W_H H
addToList( 34, -34, 25);
// Z_H Z_H H
addToList( 33, 33, 25);
// A_H A_H H
addToList( 32, 32, 25);
-
-
- // Z_H Z_L H --- VIOLATES T-parity
-// addToList( 23,// 33,// 25);
-
-
-
// Z_H A_H H
addToList( 33, 32, 25);
-
- // W_L W_L Phi0 --- VIOLATES T-parity
-// addToList( 24,// -24,// 35);
-// // Z_L Z_L Phi0
-// addToList( 23,// 23,// 35);
-
-
// Z_L Z_H Phi0
addToList( 23, 33, 35);
-
- // W_H W_H Phi0 -- VIOLATES T-parity
-// addToList( 34,// -34,// 35);
-
-
// A_H Z_L Phi0
addToList( 32, 23, 35);
-
- // W_L Z_L Phi- --- VIOLATES T-parity
-// addToList( 24,// 23,// -37);
-// addToList( -24,// 23,// 37);
-
- // W_H Z_L Phi-
+ // W_L W_H PhiP
+ addToList( 24, -34, 36);
+ addToList( 34, -24, 36);
+ // W_H Z_L Phi+/-
addToList( 34, 23, -37);
addToList( -34, 23, 37);
- // W_L A_H Phi-
+ // W_L A_H Phi+/-
addToList( 24, 32, -37);
addToList( -24, 32, 37);
-
- // W_H A_H Phi- --- VIOLATES T-parity
-// addToList( 34,// 32,// -37);
-// addToList( -34,// 32,// 37);
-
- // W_L Z_H Phi-
+ // W_L Z_H Phi+/-
addToList( 24, 33, -37);
addToList( -24, 33, 37);
-
- // W_H Z_H Phi- --- VIOLATES T-parity
-// addToList( 34,// 33,// -37);
-// addToList( -34,// 33,// 37);
-
- // W_H A_L Phi-
+ // W_H A_L Phi+/-
addToList( 34, 22, -37);
addToList( -34, 22, 37);
+ // W_L W_L Phi --/++
+ addToList( 24, 24, -38);
+ addToList( -24, -24, 38);
}
void LHTPWWHVertex::doinit() {
// model
cLHTPModelPtr model =
dynamic_ptr_cast<cLHTPModelPtr>(generator()->standardModel());
if(!model)
throw InitException() << "Must be using the LHTPModel "
<< " in LHTPWWHVertex::doinit()"
<< Exception::runerror;
// base class
VVSVertex::doinit();
// calculate the couplings for the different combinations of particles
Energy fact = 0.5*model->vev()/model->sin2ThetaW();
double sw(sqrt(model->sin2ThetaW())),cw(sqrt(1.-model->sin2ThetaW()));
- double vf(sqr(model->vev()/model->f()));
+ double vf(model->vev()/model->f());
+ Energy vh = model->vev()*(1.+sqr(vf)/12.);
double r2(sqrt(2.));
- _coup.resize(18);
- _coup[ 0] = fact *(1.-vf/3.);
- _coup[ 1] = fact/sqr(cw)*(1.-vf/3.);
- _coup[ 2] =-fact;
- _coup[ 3] =-fact;
- _coup[ 4] =-fact*sqr(sw/cw);
- _coup[ 5] =-fact/cw*sw;
- _coup[ 6] = fact*2.*r2;
- _coup[ 7] =-fact*2.*r2;
- _coup[ 8] = fact/sqr(cw)*4.*r2;
- _coup[ 9] =-fact*sqrt(vf)/r2/cw;
- _coup[10] = fact*sw/sqr(cw)*sqrt(vf)/r2/sw;
- _coup[11] =-fact/cw;
- _coup[12] = fact*sqrt(vf)/6./cw*(1.+2.*sqr(sw));
- _coup[13] =-fact*sqrt(vf)*sw/cw*0.5;
- _coup[14] =-fact*sw/cw*2.;
- _coup[15] = fact*sqrt(vf)*5./6.;
- _coup[16] =-fact*2.;
- _coup[17] =-fact*sqrt(vf)*sw/3.;
+ coup_.resize(14);
+ // H
+ coup_[ 0] = fact *(1.-sqr(vf)/3.);
+ coup_[ 1] = fact/sqr(cw)*(1.-sqr(vf)/3.);
+ coup_[ 2] =-fact;
+ coup_[ 3] =-fact;
+ coup_[ 4] =-fact*sqr(sw/cw);
+ coup_[ 5] =-fact/cw*sw;
+ // PhiP
+ coup_[ 6] = r2*fact*vf/3.;
+ // Phi0
+ coup_[ 7] =-fact*vf/r2/cw;
+ coup_[ 8] = fact*vf/r2*sw/sqr(cw);
+ // Phi+
+ coup_[ 9] = fact*vf/6./cw*(1.+2.*sqr(sw));
+ coup_[10] =-fact*vf*sw/cw*0.5;
+ coup_[11] = fact*vf*5./6.;
+ coup_[12] =-fact*vf*sw/3.;
+ // Phi++
+ coup_[13] =-fact*vf;
}
void LHTPWWHVertex::setCoupling(Energy2 q2,tcPDPtr a,
tcPDPtr b, tcPDPtr c) {
// first the overall normalisation
- if(q2!=_q2last) {
- _couplast = sqr(electroMagneticCoupling(q2));
- _q2last=q2;
+ if(q2!=q2Last_) {
+ coupLast_ = sqr(electroMagneticCoupling(q2));
+ q2Last_=q2;
}
long ih = abs(c->id());
long ibos[2]={abs(a->id()),abs(b->id())};
if(ih == 25) {
if( ibos[0] == 24 && ibos[1] == 24)
- norm(UnitRemoval::InvE *_couplast*_coup[0]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[0]);
else if( ibos[0] == 23 && ibos[1] == 23 )
- norm(UnitRemoval::InvE *_couplast*_coup[1]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[1]);
else if( ibos[0] == 34 && ibos[1] == 34 )
- norm(UnitRemoval::InvE *_couplast*_coup[2]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[2]);
else if( ibos[0] == 33 && ibos[1] == 33 )
- norm(UnitRemoval::InvE *_couplast*_coup[3]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[3]);
else if( ibos[0] == 32 && ibos[1] == 32 )
- norm(UnitRemoval::InvE *_couplast*_coup[4]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[4]);
else if((ibos[0] == 33 && ibos[1] == 32) ||
(ibos[0] == 32 && ibos[1] == 33) )
- norm(UnitRemoval::InvE *_couplast*_coup[5]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[5]);
else
- throw HelicityConsistencyError() << "LittleHiggsWWHVertex::setCoupling "
- << "Invalid particles in WWH Vertex "
- << a->PDGName() << " " << b->PDGName() << " "
- << c->PDGName()
- << Exception::runerror;
+ assert(false);
+ }
+ else if(ih == 36) {
+ if( ibos[0] == 34 || ibos[1] == 34)
+ norm( Complex(0.,1.)*UnitRemoval::InvE *coupLast_*coup_[6]);
+ else
+ norm(-Complex(0.,1.)*UnitRemoval::InvE *coupLast_*coup_[6]);
}
else if(ih == 35) {
- // if ( ibos[0] == 24 && ibos[1] == 24 ) norm(UnitRemoval::InvE *_couplast*_coup[ 6]);
- // if( ibos[0] == 34 && ibos[1] == 34 ) norm(UnitRemoval::InvE *_couplast*_coup[ 7]);
- //else if( ibos[0] == 23 && ibos[1] == 23 ) norm(UnitRemoval::InvE *_couplast*_coup[ 8]);
if((ibos[0] == 23 && ibos[1] == 33) ||
(ibos[0] == 33 && ibos[1] == 23) )
- norm(UnitRemoval::InvE *_couplast*_coup[ 9]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[7]);
else if((ibos[0] == 23 && ibos[1] == 32) ||
(ibos[0] == 32 && ibos[1] == 23) )
- norm(UnitRemoval::InvE *_couplast*_coup[10]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[8]);
else
- throw HelicityConsistencyError() << "LittleHiggsWWHVertex::setCoupling "
- << "Invalid particles in WWH Vertex "
- << a->PDGName() << " " << b->PDGName() << " "
- << c->PDGName()
- << Exception::runerror;
+ assert(false);
}
else if(ih == 37) {
-// if ((ibos[0] == 24 && ibos[1] == 23) ||
-// (ibos[0] == 23 && ibos[1] == 24) ) norm(UnitRemoval::InvE *_couplast*_coup[11]);
if((ibos[0] == 34 && ibos[1] == 23) ||
(ibos[0] == 23 && ibos[1] == 34) )
- norm(UnitRemoval::InvE *_couplast*_coup[12]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[ 9]);
else if((ibos[0] == 24 && ibos[1] == 32) ||
(ibos[0] == 32 && ibos[1] == 24) )
- norm(UnitRemoval::InvE *_couplast*_coup[13]);
- // if((ibos[0] == 34 && ibos[1] == 32) ||
-// (ibos[0] == 32 && ibos[1] == 34) ) norm(UnitRemoval::InvE *_couplast*_coup[14]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[10]);
else if((ibos[0] == 24 && ibos[1] == 33) ||
(ibos[0] == 33 && ibos[1] == 24) )
- norm(UnitRemoval::InvE *_couplast*_coup[15]);
-// else if((ibos[0] == 34 && ibos[1] == 33) ||
-// (ibos[0] == 33 && ibos[1] == 34) ) norm(UnitRemoval::InvE *_couplast*_coup[16]);
+ norm(UnitRemoval::InvE *coupLast_*coup_[11]);
else if((ibos[0] == 34 && ibos[1] == 22) ||
(ibos[0] == 22 && ibos[1] == 34) )
- norm(UnitRemoval::InvE *_couplast*_coup[17]);
- else
- throw HelicityConsistencyError()
- << "LittleHiggsWWHVertex::setCoupling "
- << "Invalid particles in WWH Vertex "
- << a->PDGName() << " " << b->PDGName() << " " << c->PDGName()
- << Exception::runerror;
+ norm(UnitRemoval::InvE *coupLast_*coup_[12]);
+ else
+ assert(false);
}
+ else if(ih == 38) {
+ norm(UnitRemoval::InvE *coupLast_*coup_[13]);
+ }
+ else
+ assert(false);
}
diff --git a/Models/LHTP/LHTPWWHVertex.h b/Models/LHTP/LHTPWWHVertex.h
--- a/Models/LHTP/LHTPWWHVertex.h
+++ b/Models/LHTP/LHTPWWHVertex.h
@@ -1,127 +1,127 @@
// -*- C++ -*-
#ifndef HERWIG_LHTPWWHVertex_H
#define HERWIG_LHTPWWHVertex_H
//
// This is the declaration of the LHTPWWHVertex class.
//
#include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h"
namespace Herwig {
using namespace ThePEG;
/**
* The LittleHiggsWWHVertex class implements the couplings of two electroweak
* gauge bosons to a Higgs boson in the Little Higgs model with T-parity
* including the additional
* heavy photon, Z and W bosons in the model and the triplet Higgs bosons.
*/
class LHTPWWHVertex: public Helicity::VVSVertex {
public:
/**
* The default constructor.
*/
LHTPWWHVertex();
/**
* Calculate the couplings.
* @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
* @param part1 The ParticleData pointer for the first particle.
* @param part2 The ParticleData pointer for the second particle.
* @param part3 The ParticleData pointer for the third particle.
*/
virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3);
public:
/** @name Functions used by the persistent I/O system. */
//@{
/**
* Function used to write out object persistently.
* @param os the persistent output stream written to.
*/
void persistentOutput(PersistentOStream & os) const;
/**
* Function used to read in object persistently.
* @param is the persistent input stream read from.
* @param version the version number of the object when written.
*/
void persistentInput(PersistentIStream & is, int version);
//@}
/**
* The standard Init function used to initialize the interfaces.
* Called exactly once for each class by the class description system
* before the main function starts or
* when this class is dynamically loaded.
*/
static void Init();
protected:
/** @name Clone Methods. */
//@{
/**
* Make a simple clone of this object.
* @return a pointer to the new object.
*/
virtual IBPtr clone() const;
/** Make a clone of this object, possibly modifying the cloned object
* to make it sane.
* @return a pointer to the new object.
*/
virtual IBPtr fullclone() const;
//@}
protected:
/** @name Standard Interfaced functions. */
//@{
/**
* Initialize this object after the setup phase before saving an
* EventGenerator to disk.
* @throws InitException if object could not be initialized properly.
*/
virtual void doinit();
//@}
private:
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
LHTPWWHVertex & operator=(const LHTPWWHVertex &);
private:
/**
* Storage of the couplings.
*/
//@{
/**
* The last value of the electroweak coupling calculated.
*/
- Complex _couplast;
+ Complex coupLast_;
/**
* The scale \f$q^2\f$ at which the coupling was last evaluated.
*/
- Energy2 _q2last;
+ Energy2 q2Last_;
/**
* Couplings for the different interactions
*/
- vector<Energy> _coup;
+ vector<Energy> coup_;
//@}
};
}
#endif /* HERWIG_LHTPWWHVertex_H */

File Metadata

Mime Type
text/x-diff
Expires
Mon, Jan 20, 11:11 PM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4242816
Default Alt Text
(12 KB)

Event Timeline