diff --git a/Helicity/Vertex/AbstractFFVVertex.cc b/Helicity/Vertex/AbstractFFVVVertex.cc copy from Helicity/Vertex/AbstractFFVVertex.cc copy to Helicity/Vertex/AbstractFFVVVertex.cc --- a/Helicity/Vertex/AbstractFFVVertex.cc +++ b/Helicity/Vertex/AbstractFFVVVertex.cc @@ -1,47 +1,25 @@ // -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member -// functions of the AbstractFFVVertex class. +// functions of the AbstractFFVVVertex class. // -#include "AbstractFFVVertex.h" +#include "AbstractFFVVVertex.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Helicity; // The following static variable is needed for the type // description system in ThePEG. -DescribeAbstractNoPIOClass -describeThePEGAbstractFFVVertex("ThePEG::AbstractFFVVertex", "libThePEG.so"); +DescribeAbstractNoPIOClass +describeThePEGAbstractFFVVVertex("ThePEG::AbstractFFVVVertex", "libThePEG.so"); -void AbstractFFVVertex::Init() { +void AbstractFFVVVertex::Init() { - static ClassDocumentation documentation - ("The AbstractFFVVertex class provides a base class for all" - " fermion-fermion-vector interactions"); + static ClassDocumentation documentation + ("The AbstractFFVVVertex class provides a base class for all" + " fermion-fermion-vector-vector interactions"); } -SpinorWaveFunction -AbstractFFVVertex::evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, - const SpinorWaveFunction & sp1, - const VectorWaveFunction & vec3, - unsigned int , unsigned int , - double , double , double , - bool , - SmallAngleDirection , - Energy mass, Energy width) { - return evaluate(q2,iopt,out,sp1,vec3,mass,width); -} -SpinorBarWaveFunction -AbstractFFVVertex::evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, - const SpinorBarWaveFunction & sbar2, - const VectorWaveFunction & vec3, - unsigned int , unsigned int , - double , double , double , - bool , - SmallAngleDirection , - Energy mass, Energy width) { - return evaluate(q2,iopt,out,sbar2,vec3,mass,width); -} diff --git a/Helicity/Vertex/AbstractFFVVertex.fh b/Helicity/Vertex/AbstractFFVVVertex.fh copy from Helicity/Vertex/AbstractFFVVertex.fh copy to Helicity/Vertex/AbstractFFVVVertex.fh --- a/Helicity/Vertex/AbstractFFVVertex.fh +++ b/Helicity/Vertex/AbstractFFVVVertex.fh @@ -1,32 +1,32 @@ // -*- C++ -*- // -// This is the forward declaration of the AbstractFFVVertex class. +// This is the forward declaration of the AbstractFFVVVertex class. // -#ifndef HELICITY_AbstractFFVVertex_FH -#define HELICITY_AbstractFFVVertex_FH +#ifndef HELICITY_AbstractFFVVVertex_FH +#define HELICITY_AbstractFFVVVertex_FH #include "ThePEG/Config/Pointers.h" namespace ThePEG { namespace Helicity { -class AbstractFFVVertex; +class AbstractFFVVVertex; namespace VertexType { typedef unsigned T; /** * Enum for this Lorentz structure */ - const T FFV = 223; + const T FFVV = 2233; } } } namespace ThePEG { -ThePEG_DECLARE_POINTERS(Helicity::AbstractFFVVertex,AbstractFFVVertexPtr); +ThePEG_DECLARE_POINTERS(Helicity::AbstractFFVVVertex,AbstractFFVVVertexPtr); } #endif diff --git a/Helicity/Vertex/AbstractFFVVertex.h b/Helicity/Vertex/AbstractFFVVVertex.h copy from Helicity/Vertex/AbstractFFVVertex.h copy to Helicity/Vertex/AbstractFFVVVertex.h --- a/Helicity/Vertex/AbstractFFVVertex.h +++ b/Helicity/Vertex/AbstractFFVVVertex.h @@ -1,207 +1,77 @@ // -*- C++ -*- -#ifndef HELICITY_AbstractFFVVertex_H -#define HELICITY_AbstractFFVVertex_H +#ifndef HELICITY_AbstractFFVVVertex_H +#define HELICITY_AbstractFFVVVertex_H // -// This is the declaration of the AbstractFFVVertex class. +// 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 "AbstractFFVVertex.fh" +#include "AbstractFFVVVertex.fh" namespace ThePEG { namespace Helicity { /** - * The AbstractFFVVertex class provides a base class for all + * The AbstractFFVVVertex class provides a base class for all * fermion-fermion-vector vertices in ThePEG. */ -class AbstractFFVVertex: public VertexBase { +class AbstractFFVVVertex: public VertexBase { public: - /** - * Enum for the direction in the small angle limit - */ - enum SmallAngleDirection { - NegativeZDirection = -1, ///< Along -z - PostiveZDirection = 1 ///< Along +z - }; - -public: - /** * Default constructor */ - AbstractFFVVertex() : VertexBase(VertexType::FFV) {} + 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) = 0; - - /** - * Evaluate the off-shell barred spinor coming from the vertex. - * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. - * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor. - * @param out The ParticleData pointer for the off-shell barred spinor. - * @param sbar2 The wavefunction for the antifermion. - * @param vec3 The wavefunction for the vector. - * @param mass The mass of the off-shell particle if not taken from the ParticleData - * object - * @param width The width of the off-shell particle if not taken from the ParticleData - * object - */ - virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, - const SpinorBarWaveFunction & sbar2, - const VectorWaveFunction & vec3, - complex mass=-GeV, complex width=-GeV) = 0; - - /** - * Evaluate the off-shell vector coming from the vertex. - * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. - * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. - * @param out The ParticleData pointer for the off-shell vector. - * @param sp1 The wavefunction for the ferimon. - * @param sbar2 The wavefunction for the antifermion. - * @param mass The mass of the off-shell particle if not taken from the ParticleData - * object - * @param width The width of the off-shell particle if not taken from the ParticleData - * object - */ - virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, - const SpinorWaveFunction & sp1, - const SpinorBarWaveFunction & sbar2, - complex mass=-GeV, complex width=-GeV) = 0; - - /** - * Evaluate the off-shell spinor coming from the vertex. - * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. - * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. - * @param out The ParticleData pointer for the off-shell spinor. - * @param sp1 The wavefunction for the ferimon. - * @param vec3 The wavefunction for the vector. - * @param mass The mass of the off-shell particle if not taken from the ParticleData - * object - * @param width The width of the off-shell particle if not taken from the ParticleData - * object - */ - virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, - const SpinorWaveFunction & sp1, - const VectorWaveFunction & vec3, - complex mass=-GeV, complex width=-GeV) = 0; - //@} - - /** - * Special members for off-shell fermion wavefunctions with massless - * gauge bosons at small angles in the small angle limit for - * numerical accuracy. In order to get sufficient accuracy it is - * assumed that the fermion lies along either the positive or negative z - * axis - * - * Unlike the other members this is not required to be implemented in - * all inheriting classes and a default implementation which returns - * the general result is included. - */ - //@{ - /** Small angle approx for an off-shell spinor - * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. - * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. - * @param out The ParticleData pointer for the off-shell spinor. - * @param sp1 The wavefunction for the ferimon. - * @param vec3 The wavefunction for the vector. - * @param fhel Helicity of the fermion - * @param vhel Helicity of the vector - * @param ctheta The cosine of the - * polar angle of the photon with respect to the fermion - * @param phi The azimuthal angle of the photon with respect to the fermion - * @param stheta The sine of the - * polar angle of the photon with respect to the fermion - * @param includeEikonal Whether or not to include the eikonal piece - * @param direction Whether fermion along + or - z direction - * @param mass The mass of the off-shell particle if not taken from the ParticleData - * object - * @param width The width of the off-shell particle if not taken from the ParticleData - * object - */ - virtual SpinorWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, - const SpinorWaveFunction & sp1, - const VectorWaveFunction & vec3, - unsigned int fhel, unsigned int vhel, - double ctheta, double phi, double stheta, - bool includeEikonal = true, - SmallAngleDirection direction = PostiveZDirection, - Energy mass=-GeV, Energy width=-GeV); - - /** Small angle approx for an off-shell spinor - * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. - * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. - * @param out The ParticleData pointer for the off-shell spinor. - * @param sbar2 The wavefunction for the antifermion. - * @param vec3 The wavefunction for the vector. - * @param fhel Helicity of the fermion - * @param vhel Helicity of the vector - * @param ctheta The cosine of the - * polar angle of the photon with respect to the fermion - * @param phi The azimuthal angle of the photon with respect to the fermion - * @param stheta The sine of the - * polar angle of the photon with respect to the fermion - * @param includeEikonal Whether or not to include the eikonal piece - * @param direction Whether fermion along + or - z direction - * @param mass The mass of the off-shell particle if not taken from the ParticleData - * object - * @param width The width of the off-shell particle if not taken from the ParticleData - * object - */ - virtual SpinorBarWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, - const SpinorBarWaveFunction & sbar2, - const VectorWaveFunction & vec3, - unsigned int fhel, unsigned int vhel, - double ctheta, double phi, double stheta, - bool includeEikonal = true, - SmallAngleDirection direction = PostiveZDirection, - Energy mass=-GeV, Energy width=-GeV); + 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. */ - AbstractFFVVertex & operator=(const AbstractFFVVertex &); + AbstractFFVVVertex & operator=(const AbstractFFVVVertex &); }; } } namespace ThePEG { } -#endif /* HELICITY_AbstractFFVVertex_H */ +#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,25 +1,26 @@ 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 +AbstractRFVVertex.h AbstractRFVVertex.fh AbstractRFVVertex.cc \ +AbstractFFVVVertex.h AbstractFFVVVertex.fh AbstractFFVVVertex.cc libThePEGVertex_la_LIBADD = Scalar/libThePEGSVertex.la \ Vector/libThePEGVVertex.la \ Tensor/libThePEGTVertex.la