diff --git a/Helicity/Vertex/AbstractFFSSVertex.cc b/Helicity/Vertex/AbstractFFSSVertex.cc new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFSSVertex.cc @@ -0,0 +1,29 @@ +// -*- C++ -*- +// +// This is the implementation of the non-inlined, non-templated member +// functions of the Helicity:AbstractFFSSVertex class. +// + +#include "AbstractFFSSVertex.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 ThePEG; + +// The following static variable is needed for the type +// description system in ThePEG. +DescribeAbstractNoPIOClass +describeThePEGAbstractFFSSVertex("ThePEG::AbstractFFSSVertex", + "libThePEG.so"); + +void AbstractFFSSVertex::Init() { + + static ClassDocumentation documentation + ("The AbstractFFSSVertex class implements the interaction between a" + " fermikon-antifermion and two scalars."); + +} + diff --git a/Helicity/Vertex/AbstractFFSSVertex.fh b/Helicity/Vertex/AbstractFFSSVertex.fh new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFSSVertex.fh @@ -0,0 +1,32 @@ +// -*- C++ -*- +// +// This is the forward declaration of the AbstractFFSS##Vertex class. +// +#ifndef ThePEG_AbstractFFSSVertex_FH +#define ThePEG_AbstractFFSSVertex_FH + +#include "ThePEG/Config/Pointers.h" + +namespace ThePEG { +namespace Helicity { + +class AbstractFFSSVertex; + +namespace VertexType { + typedef unsigned T; + /** + * Enum for this Lorentz structure + */ + const T FFSS = 2211; +} + +} +} + +namespace ThePEG { + +ThePEG_DECLARE_POINTERS(Helicity::AbstractFFSSVertex,AbstractFFSSVertexPtr); + +} + +#endif diff --git a/Helicity/Vertex/AbstractFFSSVertex.h b/Helicity/Vertex/AbstractFFSSVertex.h new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFSSVertex.h @@ -0,0 +1,73 @@ +// -*- C++ -*- +#ifndef ThePEG_AbstractFFSSVertex_H +#define ThePEG_AbstractFFSSVertex_H +// +// This is the declaration of the AbstractFFSSVertex class. +// + +#include "VertexBase.h" +#include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" +#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" +#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" +#include "AbstractFFSSVertex.fh" + +namespace ThePEG { +namespace Helicity { + +/** + * Here is the documentation of the AbstractFFSSVertex class. + */ +class AbstractFFSSVertex: public VertexBase { + +public: + + /** @name Standard constructors and destructors. */ + //@{ + /** + * The default constructor. + */ + AbstractFFSSVertex(): VertexBase(VertexType::FFSS) {} + + /** + * 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 sca3 The wavefunction for the scalar. + * @param sca4 The wavefunction for the scalar. + */ + virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1, + const SpinorBarWaveFunction & sbar2, + const ScalarWaveFunction & sca3, + const ScalarWaveFunction & sca4) = 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. + */ + AbstractFFSSVertex & operator=(const AbstractFFSSVertex &); + +}; + +} +} + +#endif /* ThePEG_AbstractFFSSVertex_H */ diff --git a/Helicity/Vertex/AbstractFFVSVertex.cc b/Helicity/Vertex/AbstractFFVSVertex.cc new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFVSVertex.cc @@ -0,0 +1,26 @@ +// -*- C++ -*- +// +// This is the implementation of the non-inlined, non-templated member +// functions of the AbstractFFVSVertex class. +// + +#include "AbstractFFVSVertex.h" +#include "ThePEG/Interface/ClassDocumentation.h" +#include "ThePEG/Utilities/DescribeClass.h" + +using namespace ThePEG; + + +// The following static variable is needed for the type +// description system in ThePEG. +DescribeAbstractNoPIOClass +describeThePEGAbstractFFVSVertex("ThePEG::AbstractFFVSVertex", "libThePEG.so"); + +void AbstractFFVSVertex::Init() { + + static ClassDocumentation documentation + ("The AbstractFFVSVertex class provides a base class for all" + " fermion-fermionvector-scalar interactions."); + +} + diff --git a/Helicity/Vertex/AbstractFFVSVertex.fh b/Helicity/Vertex/AbstractFFVSVertex.fh new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFVSVertex.fh @@ -0,0 +1,32 @@ +// -*- C++ -*- +// +// This is the forward declaration of the AbstractFFVS##Vertex class. +// +#ifndef ThePEG_AbstractFFVSVertex_FH +#define ThePEG_AbstractFFVSVertex_FH + +#include "ThePEG/Config/Pointers.h" + +namespace ThePEG { +namespace Helicity { + +class AbstractFFVSVertex; + +namespace VertexType { + typedef unsigned T; + /** + * Enum for this Lorentz structure + */ + const T FFVS = 2231; +} + +} +} + +namespace ThePEG { + +ThePEG_DECLARE_POINTERS(Helicity::AbstractFFVSVertex,AbstractFFVSVertexPtr); + +} + +#endif diff --git a/Helicity/Vertex/AbstractFFVSVertex.h b/Helicity/Vertex/AbstractFFVSVertex.h new file mode 100644 --- /dev/null +++ b/Helicity/Vertex/AbstractFFVSVertex.h @@ -0,0 +1,74 @@ +// -*- C++ -*- +#ifndef ThePEG_AbstractFFVSVertex_H +#define ThePEG_AbstractFFVSVertex_H +// +// This is the declaration of the AbstractFFVSVertex class. +// + +#include "VertexBase.h" +#include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" +#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" +#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" +#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" +#include "AbstractFFVSVertex.fh" + +namespace ThePEG { +namespace Helicity { + +/** + * Here is the documentation of the AbstractFFVSVertex class. + */ +class AbstractFFVSVertex: public VertexBase { + +public: + + /** @name Standard constructors and destructors. */ + //@{ + /** + * The default constructor. + */ + AbstractFFVSVertex() : VertexBase(VertexType::FFVS) {} + + /** + * 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 sca4 The wavefunction for the scalar. + */ + virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1, + const SpinorBarWaveFunction & sbar2, + const VectorWaveFunction & vec3, + const ScalarWaveFunction & sca4) = 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. + */ + AbstractFFVSVertex & operator=(const AbstractFFVSVertex &); + +}; + +} +} + +#endif /* ThePEG_AbstractFFVSVertex_H */ diff --git a/Helicity/Vertex/AbstractFFVVVertex.h b/Helicity/Vertex/AbstractFFVVVertex.h --- a/Helicity/Vertex/AbstractFFVVVertex.h +++ b/Helicity/Vertex/AbstractFFVVVertex.h @@ -1,77 +1,73 @@ // -*- 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. */ 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 &); }; } } - -namespace ThePEG { - -} #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,26 +1,28 @@ 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 +AbstractFFVVVertex.h AbstractFFVVVertex.fh AbstractFFVVVertex.cc \ +AbstractFFVSVertex.h AbstractFFVSVertex.fh AbstractFFVSVertex.cc\ +AbstractFFSSVertex.h AbstractFFSSVertex.fh AbstractFFSSVertex.cc libThePEGVertex_la_LIBADD = Scalar/libThePEGSVertex.la \ Vector/libThePEGVVertex.la \ Tensor/libThePEGTVertex.la