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