Back to home page

EIC code displayed by LXR

 
 

    


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

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