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