|
|
|||
File indexing completed on 2026-08-06 09:38:23
0001 // -*- C++ -*- 0002 #ifndef HELICITY_AbstractFFVVertex_H 0003 #define HELICITY_AbstractFFVVertex_H 0004 // 0005 // This is the declaration of the AbstractFFVVertex 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/VectorWaveFunction.h" 0012 #include "AbstractFFVVertex.fh" 0013 0014 namespace ThePEG { 0015 namespace Helicity { 0016 0017 /** 0018 * The AbstractFFVVertex class provides a base class for all 0019 * fermion-fermion-vector vertices in ThePEG. 0020 */ 0021 class AbstractFFVVertex: public VertexBase { 0022 0023 public: 0024 0025 /** 0026 * Enum for the direction in the small angle limit 0027 */ 0028 enum SmallAngleDirection { 0029 NegativeZDirection = -1, ///< Along -z 0030 PostiveZDirection = 1 ///< Along +z 0031 }; 0032 0033 public: 0034 0035 0036 /** 0037 * Default constructor 0038 */ 0039 AbstractFFVVertex() : VertexBase(VertexType::FFV) {} 0040 0041 /** 0042 * Members to calculate the helicity amplitude expressions for vertices 0043 * and off-shell particles. 0044 */ 0045 //@{ 0046 /** 0047 * Evalulate the vertex. 0048 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0049 * @param sp1 The wavefunction for the ferimon. 0050 * @param sbar2 The wavefunction for the antifermion. 0051 * @param vec3 The wavefunction for the vector. 0052 */ 0053 virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1, 0054 const SpinorBarWaveFunction & sbar2, 0055 const VectorWaveFunction & vec3) = 0; 0056 0057 /** 0058 * Evaluate the off-shell barred spinor coming from the vertex. 0059 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0060 * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor. 0061 * @param out The ParticleData pointer for the off-shell barred spinor. 0062 * @param sbar2 The wavefunction for the antifermion. 0063 * @param vec3 The wavefunction for the vector. 0064 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0065 * object 0066 * @param width The width of the off-shell particle if not taken from the ParticleData 0067 * object 0068 */ 0069 virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0070 const SpinorBarWaveFunction & sbar2, 0071 const VectorWaveFunction & vec3, 0072 complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0; 0073 0074 /** 0075 * Evaluate the off-shell vector coming from the vertex. 0076 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0077 * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. 0078 * @param out The ParticleData pointer for the off-shell vector. 0079 * @param sp1 The wavefunction for the ferimon. 0080 * @param sbar2 The wavefunction for the antifermion. 0081 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0082 * object 0083 * @param width The width of the off-shell particle if not taken from the ParticleData 0084 * object 0085 */ 0086 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0087 const SpinorWaveFunction & sp1, 0088 const SpinorBarWaveFunction & sbar2, 0089 complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0; 0090 0091 /** 0092 * Evaluate the off-shell spinor coming from the vertex. 0093 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0094 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0095 * @param out The ParticleData pointer for the off-shell spinor. 0096 * @param sp1 The wavefunction for the ferimon. 0097 * @param vec3 The wavefunction for the vector. 0098 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0099 * object 0100 * @param width The width of the off-shell particle if not taken from the ParticleData 0101 * object 0102 */ 0103 virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0104 const SpinorWaveFunction & sp1, 0105 const VectorWaveFunction & vec3, 0106 complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0; 0107 //@} 0108 0109 /** 0110 * Special members for off-shell fermion wavefunctions with massless 0111 * gauge bosons at small angles in the small angle limit for 0112 * numerical accuracy. In order to get sufficient accuracy it is 0113 * assumed that the fermion lies along either the positive or negative z 0114 * axis 0115 * 0116 * Unlike the other members this is not required to be implemented in 0117 * all inheriting classes and a default implementation which returns 0118 * the general result is included. 0119 */ 0120 //@{ 0121 /** Small angle approx for an off-shell spinor 0122 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0123 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0124 * @param out The ParticleData pointer for the off-shell spinor. 0125 * @param sp1 The wavefunction for the ferimon. 0126 * @param vec3 The wavefunction for the vector. 0127 * @param fhel Helicity of the fermion 0128 * @param vhel Helicity of the vector 0129 * @param ctheta The cosine of the 0130 * polar angle of the photon with respect to the fermion 0131 * @param phi The azimuthal angle of the photon with respect to the fermion 0132 * @param stheta The sine of the 0133 * polar angle of the photon with respect to the fermion 0134 * @param includeEikonal Whether or not to include the eikonal piece 0135 * @param direction Whether fermion along + or - z direction 0136 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0137 * object 0138 * @param width The width of the off-shell particle if not taken from the ParticleData 0139 * object 0140 */ 0141 virtual SpinorWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, 0142 const SpinorWaveFunction & sp1, 0143 const VectorWaveFunction & vec3, 0144 unsigned int fhel, unsigned int vhel, 0145 double ctheta, double phi, double stheta, 0146 bool includeEikonal = true, 0147 SmallAngleDirection direction = PostiveZDirection, 0148 Energy mass=-GeV, Energy width=-GeV); 0149 0150 /** Small angle approx for an off-shell spinor 0151 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0152 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0153 * @param out The ParticleData pointer for the off-shell spinor. 0154 * @param sbar2 The wavefunction for the antifermion. 0155 * @param vec3 The wavefunction for the vector. 0156 * @param fhel Helicity of the fermion 0157 * @param vhel Helicity of the vector 0158 * @param ctheta The cosine of the 0159 * polar angle of the photon with respect to the fermion 0160 * @param phi The azimuthal angle of the photon with respect to the fermion 0161 * @param stheta The sine of the 0162 * polar angle of the photon with respect to the fermion 0163 * @param includeEikonal Whether or not to include the eikonal piece 0164 * @param direction Whether fermion along + or - z direction 0165 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0166 * object 0167 * @param width The width of the off-shell particle if not taken from the ParticleData 0168 * object 0169 */ 0170 virtual SpinorBarWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, 0171 const SpinorBarWaveFunction & sbar2, 0172 const VectorWaveFunction & vec3, 0173 unsigned int fhel, unsigned int vhel, 0174 double ctheta, double phi, double stheta, 0175 bool includeEikonal = true, 0176 SmallAngleDirection direction = PostiveZDirection, 0177 Energy mass=-GeV, Energy width=-GeV); 0178 //@} 0179 0180 public: 0181 0182 /** 0183 * The standard Init function used to initialize the interfaces. 0184 * Called exactly once for each class by the class description system 0185 * before the main function starts or 0186 * when this class is dynamically loaded. 0187 */ 0188 static void Init(); 0189 0190 private: 0191 0192 /** 0193 * The assignment operator is private and must never be called. 0194 * In fact, it should not even be implemented. 0195 */ 0196 AbstractFFVVertex & operator=(const AbstractFFVVertex &) = delete; 0197 0198 }; 0199 0200 } 0201 } 0202 0203 0204 namespace ThePEG { 0205 0206 } 0207 #endif /* HELICITY_AbstractFFVVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|