Back to home page

EIC code displayed by LXR

 
 

    


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

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