Back to home page

EIC code displayed by LXR

 
 

    


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

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