Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef HELICITY_AbstractRFVVertex_H
0003 #define HELICITY_AbstractRFVVertex_H
0004 //
0005 // This is the declaration of the AbstractRFVVertex 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/RSSpinorWaveFunction.h"
0012 #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h"
0013 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
0014 #include "AbstractRFVVertex.fh"
0015 
0016 namespace ThePEG {
0017 namespace Helicity {
0018 
0019 /**
0020  * The AbstractRFVVertex class provides a base class for all
0021  * spin-3/2 fermion-fermion-vector vertices in ThePEG.
0022  */
0023 class AbstractRFVVertex: public VertexBase {
0024   
0025 public:
0026 
0027   /**
0028    * Default constructor
0029    */
0030   AbstractRFVVertex() : VertexBase(VertexType::RFV) {}
0031 
0032   /**
0033    * Members to calculate the helicity amplitude expressions for vertices
0034    * and off-shell particles.
0035    */
0036   //@{
0037   /**
0038    * Evalulate the vertex.
0039    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0040    * @param sp1   The wavefunction for the RS ferimon.
0041    * @param sbar2 The wavefunction for the antifermion.
0042    * @param vec3  The wavefunction for the vector.
0043    */
0044   virtual Complex evaluate(Energy2 q2,const RSSpinorWaveFunction & sp1,
0045                const SpinorBarWaveFunction & sbar2,
0046                const VectorWaveFunction & vec3) = 0;
0047 
0048   /**
0049    * Evalulate the vertex.
0050    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0051    * @param sp1   The wavefunction for the ferimon.
0052    * @param sbar2 The wavefunction for the RS antifermion.
0053    * @param vec3  The wavefunction for the vector.
0054    */
0055   virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
0056                const RSSpinorBarWaveFunction & sbar2,
0057                const VectorWaveFunction & vec3) = 0;
0058 
0059   /**
0060    * Evaluate the off-shell barred spinor coming from the vertex.
0061    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0062    * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor.
0063    * @param out The ParticleData pointer for the off-shell barred spinor.
0064    * @param sbar2 The wavefunction for the antifermion.
0065    * @param vec3  The wavefunction for the vector.
0066    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0067    * object
0068    * @param width The width of the off-shell particle if not taken from the ParticleData
0069    * object
0070    */
0071   virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0072                      const RSSpinorBarWaveFunction & sbar2,
0073                      const VectorWaveFunction & vec3,
0074                      complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0075 
0076   /**
0077    * Evaluate the off-shell barred spinor coming from the vertex.
0078    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0079    * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor.
0080    * @param out The ParticleData pointer for the off-shell barred spinor.
0081    * @param sbar2 The wavefunction for the antifermion.
0082    * @param vec3  The wavefunction for the vector.
0083    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0084    * object
0085    * @param width The width of the off-shell particle if not taken from the ParticleData
0086    * object
0087    */
0088   virtual RSSpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0089                      const SpinorBarWaveFunction & sbar2,
0090                      const VectorWaveFunction & vec3,
0091                      complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0092 
0093   /**
0094    * Evaluate the off-shell vector coming from the vertex.
0095    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0096    * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector.
0097    * @param out The ParticleData pointer for the off-shell vector.
0098    * @param sp1   The wavefunction for the ferimon.
0099    * @param sbar2 The wavefunction for the antifermion.
0100    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0101    * object
0102    * @param width The width of the off-shell particle if not taken from the ParticleData
0103    * object
0104    */
0105   virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0106                       const RSSpinorWaveFunction & sp1,
0107                       const SpinorBarWaveFunction & sbar2,
0108                       complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0109 
0110   /**
0111    * Evaluate the off-shell vector coming from the vertex.
0112    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0113    * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector.
0114    * @param out The ParticleData pointer for the off-shell vector.
0115    * @param sp1   The wavefunction for the ferimon.
0116    * @param sbar2 The wavefunction for the antifermion.
0117    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0118    * object
0119    * @param width The width of the off-shell particle if not taken from the ParticleData
0120    * object
0121    */
0122   virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0123                       const SpinorWaveFunction & sp1,
0124                       const RSSpinorBarWaveFunction & sbar2,
0125                       complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0126 
0127   /**
0128    * Evaluate the off-shell spinor coming from the vertex.
0129    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0130    * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor.
0131    * @param out The ParticleData pointer for the off-shell spinor.
0132    * @param sp1   The wavefunction for the ferimon.
0133    * @param vec3  The wavefunction for the vector.
0134    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0135    * object
0136    * @param width The width of the off-shell particle if not taken from the ParticleData
0137    * object
0138    */
0139   virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0140                       const RSSpinorWaveFunction & sp1,
0141                       const VectorWaveFunction & vec3,
0142                       complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0143 
0144   /**
0145    * Evaluate the off-shell spinor coming from the vertex.
0146    * @param q2 The scale \f$q^2\f$ for the coupling at the vertex.
0147    * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor.
0148    * @param out The ParticleData pointer for the off-shell spinor.
0149    * @param sp1   The wavefunction for the ferimon.
0150    * @param vec3  The wavefunction for the vector.
0151    * @param mass The mass of the off-shell particle if not taken from the ParticleData
0152    * object
0153    * @param width The width of the off-shell particle if not taken from the ParticleData
0154    * object
0155    */
0156   virtual RSSpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
0157                     const SpinorWaveFunction & sp1,
0158                     const VectorWaveFunction & vec3,
0159                     complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
0160   //@}
0161 
0162 public:
0163 
0164   /**
0165    * The standard Init function used to initialize the interfaces.
0166    * Called exactly once for each class by the class description system
0167    * before the main function starts or
0168    * when this class is dynamically loaded.
0169    */
0170   static void Init();
0171 
0172 private:
0173 
0174   /**
0175    * The assignment operator is private and must never be called.
0176    * In fact, it should not even be implemented.
0177    */
0178   AbstractRFVVertex & operator=(const AbstractRFVVertex &) = delete;
0179 
0180 };
0181 
0182 }
0183 }
0184 
0185 
0186 namespace ThePEG {
0187 
0188 }
0189 #endif /* HELICITY_AbstractRFVVertex_H */