Back to home page

EIC code displayed by LXR

 
 

    


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

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