|
|
|||
File indexing completed on 2026-08-06 09:38:23
0001 // -*- C++ -*- 0002 // 0003 // RFVVertex.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_RFVVertex_H 0010 #define ThePEG_RFVVertex_H 0011 // 0012 // This is the declaration of the RFVVertex class. 0013 0014 #include <ThePEG/Helicity/Vertex/AbstractRFVVertex.h> 0015 #include <ThePEG/Helicity/WaveFunction/VectorWaveFunction.h> 0016 #include <ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h> 0017 #include <ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h> 0018 #include "RFVVertex.fh" 0019 0020 namespace ThePEG { 0021 0022 namespace Helicity{ 0023 0024 /** \ingroup Helicity 0025 * 0026 * The RFVVertex class is the base class for all helicity amplitude 0027 * vertices which use the renormalisable form for the 0028 * spin-3/2 fermion-fermion-vector vertex. 0029 * 0030 * Any such vertices should inherit from this class and implement the virtual 0031 * setcoupling member function. The base AbstractRFVVertex 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}_\mu \left[ g^{\mu\nu} a^{1\lambda} P_\lambda 0036 * +\gamma^\nu p_{1}^\mu a^{2\lambda} P_\lambda 0037 * +p_{1}^\mu p_{2}^\nu a^{3\lambda} P_\lambda 0038 * \right]f_1\epsilon_{3\nu}\f] 0039 * 0040 * @see AbstractRFVVertex 0041 */ 0042 class RFVVertex: public AbstractRFVVertex { 0043 0044 public: 0045 0046 /** 0047 * Standard Init function used to initialize the interfaces. 0048 */ 0049 static void Init(); 0050 0051 public: 0052 0053 /** 0054 * Members to calculate the helicity amplitude expressions for vertices 0055 * and off-shell particles. 0056 */ 0057 //@{ 0058 /** 0059 * Evalulate the vertex. 0060 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0061 * @param sp1 The wavefunction for the ferimon. 0062 * @param sbar2 The wavefunction for the antifermion. 0063 * @param vec3 The wavefunction for the vector. 0064 */ 0065 Complex evaluate(Energy2 q2,const RSSpinorWaveFunction & sp1, 0066 const SpinorBarWaveFunction & sbar2, 0067 const VectorWaveFunction & vec3); 0068 0069 /** 0070 * Evalulate the vertex. 0071 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0072 * @param sp1 The wavefunction for the ferimon. 0073 * @param sbar2 The wavefunction for the antifermion. 0074 * @param vec3 The wavefunction for the vector. 0075 */ 0076 Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1, 0077 const RSSpinorBarWaveFunction & sbar2, 0078 const VectorWaveFunction & vec3); 0079 0080 /** 0081 * Evaluate the off-shell barred spinor coming from the vertex. 0082 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0083 * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor. 0084 * @param out The ParticleData pointer for the off-shell barred spinor. 0085 * @param sbar2 The wavefunction for the antifermion. 0086 * @param vec3 The wavefunction for the vector. 0087 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0088 * object 0089 * @param width The width of the off-shell particle if not taken from the ParticleData 0090 * object 0091 */ 0092 SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0093 const RSSpinorBarWaveFunction & sbar2, 0094 const VectorWaveFunction & vec3, 0095 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0096 0097 /** 0098 * Evaluate the off-shell barred spinor coming from the vertex. 0099 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0100 * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor. 0101 * @param out The ParticleData pointer for the off-shell barred spinor. 0102 * @param sbar2 The wavefunction for the antifermion. 0103 * @param vec3 The wavefunction for the vector. 0104 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0105 * object 0106 * @param width The width of the off-shell particle if not taken from the ParticleData 0107 * object 0108 */ 0109 RSSpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0110 const SpinorBarWaveFunction & sbar2, 0111 const VectorWaveFunction & vec3, 0112 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0113 0114 /** 0115 * Evaluate the off-shell vector coming from the vertex. 0116 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0117 * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. 0118 * @param out The ParticleData pointer for the off-shell vector. 0119 * @param sp1 The wavefunction for the ferimon. 0120 * @param sbar2 The wavefunction for the antifermion. 0121 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0122 * object 0123 * @param width The width of the off-shell particle if not taken from the ParticleData 0124 * object 0125 */ 0126 VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0127 const RSSpinorWaveFunction & sp1, 0128 const SpinorBarWaveFunction & sbar2, 0129 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0130 0131 /** 0132 * Evaluate the off-shell vector coming from the vertex. 0133 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0134 * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. 0135 * @param out The ParticleData pointer for the off-shell vector. 0136 * @param sp1 The wavefunction for the ferimon. 0137 * @param sbar2 The wavefunction for the antifermion. 0138 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0139 * object 0140 * @param width The width of the off-shell particle if not taken from the ParticleData 0141 * object 0142 */ 0143 VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0144 const SpinorWaveFunction & sp1, 0145 const RSSpinorBarWaveFunction & sbar2, 0146 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0147 0148 /** 0149 * Evaluate the off-shell spinor coming from the vertex. 0150 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0151 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0152 * @param out The ParticleData pointer for the off-shell spinor. 0153 * @param sp1 The wavefunction for the ferimon. 0154 * @param vec3 The wavefunction for the vector. 0155 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0156 * object 0157 * @param width The width of the off-shell particle if not taken from the ParticleData 0158 * object 0159 */ 0160 RSSpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0161 const SpinorWaveFunction & sp1, 0162 const VectorWaveFunction & vec3, 0163 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0164 0165 /** 0166 * Evaluate the off-shell spinor coming from the vertex. 0167 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0168 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0169 * @param out The ParticleData pointer for the off-shell spinor. 0170 * @param sp1 The wavefunction for the ferimon. 0171 * @param vec3 The wavefunction for the vector. 0172 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0173 * object 0174 * @param width The width of the off-shell particle if not taken from the ParticleData 0175 * object 0176 */ 0177 SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0178 const RSSpinorWaveFunction & sp1, 0179 const VectorWaveFunction & vec3, 0180 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0181 //@} 0182 0183 /** 0184 * Set coupling methods 0185 */ 0186 //@{ 0187 /** 0188 * Calculate the couplings for a three point interaction. 0189 * This method is virtual and must be implemented in 0190 * classes inheriting from this. 0191 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0192 * @param part1 The ParticleData pointer for the first particle. 0193 * @param part2 The ParticleData pointer for the second particle. 0194 * @param part3 The ParticleData pointer for the third particle. 0195 */ 0196 virtual void setCoupling(Energy2 q2,tcPDPtr part1, 0197 tcPDPtr part2,tcPDPtr part3)=0; 0198 0199 /** 0200 * Dummy setCouplings for a four point interaction 0201 * This method is virtual and must be implemented in 0202 * classes inheriting from this. 0203 */ 0204 virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr,tcPDPtr) { 0205 assert(false); 0206 } 0207 //@} 0208 0209 /** 0210 * Get the Couplings 0211 */ 0212 //@{ 0213 /** 0214 * Get the left coupling. 0215 */ 0216 const vector<Complex> & left() const { return _left; } 0217 0218 /** 0219 * Get the right coupling. 0220 */ 0221 const vector<Complex> & right() const { return _right; } 0222 //@} 0223 0224 protected: 0225 0226 /** 0227 * Set the couplings 0228 */ 0229 //@{ 0230 /** 0231 * Set the left coupling. 0232 */ 0233 void left(const vector<Complex> & in) { _left = in; } 0234 0235 /** 0236 * Set the right coupling. 0237 */ 0238 void right(const vector<Complex> & in) { _right = in; } 0239 //@} 0240 0241 private: 0242 0243 /** 0244 * Private and non-existent assignment operator. 0245 */ 0246 RFVVertex & operator=(const RFVVertex &) = delete; 0247 0248 private: 0249 0250 /** 0251 * Left coupling. 0252 */ 0253 vector<Complex> _left; 0254 0255 /** 0256 * Right coupling. 0257 */ 0258 vector<Complex> _right; 0259 0260 }; 0261 } 0262 0263 } 0264 #endif /* ThePEG_RFVVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|