|
|
|||
File indexing completed on 2026-08-06 09:38:23
0001 // -*- C++ -*- 0002 // 0003 // VVVTVertex.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_VVVTVertex_H 0010 #define ThePEG_VVVTVertex_H 0011 // 0012 // This is the declaration of the VVVTVertex class. 0013 // 0014 #include "ThePEG/Helicity/Vertex/AbstractVVVTVertex.h" 0015 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 0016 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" 0017 #include "VVVTVertex.fh" 0018 0019 namespace ThePEG { 0020 namespace Helicity { 0021 0022 /** \ingroup Helicity 0023 * 0024 * The VVTVertex class is the implementation of the 0025 * vector-vector-vector-tensor vertex. 0026 * It inherits from the AbstractVVVTVertex class for the storage of the particles 0027 * interacting at the vertex and implements the helicity amplitude calculations. 0028 * 0029 * All implementations of this vertex should inherit from it and implement the 0030 * virtual setCoupling member. 0031 * 0032 * The vertex has the form 0033 * \f[ 0034 * g\frac\kappa2f^{abc}\left[ 0035 * C_{\mu\nu,\rho\sigma}(k_1-k_2)_\lambda+C_{\mu\nu,\rho\lambda}(k_3-k_1)_\sigma 0036 * +C_{\mu\nu,\sigma\lambda}(k_2-k_3)_\rho+F_{\mu\nu,\rho\sigma\lambda} 0037 * \right]\epsilon_1^\rho\epsilon^\sigma_2\epsilon^\lambda_3 0038 * \epsilon^{\mu\nu}_4 0039 * \f] 0040 * where 0041 * -\f$C_{\mu\nu,\rho\sigma}=g_{\mu\rho}g_{\nu\sigma}+g_{\mu\sigma}g_{\nu\rho} 0042 * -g_{\mu\nu}g_{\rho\sigma}\f$ 0043 * -\f$F_{\mu\nu,\rho\sigma\lambda} = 0044 * g_{\mu\rho}g_{\sigma\lambda}(k_2-k_3)_\nu 0045 * +g_{\mu\sigma}g_{\rho\lambda}(k_3-k_1)_\nu 0046 * +g_{\mu\lambda}g_{\rho\sigma}(k_1-k_2)_\nu+(\mu\leftrightarrow\nu) 0047 * \f$ 0048 * 0049 * @see AbstractVVVTVertex 0050 */ 0051 class VVVTVertex: public AbstractVVVTVertex { 0052 0053 public: 0054 0055 /** 0056 * Standard Init function used to initialize the interfaces. 0057 */ 0058 static void Init(); 0059 0060 public: 0061 0062 /** 0063 * Members to calculate the helicity amplitude expressions for vertices 0064 * and off-shell particles. 0065 */ 0066 //@{ 0067 /** 0068 * Evalulate the vertex. 0069 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0070 * @param vec1 The wavefunction for the first vector. 0071 * @param vec2 The wavefunction for the second vector. 0072 * @param vec3 The wavefunction for the third vector. 0073 * @param ten4 The wavefunction for the tensor. 0074 */ 0075 Complex evaluate(Energy2 q2,const VectorWaveFunction & vec1, 0076 const VectorWaveFunction & vec2, 0077 const VectorWaveFunction & vec3, const TensorWaveFunction & ten4); 0078 0079 /** 0080 * Evaluate the off-shell tensor 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 tensor. 0083 * @param out The ParticleData pointer for the off-shell tensor. 0084 * @param vec1 The wavefunction for the first vector. 0085 * @param vec2 The wavefunction for the second vector. 0086 * @param vec3 The wavefunction for the third 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 TensorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out, 0093 const VectorWaveFunction & vec1, 0094 const VectorWaveFunction & vec2, 0095 const VectorWaveFunction & vec3, 0096 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0097 0098 /** 0099 * Evaluate the off-shell vector coming from the vertex. 0100 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0101 * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. 0102 * @param out The ParticleData pointer for the off-shell vector. 0103 * @param vec1 The wavefunction for the first vector. 0104 * @param vec2 The wavefunction for the second vector. 0105 * @param ten4 The wavefunction for the tensor. 0106 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0107 * object 0108 * @param width The width of the off-shell particle if not taken from the ParticleData 0109 * object 0110 */ 0111 VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out, 0112 const VectorWaveFunction & vec1, 0113 const VectorWaveFunction & vec2, 0114 const TensorWaveFunction & ten4, 0115 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0116 //@} 0117 0118 /** 0119 * Set coupling methods 0120 */ 0121 //@{ 0122 /** 0123 * Dummy for a three point interaction. 0124 */ 0125 virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr) { 0126 assert(false); 0127 } 0128 0129 /** 0130 * Calculate the couplings for a four point interaction. 0131 * This method is virtual and must be implemented in 0132 * classes inheriting from this. 0133 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0134 * @param part1 The ParticleData pointer for the first particle. 0135 * @param part2 The ParticleData pointer for the second particle. 0136 * @param part3 The ParticleData pointer for the third particle. 0137 * @param part4 The ParticleData pointer for the fourth particle. 0138 */ 0139 virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, 0140 tcPDPtr part4)=0; 0141 //@} 0142 0143 private: 0144 0145 /** 0146 * Private and non-existent assignment operator. 0147 */ 0148 VVVTVertex & operator=(const VVVTVertex &) = delete; 0149 0150 }; 0151 0152 } 0153 0154 } 0155 #endif /* ThePEG_VVVTVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|