Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:24

0001 // -*- C++ -*-
0002 #ifndef HELICITY_AbstractVVSSVertex_H
0003 #define HELICITY_AbstractVVSSVertex_H
0004 //
0005 // This is the declaration of the AbstractVVSSVertex class.
0006 //
0007 
0008 #include "VertexBase.h"
0009 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
0010 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
0011 #include "AbstractVVSSVertex.fh"
0012 
0013 namespace ThePEG {
0014 namespace Helicity {
0015 
0016 /**
0017  * The AbstractVVSSVertex class is the base class for vector-vector-scalar-scalar
0018  * interactions in ThePEG
0019  */
0020 class AbstractVVSSVertex: public VertexBase {
0021 
0022 public:
0023 
0024   /**
0025    * Default constructor
0026    */
0027   AbstractVVSSVertex() : VertexBase(VertexType::VVSS) {}
0028 
0029   /**
0030    * Members to calculate the helicity amplitude expressions for vertices
0031    * and off-shell particles.
0032    */
0033   //@{
0034   /**
0035    * Evaluate the vertex.
0036    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0037    * @param vec1 The wavefunction for the first  vector.
0038    * @param vec2 The wavefunction for the second vector.
0039    * @param sca3 The wavefunction for the first  scalar.
0040    * @param sca4 The wavefunction for the second scalar.
0041    */
0042   virtual Complex evaluate(Energy2 q2, const VectorWaveFunction & vec1,
0043                const VectorWaveFunction & vec2,
0044                const ScalarWaveFunction & sca3,
0045                const ScalarWaveFunction & sca4) = 0;
0046 
0047   /**
0048    * Evaluate the off-shell vector coming from the vertex.
0049    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0050    * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector.
0051    * @param out The ParticleData pointer for the off-shell vector.
0052    * @param vec2 The wavefunction for the second vector.
0053    * @param sca3 The wavefunction for the first  scalar.
0054    * @param sca4 The wavefunction for the second scalar.
0055    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0056    * object
0057    * @param width The width of the off-shell particle if not taken from the ParticleData
0058    * object
0059    */
0060   virtual VectorWaveFunction evaluate(Energy2 q2, int iopt,tcPDPtr out,
0061                       const VectorWaveFunction & vec2,
0062                       const ScalarWaveFunction & sca3,
0063                       const ScalarWaveFunction & sca4,
0064                       complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0065 
0066   /**
0067    * Evaluate the off-shell scalar coming from the vertex.
0068    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0069    * @param iopt Option of the shape of the Breit-Wigner for the off-shell scalar.
0070    * @param out The ParticleData pointer for the off-shell scalar.
0071    * @param vec1 The wavefunction for the first  vector.
0072    * @param vec2 The wavefunction for the second vector.
0073    * @param sca3 The wavefunction for the second scalar.
0074    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0075    * object
0076    * @param width The width of the off-shell particle if not taken from the ParticleData
0077    * object
0078    */
0079   virtual ScalarWaveFunction evaluate(Energy2 q2, int iopt,tcPDPtr out,
0080                       const VectorWaveFunction & vec1,
0081                       const VectorWaveFunction & vec2,
0082                       const ScalarWaveFunction & sca3,
0083                       complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0084   //@}
0085 
0086 public:
0087 
0088   /**
0089    * The standard Init function used to initialize the interfaces.
0090    * Called exactly once for each class by the class description system
0091    * before the main function starts or
0092    * when this class is dynamically loaded.
0093    */
0094   static void Init();
0095 
0096 private:
0097 
0098   /**
0099    * The assignment operator is private and must never be called.
0100    * In fact, it should not even be implemented.
0101    */
0102   AbstractVVSSVertex & operator=(const AbstractVVSSVertex &) = delete;
0103 
0104 };
0105 
0106 }
0107 }
0108 
0109 
0110 namespace ThePEG {
0111 
0112 }
0113 #endif /* HELICITY_AbstractVVSSVertex_H */