diff --git a/Helicity/Vertex/AbstractFFFFVertex.cc b/Helicity/Vertex/AbstractFFFFVertex.cc new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFFFVertex.cc @@ -0,0 +1,27 @@ +// -*- C++ -*- +// +// This is the implementation of the non-inlined, non-templated member +// functions of the AbstractFFFFVertex class. +// + +#include "AbstractFFFFVertex.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 Helicity; + +// The following static variable is needed for the type +// description system in ThePEG. +DescribeAbstractNoPIOClass + describeHelicityAbstractFFFFVertex("ThePEG::AbstractFFFFVertex", "libThePEG.so"); + +void AbstractFFFFVertex::Init() { + + static ClassDocumentation documentation + ("There is no documentation for the AbstractFFFFVertex class"); + +} + diff --git a/Helicity/Vertex/AbstractFFVVVertex.fh b/Helicity/Vertex/AbstractFFFFVertex.fh copy from Helicity/Vertex/AbstractFFVVVertex.fh copy to Helicity/Vertex/AbstractFFFFVertex.fh --- a/Helicity/Vertex/AbstractFFVVVertex.fh +++ b/Helicity/Vertex/AbstractFFFFVertex.fh @@ -1,32 +1,32 @@ // -*- C++ -*- // -// This is the forward declaration of the AbstractFFVVVertex class. +// This is the forward declaration of the AbstractFFFFVertex class. // -#ifndef HELICITY_AbstractFFVVVertex_FH -#define HELICITY_AbstractFFVVVertex_FH +#ifndef HELICITY_AbstractFFFFVertex_FH +#define HELICITY_AbstractFFFFVertex_FH #include "ThePEG/Config/Pointers.h" namespace ThePEG { namespace Helicity { -class AbstractFFVVVertex; +class AbstractFFFFVertex; namespace VertexType { typedef unsigned T; /** * Enum for this Lorentz structure */ - const T FFVV = 2233; + const T FFFF = 2222; } } } namespace ThePEG { -ThePEG_DECLARE_POINTERS(Helicity::AbstractFFVVVertex,AbstractFFVVVertexPtr); +ThePEG_DECLARE_POINTERS(Helicity::AbstractFFFFVertex,AbstractFFFFVertexPtr); } #endif diff --git a/Helicity/Vertex/AbstractFFFFVertex.h b/Helicity/Vertex/AbstractFFFFVertex.h new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFFFVertex.h @@ -0,0 +1,73 @@ +// -*- C++ -*- +#ifndef Helicity_AbstractFFFFVertex_H +#define Helicity_AbstractFFFFVertex_H +// +// This is the declaration of the AbstractFFFFVertex class. +// + +#include "VertexBase.h" +#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" +#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" +#include "AbstractFFFFVertex.fh" + +namespace ThePEG { +namespace Helicity { + +/** + * The AbstractFFFFVertex class provides a base class for all 4-fermion vertices + * in ThePEG + */ +class AbstractFFFFVertex: public VertexBase { + +public: + + /** + * The default constructor. + */ + AbstractFFFFVertex() : VertexBase(VertexType::FFFF) {} + + /** + * Members to calculate the helicity amplitude expressions for vertices + * and off-shell particles. + */ + //@{ + /** + * Evalulate the vertex. + * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. + * @param sp1 The wavefunction for the first ferimon. + * @param sp2 The wavefunction for the second ferimon. + * @param sbar1 The wavefunction for the first antifermion. + * @param sbar2 The wavefunction for the second antifermion. + */ + virtual Complex evaluate(Energy2 q2, + const SpinorWaveFunction & sp1, + const SpinorWaveFunction & sp2, + const SpinorBarWaveFunction & sbar1, + const SpinorBarWaveFunction & sbar2) = 0; + //@} + +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(); + +private: + + /** + * The assignment operator is private and must never be called. + * In fact, it should not even be implemented. + */ + AbstractFFFFVertex & operator=(const AbstractFFFFVertex &); + +}; + +} +} + + +#endif /* Helicity_AbstractFFFFVertex_H */ diff --git a/Helicity/Vertex/AbstractFFVVVertex.h b/Helicity/Vertex/AbstractFFVVVertex.h --- a/Helicity/Vertex/AbstractFFVVVertex.h +++ b/Helicity/Vertex/AbstractFFVVVertex.h @@ -1,73 +1,72 @@ // -*- C++ -*- #ifndef HELICITY_AbstractFFVVVertex_H #define HELICITY_AbstractFFVVVertex_H // // This is the declaration of the AbstractFFVVVertex class. // #include "VertexBase.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "AbstractFFVVVertex.fh" namespace ThePEG { namespace Helicity { /** * The AbstractFFVVVertex class provides a base class for all - * fermion-fermion-vector vertices in ThePEG. + * fermion-fermion-vector-vector vertices in ThePEG. */ class AbstractFFVVVertex: public VertexBase { public: - /** * Default constructor */ AbstractFFVVVertex() : VertexBase(VertexType::FFVV) {} /** * Members to calculate the helicity amplitude expressions for vertices * and off-shell particles. */ //@{ /** * Evalulate the vertex. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param sp1 The wavefunction for the ferimon. * @param sbar2 The wavefunction for the antifermion. * @param vec3 The wavefunction for the vector. * @param vec4 The wavefunction for the vector. */ virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1, const SpinorBarWaveFunction & sbar2, const VectorWaveFunction & vec3, const VectorWaveFunction & vec4) = 0; //@} 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(); private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ AbstractFFVVVertex & operator=(const AbstractFFVVVertex &); }; } } #endif /* HELICITY_AbstractFFVVVertex_H */ diff --git a/Helicity/Vertex/Makefile.am b/Helicity/Vertex/Makefile.am --- a/Helicity/Vertex/Makefile.am +++ b/Helicity/Vertex/Makefile.am @@ -1,28 +1,29 @@ SUBDIRS = Scalar Vector Tensor noinst_LTLIBRARIES = libThePEGVertex.la libThePEGVertex_la_SOURCES = \ VertexBase.cc VertexBase.h VertexBase.fh \ AbstractFFSVertex.h AbstractFFSVertex.fh AbstractFFSVertex.cc \ AbstractFFVVertex.h AbstractFFVVertex.fh AbstractFFVVertex.cc \ AbstractVVVVertex.h AbstractVVVVertex.fh AbstractVVVVertex.cc \ AbstractSSSVertex.h AbstractSSSVertex.fh AbstractSSSVertex.cc \ AbstractSSSSVertex.h AbstractSSSSVertex.fh AbstractSSSSVertex.cc \ AbstractVSSVertex.h AbstractVSSVertex.fh AbstractVSSVertex.cc \ AbstractFFTVertex.h AbstractFFTVertex.fh AbstractFFTVertex.cc \ AbstractVVTVertex.h AbstractVVTVertex.fh AbstractVVTVertex.cc \ AbstractVVSVertex.h AbstractVVSVertex.fh AbstractVVSVertex.cc \ AbstractSSTVertex.h AbstractSSTVertex.fh AbstractSSTVertex.cc \ AbstractVVSSVertex.h AbstractVVSSVertex.fh AbstractVVSSVertex.cc \ AbstractVVVSVertex.h AbstractVVVSVertex.fh AbstractVVVSVertex.cc \ AbstractFFVTVertex.h AbstractFFVTVertex.fh AbstractFFVTVertex.cc \ AbstractVVVTVertex.h AbstractVVVTVertex.fh AbstractVVVTVertex.cc \ AbstractVVVVVertex.h AbstractVVVVVertex.fh AbstractVVVVVertex.cc \ AbstractRFSVertex.h AbstractRFSVertex.fh AbstractRFSVertex.cc \ AbstractRFVVertex.h AbstractRFVVertex.fh AbstractRFVVertex.cc \ AbstractFFVVVertex.h AbstractFFVVVertex.fh AbstractFFVVVertex.cc \ AbstractFFVSVertex.h AbstractFFVSVertex.fh AbstractFFVSVertex.cc\ -AbstractFFSSVertex.h AbstractFFSSVertex.fh AbstractFFSSVertex.cc +AbstractFFSSVertex.h AbstractFFSSVertex.fh AbstractFFSSVertex.cc\ +AbstractFFFFVertex.h AbstractFFFFVertex.fh AbstractFFFFVertex.cc libThePEGVertex_la_LIBADD = Scalar/libThePEGSVertex.la \ Vector/libThePEGVVertex.la \ Tensor/libThePEGTVertex.la