|
|
|||
File indexing completed on 2026-08-06 09:38:23
0001 // -*- C++ -*- 0002 // 0003 // VVVSVertex.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_VVVSVertex_H 0010 #define ThePEG_VVVSVertex_H 0011 // 0012 // This is the declaration of the VVVSVertex class. 0013 0014 #include "ThePEG/Helicity/Vertex/AbstractVVVSVertex.h" 0015 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 0016 #include "VVVSVertex.fh" 0017 0018 namespace ThePEG { 0019 namespace Helicity{ 0020 0021 /** \ingroup Helicity 0022 * 0023 * The VVVSVertex class is the base class for triple vector scalar vertices. 0024 * It inherits from the AbstractVVVSVertex class for the storage of the 0025 * particles allowed at the vertex. Given this vertice has dimenison 0026 * 5 the two forms possible for either a scalar or pseudoscalar particle. 0027 * 0028 * Classes which implement a specific vertex should inherit from this and 0029 * implement the virtual setCoupling member. 0030 * 0031 * The form of the vertex is 0032 * \f[ig\left[ (p_1-p_2)^\gamma g^{\alpha\beta } 0033 * +(p_2-p_3)^\alpha g^{\beta \gamma} 0034 * +(p_3-p_1)^\beta g^{\alpha\gamma} 0035 * \right]\epsilon_{1\alpha}\epsilon_{2\beta}\epsilon_{3\gamma}\f] 0036 * for a scalar particle and 0037 * \f[ig\epsilon^{\delta\alpha\beta\gamma}\epsilon_{1\alpha}\epsilon_{2\beta}\epsilon_{3\gamma} 0038 * (p_1+p_2+p_3)_\delta\f] 0039 * @see AbstractVVVSVertex 0040 */ 0041 class VVVSVertex: public AbstractVVVSVertex { 0042 0043 public : 0044 0045 /** 0046 * Default constructor 0047 */ 0048 VVVSVertex() : scalar_(true) {} 0049 0050 public: 0051 0052 /** @name Functions used by the persistent I/O system. */ 0053 //@{ 0054 /** 0055 * Function used to write out object persistently. 0056 * @param os the persistent output stream written to. 0057 */ 0058 void persistentOutput(PersistentOStream & os) const; 0059 0060 /** 0061 * Function used to read in object persistently. 0062 * @param is the persistent input stream read from. 0063 * @param version the version number of the object when written. 0064 */ 0065 void persistentInput(PersistentIStream & is, int version); 0066 //@} 0067 0068 /** 0069 * Standard Init function used to initialize the interfaces. 0070 */ 0071 static void Init(); 0072 0073 public: 0074 0075 /** 0076 * Members to calculate the helicity amplitude expressions for vertices 0077 * and off-shell particles. 0078 */ 0079 //@{ 0080 /** 0081 * Evaluate the vertex. 0082 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0083 * @param vec1 The wavefunction for the first vector. 0084 * @param vec2 The wavefunction for the second vector. 0085 * @param vec3 The wavefunction for the third vector. 0086 * @param sca The wavefunction for the scalar particle 0087 */ 0088 Complex evaluate(Energy2 q2, const VectorWaveFunction & vec1, 0089 const VectorWaveFunction & vec2, 0090 const VectorWaveFunction & vec3, 0091 const ScalarWaveFunction & sca); 0092 0093 /** 0094 * Evaluate the off-shell vector coming from the vertex. 0095 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0096 * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. 0097 * @param out The ParticleData pointer for the off-shell vector. 0098 * @param vec2 The wavefunction for the second vector. 0099 * @param vec3 The wavefunction for the third vector. 0100 * @param sca The wavefunction for the scalar particle 0101 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0102 * object 0103 * @param width The width of the off-shell particle if not taken from the ParticleData 0104 * object 0105 */ 0106 VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out, 0107 const VectorWaveFunction & vec2, 0108 const VectorWaveFunction & vec3, 0109 const ScalarWaveFunction & sca, 0110 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0111 0112 /** 0113 * Evaluate the off-shell scalar coming from the vertex. 0114 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0115 * @param iopt Option of the shape of the Breit-Wigner for the off-shell scalar. 0116 * @param out The ParticleData pointer for the off-shell scalar. 0117 * @param vec1 The wavefunction for the first vector. 0118 * @param vec2 The wavefunction for the second vector. 0119 * @param vec3 The wavefunction for the third vector. 0120 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0121 * object 0122 * @param width The width of the off-shell particle if not taken from the ParticleData 0123 * object 0124 */ 0125 ScalarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out, 0126 const VectorWaveFunction & vec1, 0127 const VectorWaveFunction & vec2, 0128 const VectorWaveFunction & vec3, 0129 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0130 //@} 0131 0132 /** 0133 * Set coupling methods 0134 */ 0135 //@{ 0136 /** 0137 * Calculate the couplings for a three point interaction. 0138 * This method is virtual and must be implemented in 0139 * classes inheriting from this. 0140 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0141 * @param part1 The ParticleData pointer for the first vector. 0142 * @param part2 The ParticleData pointer for the second vector. 0143 * @param part3 The ParticleData pointer for the third vector. 0144 * @param part4 The ParticleData pointer for the scalar 0145 */ 0146 virtual void setCoupling(Energy2 q2,tcPDPtr part1, 0147 tcPDPtr part2,tcPDPtr part3, 0148 tcPDPtr part4)=0; 0149 0150 /** 0151 * Dummy setCouplings for a three point interaction 0152 * This method is virtual and must be implemented in 0153 * classes inheriting from this. 0154 */ 0155 virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr) { 0156 assert(false); 0157 } 0158 //@} 0159 0160 protected: 0161 0162 /** 0163 * Set the type of the vertex 0164 */ 0165 void scalar(bool in) {scalar_=in;} 0166 0167 private: 0168 0169 /** 0170 * Private and non-existent assignment operator. 0171 */ 0172 VVVSVertex & operator=(const VVVSVertex &) = delete; 0173 0174 /** 0175 * Whether or ont the vertex has a scalar or pseudoscalr particle 0176 */ 0177 bool scalar_; 0178 0179 }; 0180 0181 } 0182 } 0183 0184 #endif /* ThePEG_VVVSVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|