Back to home page

EIC code displayed by LXR

 
 

    


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

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