|
|
|||
File indexing completed on 2026-08-06 09:38:23
0001 // -*- C++ -*- 0002 // 0003 // FFVVertex.h is a part of ThePEG - Toolkit for HEP Event Generation 0004 // Copyright (C) 2003-2019 Peter Richardson, Leif Lonnblad 0005 // 0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef ThePEG_FFVVertex_H 0010 #define ThePEG_FFVVertex_H 0011 // 0012 // This is the declaration of the FFVVertex class. 0013 0014 #include <ThePEG/Helicity/Vertex/AbstractFFVVertex.h> 0015 #include <ThePEG/Helicity/WaveFunction/VectorWaveFunction.h> 0016 #include <ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h> 0017 #include <ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h> 0018 #include "FFVVertex.fh" 0019 0020 namespace ThePEG { 0021 0022 namespace Helicity{ 0023 0024 /** \ingroup Helicity 0025 * 0026 * The FFVVertex class is the base class for all helicity amplitude 0027 * vertices which use the renormalisable form for the 0028 * fermion-fermion-vector vertex. 0029 * 0030 * Any such vertices should inherit from this class and implement the virtual 0031 * setcoupling member function. The base AbstractFFVVertex class is used to store the 0032 * particles allowed to interact at the vertex. 0033 * 0034 * The form of the vertex is 0035 * \f[ic\bar{f_2}\gamma^\mu a^\lambda P_\lambda f_1\epsilon_{3\mu}\f] 0036 * 0037 * @see AbstractFFVVertex 0038 */ 0039 class FFVVertex: public AbstractFFVVertex { 0040 0041 public: 0042 0043 /** 0044 * Standard Init function used to initialize the interfaces. 0045 */ 0046 static void Init(); 0047 0048 public: 0049 0050 /** 0051 * Members to calculate the helicity amplitude expressions for vertices 0052 * and off-shell particles. 0053 */ 0054 //@{ 0055 /** 0056 * Evalulate the vertex. 0057 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0058 * @param sp1 The wavefunction for the ferimon. 0059 * @param sbar2 The wavefunction for the antifermion. 0060 * @param vec3 The wavefunction for the vector. 0061 */ 0062 virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1, 0063 const SpinorBarWaveFunction & sbar2, 0064 const VectorWaveFunction & vec3); 0065 0066 /** 0067 * Evaluate the off-shell barred spinor coming from the vertex. 0068 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0069 * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor. 0070 * @param out The ParticleData pointer for the off-shell barred spinor. 0071 * @param sbar2 The wavefunction for the antifermion. 0072 * @param vec3 The wavefunction for the vector. 0073 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0074 * object 0075 * @param width The width of the off-shell particle if not taken from the ParticleData 0076 * object 0077 */ 0078 virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0079 const SpinorBarWaveFunction & sbar2, 0080 const VectorWaveFunction & vec3, 0081 complex<Energy> mass=-GeV, 0082 complex<Energy> width=-GeV); 0083 0084 /** 0085 * Evaluate the off-shell vector coming from the vertex. 0086 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0087 * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. 0088 * @param out The ParticleData pointer for the off-shell vector. 0089 * @param sp1 The wavefunction for the ferimon. 0090 * @param sbar2 The wavefunction for the antifermion. 0091 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0092 * object 0093 * @param width The width of the off-shell particle if not taken from the ParticleData 0094 * object 0095 */ 0096 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0097 const SpinorWaveFunction & sp1, 0098 const SpinorBarWaveFunction & sbar2, 0099 complex<Energy> mass=-GeV, 0100 complex<Energy> width=-GeV); 0101 0102 /** 0103 * Evaluate the off-shell spinor coming from the vertex. 0104 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0105 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0106 * @param out The ParticleData pointer for the off-shell spinor. 0107 * @param sp1 The wavefunction for the ferimon. 0108 * @param vec3 The wavefunction for the vector. 0109 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0110 * object 0111 * @param width The width of the off-shell particle if not taken from the ParticleData 0112 * object 0113 */ 0114 virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0115 const SpinorWaveFunction & sp1, 0116 const VectorWaveFunction & vec3, 0117 complex<Energy> mass=-GeV, 0118 complex<Energy> width=-GeV); 0119 //@} 0120 0121 /** 0122 * Special members for off-shell fermion wavefunctions with massless 0123 * gauge bosons at small angles in the small angle limit for 0124 * numerical accuracy. In order to get sufficient accuracy it is 0125 * assumed that the fermion lies along either the positive or negative z 0126 * axis. 0127 */ 0128 //@{ 0129 /** Small angle approx for an off-shell spinor 0130 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0131 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0132 * @param out The ParticleData pointer for the off-shell spinor. 0133 * @param sp1 The wavefunction for the ferimon. 0134 * @param vec3 The wavefunction for the vector. 0135 * @param fhel Helicity of the fermion 0136 * @param vhel Helicity of the vector 0137 * @param ctheta The cosine of the 0138 * polar angle of the photon with respect to the fermion 0139 * @param phi The azimuthal angle of the photon with respect to the fermion 0140 * @param stheta The sine of the 0141 * polar angle of the photon with respect to the fermion 0142 * @param includeEikonal Whether or not to include the eikonal piece 0143 * @param direction Whether fermion along + or - z direction 0144 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0145 * object 0146 * @param width The width of the off-shell particle if not taken from the ParticleData 0147 * object 0148 */ 0149 virtual SpinorWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, 0150 const SpinorWaveFunction & sp1, 0151 const VectorWaveFunction & vec3, 0152 unsigned int fhel, unsigned int vhel, 0153 double ctheta, double phi, double stheta, 0154 bool includeEikonal = true, 0155 SmallAngleDirection direction = PostiveZDirection, 0156 Energy mass=-GeV, Energy width=-GeV); 0157 0158 /** Small angle approx for an off-shell spinor 0159 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0160 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0161 * @param out The ParticleData pointer for the off-shell spinor. 0162 * @param sbar2 The wavefunction for the antifermion. 0163 * @param vec3 The wavefunction for the vector. 0164 * @param fhel Helicity of the fermion 0165 * @param vhel Helicity of the vector 0166 * @param ctheta The cosine of the 0167 * polar angle of the photon with respect to the fermion 0168 * @param phi The azimuthal angle of the photon with respect to the fermion 0169 * @param stheta The sine of the 0170 * polar angle of the photon with respect to the fermion 0171 * @param includeEikonal Whether or not to include the eikonal piece 0172 * @param direction Whether fermion along + or - z direction 0173 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0174 * object 0175 * @param width The width of the off-shell particle if not taken from the ParticleData 0176 * object 0177 */ 0178 virtual SpinorBarWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out, 0179 const SpinorBarWaveFunction & sbar2, 0180 const VectorWaveFunction & vec3, 0181 unsigned int fhel, unsigned int vhel, 0182 double ctheta, double phi, double stheta, 0183 bool includeEikonal = true, 0184 SmallAngleDirection direction = PostiveZDirection, 0185 Energy mass=-GeV, Energy width=-GeV); 0186 //@} 0187 0188 /** 0189 * Set coupling methods 0190 */ 0191 //@{ 0192 /** 0193 * Calculate the couplings for a three point interaction. 0194 * This method is virtual and must be implemented in 0195 * classes inheriting from this. 0196 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0197 * @param part1 The ParticleData pointer for the first particle. 0198 * @param part2 The ParticleData pointer for the second particle. 0199 * @param part3 The ParticleData pointer for the third particle. 0200 */ 0201 virtual void setCoupling(Energy2 q2,tcPDPtr part1, 0202 tcPDPtr part2,tcPDPtr part3)=0; 0203 0204 /** 0205 * Dummy setCouplings for a four point interaction 0206 * This method is virtual and must be implemented in 0207 * classes inheriting from this. 0208 */ 0209 virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr,tcPDPtr) { 0210 assert(false); 0211 } 0212 //@} 0213 0214 /** 0215 * Get the Couplings 0216 */ 0217 //@{ 0218 /** 0219 * Get the left coupling. 0220 */ 0221 const Complex & left() const { return _left; } 0222 0223 /** 0224 * Get the right coupling. 0225 */ 0226 const Complex & right() const { return _right; } 0227 //@} 0228 0229 protected: 0230 0231 /** 0232 * Set the couplings 0233 */ 0234 //@{ 0235 /** 0236 * Set the left coupling. 0237 */ 0238 void left(const Complex & in) { _left = in; } 0239 0240 /** 0241 * Set the right coupling. 0242 */ 0243 void right(const Complex & in) { _right = in; } 0244 //@} 0245 0246 private: 0247 0248 /** 0249 * Private and non-existent assignment operator. 0250 */ 0251 FFVVertex & operator=(const FFVVertex &) = delete; 0252 0253 private: 0254 0255 /** 0256 * Left coupling. 0257 */ 0258 Complex _left; 0259 0260 /** 0261 * Right coupling. 0262 */ 0263 Complex _right; 0264 0265 }; 0266 } 0267 0268 } 0269 #endif /* ThePEG_FFVVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|