|
|
|||
File indexing completed on 2026-08-06 09:38:23
0001 // -*- C++ -*- 0002 // 0003 // FFSVertex.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_FFSVertex_H 0010 #define ThePEG_FFSVertex_H 0011 // 0012 // This is the declaration of the FFSVertex class. 0013 0014 #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" 0015 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" 0016 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" 0017 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" 0018 #include "FFSVertex.fh" 0019 0020 namespace ThePEG { 0021 0022 namespace Helicity{ 0023 0024 /** \ingroup Helicity 0025 * 0026 * The FFSVertex class is the implementation of the interact of a 0027 * scalar boson and a fermion-antifermion pair. It inherits from the AbstractFFSVertex 0028 * class for storage of the particles interacting at the vertex and implements 0029 * the helicity calculations. 0030 * 0031 * Implementations of specific interactions should inherit from this and implement 0032 * the virtual setCoupling member. 0033 * 0034 * The form of the vertex is 0035 * \f[ic\bar{f_2}a^\lambda P_\lambda f_1\phi_3\f] 0036 * where \f$a^\pm\f$ are the right and left couplings and \f$P_\pm=(1\pm\gamma_5)\f$ 0037 * are the chirality projection operators. 0038 * 0039 * @see AbstractFFSVertex 0040 */ 0041 class FFSVertex: public AbstractFFSVertex { 0042 0043 public: 0044 0045 /** 0046 * Standard Init function used to initialize the interfaces. 0047 */ 0048 static void Init(); 0049 0050 public: 0051 0052 /** 0053 * Members to calculate the helicity amplitude expressions for vertices 0054 * and off-shell particles. 0055 */ 0056 //@{ 0057 /** 0058 * Evalulate the vertex. 0059 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0060 * @param sp1 The wavefunction for the ferimon. 0061 * @param sbar2 The wavefunction for the antifermion. 0062 * @param sca3 The wavefunction for the scalar. 0063 */ 0064 Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1, 0065 const SpinorBarWaveFunction & sbar2, 0066 const ScalarWaveFunction & sca3); 0067 0068 /** 0069 * Evaluate the off-shell spinor coming from the vertex. 0070 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0071 * @param iopt Option of the shape of the Breit-Wigner for the off-shell spinor. 0072 * @param out The ParticleData pointer for the off-shell spinor. 0073 * @param sp1 The wavefunction for the ferimon. 0074 * @param sca3 The wavefunction for the scalar. 0075 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0076 * object 0077 * @param width The width of the off-shell particle if not taken from the ParticleData 0078 * object 0079 */ 0080 SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0081 const SpinorWaveFunction & sp1, 0082 const ScalarWaveFunction & sca3, 0083 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0084 0085 /** 0086 * Evaluate the off-shell barred spinor coming from the vertex. 0087 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0088 * @param iopt Option of the shape of the Breit-Wigner for the off-shell barred spinor. 0089 * @param out The ParticleData pointer for the off-shell barred spinor. 0090 * @param sbar2 The wavefunction for the antifermion. 0091 * @param sca3 The wavefunction for the scalar. 0092 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0093 * object 0094 * @param width The width of the off-shell particle if not taken from the ParticleData 0095 * object 0096 */ 0097 SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0098 const SpinorBarWaveFunction & sbar2, 0099 const ScalarWaveFunction & sca3, 0100 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0101 0102 /** 0103 * Evaluate the off-shell scalar 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 scalar. 0106 * @param out The ParticleData pointer for the off-shell scalar. 0107 * @param sp1 The wavefunction for the ferimon. 0108 * @param sbar2 The wavefunction for the antifermion. 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 ScalarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0115 const SpinorWaveFunction & sp1, 0116 const SpinorBarWaveFunction & sbar2, 0117 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0118 0119 /** 0120 * Set coupling methods 0121 */ 0122 //@{ 0123 /** 0124 * Calculate the couplings for a three point interaction. 0125 * This method is virtual and must be implemented in 0126 * classes inheriting from this. 0127 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0128 * @param part1 The ParticleData pointer for the first particle. 0129 * @param part2 The ParticleData pointer for the second particle. 0130 * @param part3 The ParticleData pointer for the third particle. 0131 */ 0132 virtual void setCoupling(Energy2 q2,tcPDPtr part1, 0133 tcPDPtr part2,tcPDPtr part3)=0; 0134 0135 /** 0136 * Dummy setCouplings for a four point interaction 0137 * This method is virtual and must be implemented in 0138 * classes inheriting from this. 0139 */ 0140 virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr,tcPDPtr) { 0141 assert(false); 0142 } 0143 //@} 0144 0145 /** 0146 * Get the couplings 0147 */ 0148 //@{ 0149 /** 0150 * Get the left coupling. 0151 */ 0152 Complex left() { return _left; } 0153 0154 /** 0155 * Get the right coupling. 0156 */ 0157 Complex right() { return _right; } 0158 //@} 0159 0160 protected: 0161 0162 /** 0163 * Set the couplings 0164 */ 0165 //@{ 0166 /** 0167 * Set the left coupling. 0168 */ 0169 void left(Complex in) { _left = in; } 0170 0171 /** 0172 * Set the right coupling. 0173 */ 0174 void right(Complex in) { _right = in; } 0175 //@} 0176 0177 private: 0178 0179 /** 0180 * Private and non-existent assignment operator. 0181 */ 0182 FFSVertex & operator=(const FFSVertex &) = delete; 0183 0184 private: 0185 0186 /** 0187 * Storage of the left coupling. 0188 */ 0189 Complex _left; 0190 0191 /** 0192 * Storage of the right coupling. 0193 */ 0194 Complex _right; 0195 0196 }; 0197 } 0198 0199 } 0200 #endif /* ThePEG_FFSVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|