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