Page MenuHomeHEPForge

No OneTemporary

diff --git a/Models/Sextet/Makefile.am b/Models/Sextet/Makefile.am
--- a/Models/Sextet/Makefile.am
+++ b/Models/Sextet/Makefile.am
@@ -1,29 +1,32 @@
BUILT_SOURCES = Sextet__all.cc
CLEANFILES = Sextet__all.cc
Sextet__all.cc : $(DIR_H_FILES) $(DIR_CC_FILES) Makefile
@echo "Concatenating .cc files into $@"
@$(top_srcdir)/cat_with_cpplines $(DIR_CC_FILES) > $@
EXTRA_DIST = $(ALL_H_FILES) $(ALL_CC_FILES)
DIR_H_FILES = $(addprefix $(srcdir)/,$(ALL_H_FILES))
ALL_H_FILES = \
SextetParticles.h \
SextetModel.h SextetModel.fh \
SextetGSSVertex.h \
+SextetPSSVertex.h \
SextetGGSSVertex.h \
SextetGVVVertex.h \
SextetGGVVVertex.h \
SextetFFSVertex.h \
SextetFFVVertex.h
DIR_CC_FILES = $(addprefix $(srcdir)/,$(ALL_CC_FILES))
ALL_CC_FILES = \
SextetModel.cc \
SextetGSSVertex.cc \
+SextetPSSVertex.cc \
SextetGGSSVertex.cc \
SextetGVVVertex.cc \
+SextetPVVVertex.cc \
SextetGGVVVertex.cc \
SextetFFSVertex.cc \
SextetFFVVertex.cc
diff --git a/Models/Sextet/SextetModel.cc b/Models/Sextet/SextetModel.cc
--- a/Models/Sextet/SextetModel.cc
+++ b/Models/Sextet/SextetModel.cc
@@ -1,234 +1,250 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the SextetModel class.
//
#include "SextetModel.h"
#include "ThePEG/Utilities/StringUtils.h"
#include "ThePEG/Interface/Reference.h"
#include "ThePEG/Interface/Command.h"
#include "ThePEG/Interface/Switch.h"
#include "ThePEG/Interface/ParVector.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/Utilities/Throw.h"
using namespace Herwig;
IBPtr SextetModel::clone() const {
return new_ptr(*this);
}
IBPtr SextetModel::fullclone() const {
return new_ptr(*this);
}
void SextetModel::persistentOutput(PersistentOStream & os) const {
- os << VVVVertex_ << VVVVVertex_ << VSSVertex_ << VVSSVertex_
+ os << GVVVertex_ << PVVVertex_ << VVVVVertex_
+ << GSSVertex_ << PSSVertex_ << VVSSVertex_
<< FFVVertex_ << FFSVertex_
<< g1L_ << g1R_ << g1pR_ << g1ppR_ << g2_ << g2p_ << g3L_
<< enableScalarSingletY43_ << enableScalarSingletY13_
<< enableScalarSingletY23_ << enableScalarTripletY13_
<< enableVectorDoubletY16_ << enableVectorDoubletY56_;
}
void SextetModel::persistentInput(PersistentIStream & is, int) {
- is >> VVVVertex_ >> VVVVVertex_ >> VSSVertex_ >> VVSSVertex_
+ is >> GVVVertex_ >> PVVVertex_ >> VVVVVertex_
+ >> GSSVertex_ >> PSSVertex_ >> VVSSVertex_
>> FFVVertex_ >> FFSVertex_
>> g1L_ >> g1R_ >> g1pR_ >> g1ppR_ >> g2_ >> g2p_ >> g3L_
>> enableScalarSingletY43_ >> enableScalarSingletY13_
>> enableScalarSingletY23_ >> enableScalarTripletY13_
>> enableVectorDoubletY16_ >> enableVectorDoubletY56_;
}
// The following static variable is needed for the type
// description system in ThePEG.
DescribeClass<SextetModel,StandardModel>
describeSextetModel("Herwig::SextetModel", "HwSextetModel.so");
void SextetModel::Init() {
static ClassDocumentation<SextetModel> documentation
("The SextetModel class provides the Model class for models with new scalars"
" or vectors in the sextet representation of SU(3)");
static Reference<SextetModel,ThePEG::Helicity::AbstractVVVVertex>
interfaceVertexVDQVDQG
("Vertex/VDQVDQG",
"The coupling of the gluon to two vector diquarks",
- &SextetModel::VVVVertex_, false, false, true, false, false);
+ &SextetModel::GVVVertex_, false, false, true, false, false);
+
+ static Reference<SextetModel,ThePEG::Helicity::AbstractVVVVertex>
+ interfaceVertexVDQVDQP
+ ("Vertex/VDQVDQP",
+ "The coupling of the photon to two vector diquarks",
+ &SextetModel::PVVVertex_, false, false, true, false, false);
static Reference<SextetModel,ThePEG::Helicity::AbstractVVVVVertex>
interfaceVertexVDQVDQGG
("Vertex/VDQVDQGG",
"The coupling of two gluons to two vector diquarks",
&SextetModel::VVVVVertex_, false, false, true, false, false);
static Reference<SextetModel,ThePEG::Helicity::AbstractVSSVertex>
interfaceVertexSDQSDQG
("Vertex/SDQSDQG",
"The coupling of the gluon to two scalar diquarks",
- &SextetModel::VSSVertex_, false, false, true, false, false);
+ &SextetModel::GSSVertex_, false, false, true, false, false);
+
+ static Reference<SextetModel,ThePEG::Helicity::AbstractVSSVertex>
+ interfaceVertexSDQSDQP
+ ("Vertex/SDQSDQP",
+ "The coupling of the photon to two scalar diquarks",
+ &SextetModel::PSSVertex_, false, false, true, false, false);
static Reference<SextetModel,ThePEG::Helicity::AbstractVVSSVertex>
interfaceVertexSDQSDQGG
("Vertex/SDQSDQGG",
"The coupling of two gluons to two scalar diquarks",
&SextetModel::VVSSVertex_, false, false, true, false, false);
static Reference<SextetModel,ThePEG::Helicity::AbstractFFSVertex>
interfaceVertexFFSDQ
("Vertex/FFSDQ",
"The coupling of two quarks to the scalar diquark",
&SextetModel::FFSVertex_, false, false, true, false, false);
static Reference<SextetModel,ThePEG::Helicity::AbstractFFVVertex>
interfaceVertexFFVDQ
("Vertex/FFVDQ",
"The coupling of two quarks to the vector diquark",
&SextetModel::FFVVertex_, false, false, true, false, false);
static ParVector<SextetModel,double> interfaceg1L
("g1L",
"The \\f$SU(2)\\f$ quark-doublet coupling to \\f$\\Phi_{6,1,1/3}\\f$.",
&SextetModel::g1L_, 3, 0.0, 0, 0,
false, false, Interface::nolimits);
static ParVector<SextetModel,double> interfaceg1R
("g1R",
"The \\f$SU(2)\\f$ singlet coupling to \\f$\\Phi_{6,1,1/3}\\f$.",
&SextetModel::g1R_, 3, 0.0, 0, 0,
false, false, Interface::nolimits);
static ParVector<SextetModel,double> interfaceg1RPrime
("g1RPrime",
"The \\f$SU(2)\\f$ singlet coupling to \\f$\\Phi_{6,1,1/3}\\f$.",
&SextetModel::g1pR_, 3, 0.0, 0, 0,
false, false, Interface::nolimits);
static ParVector<SextetModel,double> interfaceg1RDoublePrime
("g1RDoublePrime",
"The \\f$SU(2)\\f$ singlet coupling to \\f$\\Phi_{6,1,1/3}\\f$.",
&SextetModel::g1ppR_, 3, 0.0, 0, 0,
false, false, Interface::nolimits);
static ParVector<SextetModel,double> interfaceg2
("g2",
"The coupling to \\f$V^\\mu_{6,2,-1/6}\\f$.",
&SextetModel::g2_, 3, 0.0, 0, 0,
false, false, Interface::nolimits);
static ParVector<SextetModel,double> interfaceg2Prime
("g2Prime",
"The coupling to \\f$V^\\mu_{6,2,5/6}\\f$.",
&SextetModel::g2p_, 3, 0.0, 0, 0,
false, false, Interface::nolimits);
static ParVector<SextetModel,double> interfaceg3L
("g3L",
"Coupling to \\f$\\Phi_{6,3,1/3}\\f$.",
&SextetModel::g3L_, 3, 0.0, 0, 0,
false, false, Interface::nolimits);
static Command<SextetModel> interfaceEnableParticles
("EnableParticles",
"Enable specfic diquarks",
&SextetModel::doEnable, false);
}
void SextetModel::doinit() {
StandardModel::doinit();
if ( !(enableScalarSingletY43_ || enableScalarSingletY13_
|| enableScalarSingletY23_ || enableScalarTripletY13_
|| enableVectorDoubletY16_ || enableVectorDoubletY56_ )) {
Throw<Exception>() << "You have not enabled any Sextet diquarks. Use e.g.\n"
<< " do Model:EnableParticles Scalar Triplet Y=1/3\n"
<< "to specify the spin, weak isospin and weak hypercharge."
<< Exception::runerror;
}
- addVertex(VVVVertex_);
+ addVertex(GVVVertex_);
+ addVertex(PVVVertex_);
addVertex(VVVVVertex_);
- addVertex(VSSVertex_);
+ addVertex(GSSVertex_);
+ addVertex(PSSVertex_);
addVertex(VVSSVertex_);
addVertex(FFVVertex_);
addVertex(FFSVertex_);
}
string SextetModel::doEnable(string args) {
int spin=-1;
int weak=-1;
int Y[2]={-1000000,-1000000};
string orig=args;
while ( !args.empty() ) {
string arg = StringUtils::car(args);
args = StringUtils::cdr(args);
if ( arg == "Scalar" ) spin=1;
else if ( arg == "Vector" ) spin=3;
else if ( arg == "Singlet" ) weak=1;
else if ( arg == "Doublet" ) weak=2;
else if ( arg == "Triplet" ) weak=3;
else {
if(arg.find("Y=")==string::npos) continue;
arg = StringUtils::cdr(arg,"=");
vector<string> split = StringUtils::split(arg,"/");
if(split.size()!=2) continue;
istringstream is1(split[0]);
is1 >> Y[0];
istringstream is2(split[1]);
is2 >> Y[1];
}
}
// check we read a value for all three quantum numbers
if ( spin <0 || weak<0 || 0 || Y[0]== -1000000) {
return string("SextetModel:EnableParticles couldn't termine spin, weak") +
string(" isospin or hypercharge for ") + orig + ".";
}
// check the values of Y
if(!(Y[1]==3||Y[1]==6)) {
return string("SextetModel:EnableParticles invalid weak") +
string(" hypercharge for ") + orig + ".";
}
// the various allowed combinations
bool found = false;
if(spin == 1 ) {
found = true;
if ( weak == 1 && Y[0] == 4 && Y[1] == 3) {
enableScalarSingletY43_ = true;
}
else if( weak == 1 && Y[0] == 1 && Y[1] == 3) {
enableScalarSingletY13_ = true;
}
else if( weak == 1 && Y[0] == -2 && Y[1] == 3) {
enableScalarSingletY23_ = true;
}
else if( weak == 3 && Y[0] == 1 && Y[1] == 3) {
enableScalarTripletY13_ = true;
}
else
found = false;
}
else if(spin == 3 && weak == 2) {
found = true;
if ( Y[0] == -1 && Y[1] == 6) {
enableVectorDoubletY16_ = true;
}
else if( Y[0] == 5 && Y[1] == 6) {
enableVectorDoubletY56_ = true;
}
else
found = false;
}
if(!found)
return string("SextetModel:EnableParticles invalid combination") +
string(" of spin, weak isospin or hypercharge for ") + orig + ".";
else
return "";
}
diff --git a/Models/Sextet/SextetModel.h b/Models/Sextet/SextetModel.h
--- a/Models/Sextet/SextetModel.h
+++ b/Models/Sextet/SextetModel.h
@@ -1,308 +1,320 @@
// -*- C++ -*-
#ifndef HERWIG_SextetModel_H
#define HERWIG_SextetModel_H
//
// This is the declaration of the SextetModel class.
//
#include "Herwig/Models/General/BSMModel.h"
#include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
#include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h"
#include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
#include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
#include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h"
#include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h"
#include "SextetModel.fh"
namespace Herwig {
using namespace ThePEG;
/** \ingroup Models
*
* This class is used instead of the StandardModel class for the
*
*
* @see \ref SextetModelInterfaces "The interfaces"
* defined for SextetModel.
*/
class SextetModel: public BSMModel {
public:
/**
* The default constructor.
*/
SextetModel() : g1L_(3,0.), g1R_(3,0.), g1pR_(3,0.), g1ppR_(3,0.),
g2_(3,0.), g2p_(3,0.), g3L_(3,0.),
enableScalarSingletY43_(false),enableScalarSingletY13_(false),
enableScalarSingletY23_(false),enableScalarTripletY13_(false),
enableVectorDoubletY16_(false),enableVectorDoubletY56_(false) {
useMe();
}
/**
* Access to the couplings
*/
//@{
/**
* The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,1,1/3}\f$
*/
const vector<double> & g1L() const {return g1L_;}
/**
* The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,1/3}\f$
*/
const vector<double> & g1R() const {return g1R_;}
/**
* The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,-2/3}\f$
*/
const vector<double> & g1pR() const {return g1pR_;}
/**
* The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,4/3}\f$
*/
const vector<double> & g1ppR() const {return g1ppR_;}
/**
* The coupling to \f$V^\mu_{6,2,-1/6}\f$
*/
const vector<double> & g2() const {return g2_;}
/**
* The coupling to \f$V^\mu_{6,2,5/6}\f$
*/
const vector<double> & g2p() const {return g2p_;}
/**
* Coupling to \f$\Phi_{6,3,1/3}\f$
*/
const vector<double> & g3L() const {return g3L_;}
//@}
/**
* Switches to decide which particles to include
*/
//@{
/**
* Scalar Singlet \f$Y = 4/3\f$
*/
bool ScalarSingletY43Enabled() const {return enableScalarSingletY43_;}
/**
* Scalar Singlet \f$Y = -1/3\f$
*/
bool ScalarSingletY13Enabled() const {return enableScalarSingletY13_;}
/**
* Scalar Singlet \f$Y = -2/3\f$
*/
bool ScalarSingletY23Enabled() const {return enableScalarSingletY23_;}
/**
* Scalar Triplet \f$Y = 1/3\f$
*/
bool ScalarTripletY13Enabled() const {return enableScalarTripletY13_;}
/**
* Vector Doublet \f$Y = -1/6\f$
*/
bool VectorDoubletY16Enabled() const {return enableVectorDoubletY16_;}
/**
* Vector Doublet \f$Y = 5/6\f$
*/
bool VectorDoubletY56Enabled() const {return enableVectorDoubletY56_;}
//@}
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();
/**
* Member to implement the command to enable particular diquarks
*/
string doEnable(string command);
//@}
private:
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
SextetModel & operator=(const SextetModel &);
private:
/**
* Pointers to the vertex objects
*/
//@{
/**
* Pointer to the object handling the strong coupling of a
* vector sextet to one gluon
*/
- AbstractVVVVertexPtr VVVVertex_;
+ AbstractVVVVertexPtr GVVVertex_;
+
+ /**
+ * Pointer to the object handling the EM coupling of a
+ * vector sextet to one photon
+ */
+ AbstractVVVVertexPtr PVVVertex_;
/**
* Pointer to the object handling the strong coupling of a
* vector sextet to two gluons
*/
AbstractVVVVVertexPtr VVVVVertex_;
/**
* Pointer to the object handling the strong coupling of a
* scalar sextet to one gluon
*/
- AbstractVSSVertexPtr VSSVertex_;
+ AbstractVSSVertexPtr GSSVertex_;
+
+ /**
+ * Pointer to the object handling the EM coupling of a
+ * scalar sextet to one photon
+ */
+ AbstractVSSVertexPtr PSSVertex_;
/**
* Pointer to the object handling the strong coupling of a
* scalar sextet to two gluons
*/
AbstractVVSSVertexPtr VVSSVertex_;
/**
* Pointer to the object handling the coupling of two quarks
* to a vector sextet
*/
AbstractFFVVertexPtr FFVVertex_;
/**
* Pointer to the object handling the coupling of two quarks
* to a scalar sextet
*/
AbstractFFSVertexPtr FFSVertex_;
//@}
/**
* Couplings
*/
//@{
/**
* The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,1,1/3}\f$
*/
vector<double> g1L_;
/**
* The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,1/3}\f$
*/
vector<double> g1R_;
/**
* The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,-2/3}\f$
*/
vector<double> g1pR_;
/**
* The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,4/3}\f$
*/
vector<double> g1ppR_;
/**
* The coupling to \f$V^\mu_{6,2,-1/6}\f$
*/
vector<double> g2_;
/**
* The coupling to \f$V^\mu_{6,2,5/6}\f$
*/
vector<double> g2p_;
/**
* Coupling to \f$\Phi_{6,3,1/3}\f$
*/
vector<double> g3L_;
//@}
/**
* Switches to decide which particles to include
*/
//@{
/**
* Scalar Singlet \f$Y = 4/3\f$
*/
bool enableScalarSingletY43_;
/**
* Scalar Singlet \f$Y = -1/3\f$
*/
bool enableScalarSingletY13_;
/**
* Scalar Singlet \f$Y = -2/3\f$
*/
bool enableScalarSingletY23_;
/**
* Scalar Triplet \f$Y = 1/3\f$
*/
bool enableScalarTripletY13_;
/**
* Vector Doublet \f$Y = -1/6\f$
*/
bool enableVectorDoubletY16_;
/**
* Vector Doublet \f$Y = 5/6\f$
*/
bool enableVectorDoubletY56_;
//@}
};
}
#endif /* HERWIG_SextetModel_H */
diff --git a/Models/Sextet/SextetGSSVertex.cc b/Models/Sextet/SextetPSSVertex.cc
copy from Models/Sextet/SextetGSSVertex.cc
copy to Models/Sextet/SextetPSSVertex.cc
--- a/Models/Sextet/SextetGSSVertex.cc
+++ b/Models/Sextet/SextetPSSVertex.cc
@@ -1,88 +1,88 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
-// functions of the SextetGSSVertex class.
+// functions of the SextetPSSVertex class.
//
-#include "SextetGSSVertex.h"
+#include "SextetPSSVertex.h"
#include "SextetModel.h"
#include "SextetParticles.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
-IBPtr SextetGSSVertex::clone() const {
+IBPtr SextetPSSVertex::clone() const {
return new_ptr(*this);
}
-IBPtr SextetGSSVertex::fullclone() const {
+IBPtr SextetPSSVertex::fullclone() const {
return new_ptr(*this);
}
// The following static variable is needed for the type
// description system in ThePEG.
-DescribeClass<SextetGSSVertex,Helicity::VSSVertex,false,true>
-describeSextetGSSVertex("Herwig::SextetGSSVertex", "HwSextetModel.so");
+DescribeClass<SextetPSSVertex,Helicity::VSSVertex,false,true>
+describeSextetPSSVertex("Herwig::SextetPSSVertex", "HwSextetModel.so");
-void SextetGSSVertex::Init() {
+void SextetPSSVertex::Init() {
- static ClassDocumentation<SextetGSSVertex> documentation
- ("The SextetGSSVertex class implements the coupling of the gluon"
+ static ClassDocumentation<SextetPSSVertex> documentation
+ ("The SextetPSSVertex class implements the coupling of the gluon"
" to scalar diquarks.");
}
-void SextetGSSVertex::doinit() {
- orderInGs (1);
- orderInGem(0);
+void SextetPSSVertex::doinit() {
+ orderInGs (0);
+ orderInGem(1);
SextetModelPtr model =
dynamic_ptr_cast<SextetModelPtr>(generator()->standardModel());
if(!model) throw Exception() << "Must be using the SextetModel"
- << " in SextetGSSVertex::doinit()"
+ << " in SextetPSSVertex::doinit()"
<< Exception::runerror;
// add the enabled particles
if(model->ScalarSingletY43Enabled())
- addToList(21,ParticleID::ScalarDQSingletY43,
+ addToList(22,ParticleID::ScalarDQSingletY43,
ParticleID::ScalarDQSingletY43bar);
if(model->ScalarSingletY13Enabled())
- addToList(21,ParticleID::ScalarDQSingletY13,
+ addToList(22,ParticleID::ScalarDQSingletY13,
ParticleID::ScalarDQSingletY13bar);
if(model->ScalarSingletY23Enabled())
- addToList(21,ParticleID::ScalarDQSingletY23,
+ addToList(22,ParticleID::ScalarDQSingletY23,
ParticleID::ScalarDQSingletY23bar);
if(model->ScalarTripletY13Enabled()) {
- addToList(21,ParticleID::ScalarDQTripletP,
+ addToList(22,ParticleID::ScalarDQTripletP,
ParticleID::ScalarDQTripletPbar);
- addToList(21,ParticleID::ScalarDQTriplet0,
+ addToList(22,ParticleID::ScalarDQTriplet0,
ParticleID::ScalarDQTriplet0bar);
- addToList(21,ParticleID::ScalarDQTripletM,
+ addToList(22,ParticleID::ScalarDQTripletM,
ParticleID::ScalarDQTripletMbar);
}
Helicity::VSSVertex::doinit();
}
-void SextetGSSVertex::setCoupling(Energy2 q2, tcPDPtr part1,
+void SextetPSSVertex::setCoupling(Energy2 q2, tcPDPtr part1,
tcPDPtr part2, tcPDPtr ) {
- assert(part1->id()==ParticleID::g);
- long idq = abs(part2->id());
- assert(idq == ParticleID::ScalarDQSingletY43 ||
- idq == ParticleID::ScalarDQSingletY13 ||
- idq == ParticleID::ScalarDQSingletY23 ||
- idq == ParticleID::ScalarDQTripletP ||
- idq == ParticleID::ScalarDQTriplet0 ||
- idq == ParticleID::ScalarDQTripletM);
+ assert(part1->id()==ParticleID::gamma);
+ tcPDPtr sca = part2->id()>0 ? part2 : tcPDPtr(part2->CC());
+ assert(sca->id() == ParticleID::ScalarDQSingletY43 ||
+ sca->id() == ParticleID::ScalarDQSingletY13 ||
+ sca->id() == ParticleID::ScalarDQSingletY23 ||
+ sca->id() == ParticleID::ScalarDQTripletP ||
+ sca->id() == ParticleID::ScalarDQTriplet0 ||
+ sca->id() == ParticleID::ScalarDQTripletM);
if(q2 != q2Last_ || coupLast_ == 0.) {
- coupLast_ = strongCoupling(q2);
+ coupLast_ = electroMagneticCoupling(q2);
q2Last_ = q2;
}
if(part2->id()>0)
- norm(-coupLast_);
+ norm(-sca->iCharge()/3.*coupLast_);
else
- norm( coupLast_);
+ norm( sca->iCharge()/3.*coupLast_);
}
diff --git a/Models/Sextet/SextetGSSVertex.h b/Models/Sextet/SextetPSSVertex.h
copy from Models/Sextet/SextetGSSVertex.h
copy to Models/Sextet/SextetPSSVertex.h
--- a/Models/Sextet/SextetGSSVertex.h
+++ b/Models/Sextet/SextetPSSVertex.h
@@ -1,102 +1,102 @@
// -*- C++ -*-
-#ifndef HERWIG_SextetGSSVertex_H
-#define HERWIG_SextetGSSVertex_H
+#ifndef HERWIG_SextetPSSVertex_H
+#define HERWIG_SextetPSSVertex_H
//
-// This is the declaration of the SextetGSSVertex class.
+// This is the declaration of the SextetPSSVertex class.
//
#include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h"
namespace Herwig {
using namespace ThePEG;
/**
- * Here is the documentation of the SextetGSSVertex class.
+ * Here is the documentation of the SextetPSSVertex class.
*
- * @see \ref SextetGSSVertexInterfaces "The interfaces"
- * defined for SextetGSSVertex.
+ * @see \ref SextetPSSVertexInterfaces "The interfaces"
+ * defined for SextetPSSVertex.
*/
-class SextetGSSVertex: public Helicity::VSSVertex {
+class SextetPSSVertex: public Helicity::VSSVertex {
public:
/**
* The default constructor.
*/
- SextetGSSVertex() {}
+ SextetPSSVertex() {}
/**
* 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:
/**
* 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.
*/
- SextetGSSVertex & operator=(const SextetGSSVertex &);
+ SextetPSSVertex & operator=(const SextetPSSVertex &);
private:
/**
* Store the value of the coupling when last evaluated
*/
Complex coupLast_;
/**
* Store the scale at which coupling was last evaluated
*/
Energy2 q2Last_;
};
}
-#endif /* HERWIG_SextetGSSVertex_H */
+#endif /* HERWIG_SextetPSSVertex_H */
diff --git a/Models/Sextet/SextetGVVVertex.cc b/Models/Sextet/SextetPVVVertex.cc
copy from Models/Sextet/SextetGVVVertex.cc
copy to Models/Sextet/SextetPVVVertex.cc
--- a/Models/Sextet/SextetGVVVertex.cc
+++ b/Models/Sextet/SextetPVVVertex.cc
@@ -1,75 +1,80 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
-// functions of the SextetGVVVertex class.
+// functions of the SextetPVVVertex class.
//
#include "SextetModel.h"
-#include "SextetGVVVertex.h"
+#include "SextetPVVVertex.h"
#include "SextetParticles.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
using namespace Herwig;
-IBPtr SextetGVVVertex::clone() const {
+IBPtr SextetPVVVertex::clone() const {
return new_ptr(*this);
}
-IBPtr SextetGVVVertex::fullclone() const {
+IBPtr SextetPVVVertex::fullclone() const {
return new_ptr(*this);
}
// The following static variable is needed for the type
// description system in ThePEG.
-DescribeNoPIOClass<SextetGVVVertex,Helicity::VVVVertex>
-describeSextetGVVVertex("Herwig::SextetGVVVertex", "HwSextetModel.so");
+DescribeNoPIOClass<SextetPVVVertex,Helicity::VVVVertex>
+describeSextetPVVVertex("Herwig::SextetPVVVertex", "HwSextetModel.so");
-void SextetGVVVertex::Init() {
+void SextetPVVVertex::Init() {
- static ClassDocumentation<SextetGVVVertex> documentation
- ("The SextetGVVVertex class implements the coupling of the gluon to two"
+ static ClassDocumentation<SextetPVVVertex> documentation
+ ("The SextetPVVVertex class implements the coupling of the gluon to two"
" vector sextet particles");
}
-void SextetGVVVertex::doinit() {
+void SextetPVVVertex::doinit() {
orderInGs(1);
orderInGem(0);
SextetModelPtr model =
dynamic_ptr_cast<SextetModelPtr>(generator()->standardModel());
if(!model) throw Exception() << "Must be using the SextetModel"
- << " in SextetGVVVertex::doinit()"
+ << " in SextetPVVVertex::doinit()"
<< Exception::runerror;
if(model->VectorDoubletY16Enabled()) {
- addToList(21,ParticleID::VectorDQY16P,
+ addToList(22,ParticleID::VectorDQY16P,
ParticleID::VectorDQY16Pbar);
- addToList(21,ParticleID::VectorDQY16M,
+ addToList(22,ParticleID::VectorDQY16M,
ParticleID::VectorDQY16Mbar);
}
if(model->VectorDoubletY56Enabled()) {
- addToList(21,ParticleID::VectorDQY56P,
+ addToList(22,ParticleID::VectorDQY56P,
ParticleID::VectorDQY56Pbar);
- addToList(21,ParticleID::VectorDQY56M,
+ addToList(22,ParticleID::VectorDQY56M,
ParticleID::VectorDQY56Mbar);
}
VVVVertex::doinit();
}
-void SextetGVVVertex::setCoupling(Energy2 q2, tcPDPtr p1, tcPDPtr p2,
+void SextetPVVVertex::setCoupling(Energy2 q2, tcPDPtr p1, tcPDPtr p2,
tcPDPtr p3) {
if(q2 != q2Last_ || coupLast_ == 0.) {
q2Last_ = q2;
- coupLast_ = strongCoupling(q2);
+ coupLast_ = electroMagneticCoupling(q2);
}
- if((p1->id()==ParticleID::g&&p2->id()>0&&p3->id()<0)||
- (p2->id()==ParticleID::g&&p3->id()>0&&p1->id()<0)||
- (p3->id()==ParticleID::g&&p1->id()>0&&p2->id()<0))
- norm(-coupLast_);
+ if(p1->id()==ParticleID::gamma) {
+ norm(p3->iCharge()/3.*coupLast_);
+ }
+ else if(p2->id()==ParticleID::gamma) {
+ norm(p1->iCharge()/3.*coupLast_);
+ }
+ else if(p3->id()==ParticleID::gamma) {
+ norm(p2->iCharge()/3.*coupLast_);
+ }
else
- norm( coupLast_);
+ assert(false);
}
diff --git a/Models/Sextet/SextetGVVVertex.h b/Models/Sextet/SextetPVVVertex.h
copy from Models/Sextet/SextetGVVVertex.h
copy to Models/Sextet/SextetPVVVertex.h
--- a/Models/Sextet/SextetGVVVertex.h
+++ b/Models/Sextet/SextetPVVVertex.h
@@ -1,100 +1,100 @@
// -*- C++ -*-
-#ifndef THEPEG_SextetGVVVertex_H
-#define THEPEG_SextetGVVVertex_H
+#ifndef THEPEG_SextetPVVVertex_H
+#define THEPEG_SextetPVVVertex_H
//
-// This is the declaration of the SextetGVVVertex class.
+// This is the declaration of the SextetPVVVertex class.
//
#include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h"
namespace Herwig {
using namespace ThePEG;
/**
- * Here is the documentation of the SextetGVVVertex class.
+ * Here is the documentation of the SextetPVVVertex class.
*
- * @see \ref SextetGVVVertexInterfaces "The interfaces"
- * defined for SextetGVVVertex.
+ * @see \ref SextetPVVVertexInterfaces "The interfaces"
+ * defined for SextetPVVVertex.
*/
- class SextetGVVVertex: public Helicity::VVVVertex {
+ class SextetPVVVertex: public Helicity::VVVVertex {
public:
/**
* The default constructor.
*/
- SextetGVVVertex() {}
+ SextetPVVVertex() {}
/** Calculate the coupling
*@param q2 The scale at which to evaluate the coupling
*@param part1 The first interacting particle
*@param part2 The second interacting particle
*@param part3 The third interacting particle
*/
virtual void setCoupling(Energy2 q2,tcPDPtr part1,
tcPDPtr part2,tcPDPtr part3);
public:
/**
* 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.
*/
- SextetGVVVertex & operator=(const SextetGVVVertex &);
+ SextetPVVVertex & operator=(const SextetPVVVertex &);
private:
/**
* Store the value of the coupling when last evaluated
*/
Complex coupLast_;
/**
* Store the scale at which coupling was last evaluated
*/
Energy2 q2Last_;
};
}
-#endif /* THEPEG_SextetGVVVertex_H */
+#endif /* THEPEG_SextetPVVVertex_H */
diff --git a/src/Sextet.model b/src/Sextet.model
--- a/src/Sextet.model
+++ b/src/Sextet.model
@@ -1,213 +1,217 @@
# -*- ThePEG-repository -*-
##################################################
# Common setup for Sextet models
#
# See LHC-Sextet.in for example usage
#
# This file does not contain anything that
# users need to touch. User settings are in
# LHC-Sextet.in
###################################################x
library HwSextetModel.so
###################################################
#
# Particle Data objects for the diquarks
#
###################################################
cd /Herwig/Particles
# Scalar DQ Singlet Y=4/3
create /ThePEG/ParticleData DQPhi_1''
setup DQPhi_1'' 6000221 DQPhi_1'' 500.0 0.0 0.0 0.0 4 6 1 0
create /ThePEG/ParticleData DQPhi_1''bar
setup DQPhi_1''bar -6000221 DQPhi_1''bar 500.0 0.0 0.0 0.0 -4 -6 1 0
makeanti DQPhi_1''bar DQPhi_1''
# Scalar DQ Singlet Y=1/3
create /ThePEG/ParticleData DQPhi_1
setup DQPhi_1 6000211 DQPhi_1 500.0 0.0 0.0 0.0 1 6 1 0
create /ThePEG/ParticleData DQPhi_1bar
setup DQPhi_1bar -6000211 DQPhi_1bar 500.0 0.0 0.0 0.0 -1 -6 1 0
makeanti DQPhi_1bar DQPhi_1
# Scalar DQ Singlet Y=-2/3
create /ThePEG/ParticleData DQPhi_1'
setup DQPhi_1' 6000111 DQPhi_1' 500.0 0.0 0.0 0.0 -2 6 1 0
create /ThePEG/ParticleData DQPhi_1'bar
setup DQPhi_1'bar -6000111 DQPhi_1'bar 500.0 0.0 0.0 0.0 2 -6 1 0
makeanti DQPhi_1'bar DQPhi_1'
# Scalar DQ Triplet t_3=1 Y=1/3
create /ThePEG/ParticleData DQPhi_3+
setup DQPhi_3+ 6001221 DQPhi_3+ 500.0 0.0 0.0 0.0 4 6 1 0
create /ThePEG/ParticleData DQPhi_3+bar
setup DQPhi_3+bar -6001221 DQPhi_3+bar 500.0 0.0 0.0 0.0 -4 -6 1 0
makeanti DQPhi_3+bar DQPhi_3+
# Scalar DQ Triplet t_3=0 Y=1/3
create /ThePEG/ParticleData DQPhi_30
setup DQPhi_30 6001211 DQPhi_30 500.0 0.0 0.0 0.0 1 6 1 0
create /ThePEG/ParticleData DQPhi_30bar
setup DQPhi_30bar -6001211 DQPhi_30bar 500.0 0.0 0.0 0.0 -1 -6 1 0
makeanti DQPhi_30bar DQPhi_30
# Scalar DQ Triplet t_3=-1 Y=1/3
create /ThePEG/ParticleData DQPhi_3-
setup DQPhi_3- 6001111 DQPhi_3- 500.0 0.0 0.0 0.0 -2 6 1 0
create /ThePEG/ParticleData DQPhi_3-bar
setup DQPhi_3-bar -6001111 DQPhi_3-bar 500.0 0.0 0.0 0.0 2 -6 1 0
makeanti DQPhi_3-bar DQPhi_3-
# Vector DQ Doublet t_3=1/2 Y=-1/6
create /ThePEG/ParticleData DQV_1+
setup DQV_1+ 6000123 DQV_1+ 500.0 0.0 0.0 0.0 1 6 3 0
create /ThePEG/ParticleData DQV_1+bar
setup DQV_1+bar -6000123 DQV_1+bar 500.0 0.0 0.0 0.0 -1 -6 3 0
makeanti DQV_1+bar DQV_1+
# Vector DQ Doublet t_3=-1/2 Y=-1/6
create /ThePEG/ParticleData DQV_1-
setup DQV_1- 6000113 DQV_1- 500.0 0.0 0.0 0.0 -2 6 3 0
create /ThePEG/ParticleData DQV_1-bar
setup DQV_1-bar -6000113 DQV_1-bar 500.0 0.0 0.0 0.0 2 -6 3 0
makeanti DQV_1-bar DQV_1-
# Vector DQ Doublet t_3=1/2 Y=-5/6
create /ThePEG/ParticleData DQV_2+
setup DQV_2+ 6000223 DQV_2+ 500.0 0.0 0.0 0.0 4 6 3 0
create /ThePEG/ParticleData DQV_2+bar
setup DQV_2+bar -6000223 DQV_2+bar 500.0 0.0 0.0 0.0 -4 -6 3 0
makeanti DQV_2+bar DQV_2+
# Vector DQ Doublet t_3=-1/2 Y=-5/6
create /ThePEG/ParticleData DQV_2-
setup DQV_2- 6000213 DQV_2- 500.0 0.0 0.0 0.0 1 6 3 0
create /ThePEG/ParticleData DQV_2-bar
setup DQV_2-bar -6000213 DQV_2-bar 500.0 0.0 0.0 0.0 -1 -6 3 0
makeanti DQV_2-bar DQV_2-
###################################################
#
# Main directory and model object
#
###################################################
mkdir /Herwig/NewPhysics/Sextet
cd /Herwig/NewPhysics/Sextet
create Herwig::SextetModel Model
# SM couplings
set Model:QCD/RunningAlphaS /Herwig/Couplings/NLOAlphaS
set Model:EW/RunningAlphaEM /Herwig/Couplings/AlphaEM
set Model:EW/CKM /Herwig/CKM
set Model:RunningMass /Herwig/RunningMass
###################################################
#
# Vertices
#
###################################################
# create Sextet model vertices
mkdir /Herwig/Vertices/Sextet
cd /Herwig/Vertices/Sextet
library HwSextetModel.so
create Herwig::SextetGSSVertex Sextet_GSSVertex
+create Herwig::SextetPSSVertex Sextet_PSSVertex
create Herwig::SextetGGSSVertex Sextet_GGSSVertex
create Herwig::SextetGVVVertex Sextet_GVVVertex
+create Herwig::SextetPVVVertex Sextet_PVVVertex
create Herwig::SextetGGVVVertex Sextet_GGVVVertex
create Herwig::SextetFFSVertex Sextet_FFSVertex
create Herwig::SextetFFVVertex Sextet_FFVVertex
cd /Herwig/NewPhysics/Sextet
# 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/HPP /Herwig/Vertices/HPPVertex
# Sextet model vertices
set Model:Vertex/SDQSDQG /Herwig/Vertices/Sextet/Sextet_GSSVertex
+set Model:Vertex/SDQSDQP /Herwig/Vertices/Sextet/Sextet_PSSVertex
set Model:Vertex/SDQSDQGG /Herwig/Vertices/Sextet/Sextet_GGSSVertex
set Model:Vertex/VDQVDQG /Herwig/Vertices/Sextet/Sextet_GVVVertex
+set Model:Vertex/VDQVDQP /Herwig/Vertices/Sextet/Sextet_PVVVertex
set Model:Vertex/VDQVDQGG /Herwig/Vertices/Sextet/Sextet_GGVVVertex
set Model:Vertex/FFSDQ /Herwig/Vertices/Sextet/Sextet_FFSVertex
set Model:Vertex/FFVDQ /Herwig/Vertices/Sextet/Sextet_FFVVertex
###################################################
#
# Shower stuff for coloured diquarks
#
###################################################
cd /Herwig/Shower
insert ShowerHandler:DecayInShower 0 6000221
insert ShowerHandler:DecayInShower 0 6000211
insert ShowerHandler:DecayInShower 0 6000111
insert ShowerHandler:DecayInShower 0 6001221
insert ShowerHandler:DecayInShower 0 6001211
insert ShowerHandler:DecayInShower 0 6001111
insert ShowerHandler:DecayInShower 0 6000123
insert ShowerHandler:DecayInShower 0 6000113
insert ShowerHandler:DecayInShower 0 6000223
insert ShowerHandler:DecayInShower 0 6000213
create Herwig::ZeroZeroOneSplitFn SDiquarktoSDiquarkSplitFn
set SDiquarktoSDiquarkSplitFn:InteractionType QCD
set SDiquarktoSDiquarkSplitFn:ColourStructure SextetSextetOctet
create Herwig::OneOneOneSplitFn VDiquarktoVDiquarkSplitFn
set VDiquarktoVDiquarkSplitFn:InteractionType QCD
set VDiquarktoVDiquarkSplitFn:ColourStructure SextetSextetOctet
cp SudakovCommon SDiquarktoSDiquarkSudakov
set SDiquarktoSDiquarkSudakov:SplittingFunction SDiquarktoSDiquarkSplitFn
cp SudakovCommon VDiquarktoVDiquarkSudakov
set VDiquarktoVDiquarkSudakov:SplittingFunction VDiquarktoVDiquarkSplitFn
do SplittingGenerator:AddFinalSplitting DQPhi_1''->DQPhi_1'',g; SDiquarktoSDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQPhi_1->DQPhi_1,g; SDiquarktoSDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQPhi_1'->DQPhi_1',g; SDiquarktoSDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQPhi_3+->DQPhi_3+,g; SDiquarktoSDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQPhi_30->DQPhi_30,g; SDiquarktoSDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQPhi_3-->DQPhi_3-,g; SDiquarktoSDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQV_1+->DQV_1+,g; VDiquarktoVDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQV_1-->DQV_1-,g; VDiquarktoVDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQV_2+->DQV_2+,g; VDiquarktoVDiquarkSudakov
do SplittingGenerator:AddFinalSplitting DQV_2-->DQV_2-,g; VDiquarktoVDiquarkSudakov
###################################################
#
# Set up spin correlation Decayers
#
###################################################
cd /Herwig/NewPhysics
set TwoBodyDC:CreateDecayModes Yes
set ThreeBodyDC:CreateDecayModes No
# which particles get the off-shell treatment
set NewModel:WhichOffshell All
# particles for which decays are included
insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_1''
insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_1
insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_1'
insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_3+
insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_30
insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_3-
insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_1+
insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_1-
insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_2+
insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_2-
###################################################
#
# Exclude some things from the HP
#
###################################################
insert HPConstructor:ExcludedExternal 0 /Herwig/Particles/g
###################################################
# Set up the model framework
###################################################
set Sextet/Model:ModelGenerator NewModel
###################################################
#
# Choose Sextet over SM
#
###################################################
cd /Herwig/Generators
set EventGenerator:StandardModelParameters /Herwig/NewPhysics/Sextet/Model

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 8:50 PM (1 d, 2 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3800050
Default Alt Text
(40 KB)

Event Timeline