|
|
|||
File indexing completed on 2026-08-06 09:38:23
0001 // -*- C++ -*- 0002 #ifndef HELICITY_GeneralVVSVertex_H 0003 #define HELICITY_GeneralVVSVertex_H 0004 // 0005 // This is the declaration of the GeneralVVSVertex class. 0006 // 0007 0008 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" 0009 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" 0010 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 0011 #include "GeneralVVSVertex.fh" 0012 0013 namespace ThePEG { 0014 namespace Helicity { 0015 0016 using namespace ThePEG; 0017 0018 /** 0019 * The GeneralVVSVertex class implements a 0020 * general Vector-Vector-Scalar vertex allowing for decay modes 0021 * that only enter at the one-loop level 0022 * 0023 * The loop integral is calculated by Passarino-Veltman reduction 0024 * and the coefficients are stored here. They must be calculated 0025 * in the inheriting class along with implementation of the 0026 * setCoupling member. 0027 * 0028 * The vertex takes the form 0029 * \f[ a_{00}g^{\mu\nu}p_1\cdot p_2 + a_{11}p_1^\mu p_1^\nu 0030 * + a_{12}p_1^\mu p_2^\nu + a_{21}p_2^\mu p_1^\nu 0031 * + a_{22}p_2^\mu p_2^\nu +a_e\epsilon^{p_1 \mu \nu p_2}\f] 0032 * 0033 */ 0034 class GeneralVVSVertex: public AbstractVVSVertex { 0035 0036 public: 0037 0038 /** 0039 * The default constructor. 0040 */ 0041 GeneralVVSVertex() : _a00(1), 0042 _a11(0), _a12(0), 0043 _a21(0), _a22(0), 0044 _aEp(0) 0045 {} 0046 0047 /** 0048 * The standard Init function used to initialize the interfaces. 0049 * Called exactly once for each class by the class description system 0050 * before the main function starts or 0051 * when this class is dynamically loaded. 0052 */ 0053 static void Init(); 0054 0055 public: 0056 0057 /** 0058 * Members to calculate the helicity amplitude expressions for vertices 0059 * and off-shell particles. 0060 */ 0061 //@{ 0062 /** 0063 * Evaluate the vertex. 0064 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0065 * @param vec1 The wavefunction for the first vector. 0066 * @param vec2 The wavefunction for the second vector. 0067 * @param sca3 The wavefunction for the scalar. 0068 */ 0069 virtual Complex evaluate(Energy2 q2,const VectorWaveFunction & vec1, 0070 const VectorWaveFunction & vec2, 0071 const ScalarWaveFunction & sca3); 0072 0073 /** 0074 * Evaluate the off-shell vector coming from the vertex. 0075 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0076 * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. 0077 * @param out The ParticleData pointer for the off-shell vector. 0078 * @param vec2 The wavefunction for the vector. 0079 * @param sca3 The wavefunction for the scalar. 0080 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0081 * object 0082 * @param width The width of the off-shell particle if not taken from the ParticleData 0083 * object 0084 */ 0085 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out, 0086 const VectorWaveFunction & vec2, 0087 const ScalarWaveFunction & sca3, 0088 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0089 0090 /** 0091 * Evaluate the off-shell scalar coming from the vertex. 0092 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0093 * @param iopt Option of the shape of the Breit-Wigner for the off-shell scalar. 0094 * @param out The ParticleData pointer for the off-shell scalar. 0095 * @param vec1 The wavefunction for the first vector. 0096 * @param vec2 The wavefunction for the second vector. 0097 * @param mass The mass of the off-shell particle if not taken from the ParticleData 0098 * object 0099 * @param width The width of the off-shell particle if not taken from the ParticleData 0100 * object 0101 */ 0102 virtual ScalarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out, 0103 const VectorWaveFunction & vec1, 0104 const VectorWaveFunction & vec2, 0105 complex<Energy> mass=-GeV, complex<Energy> width=-GeV); 0106 //@} 0107 0108 /** 0109 * Set coupling methods 0110 */ 0111 //@{ 0112 /** 0113 * Calculate the couplings for a three point interaction. 0114 * This method is virtual and must be implemented in 0115 * classes inheriting from this. 0116 * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. 0117 * @param part1 The ParticleData pointer for the first particle. 0118 * @param part2 The ParticleData pointer for the second particle. 0119 * @param part3 The ParticleData pointer for the third particle. 0120 */ 0121 virtual void setCoupling(Energy2 q2,tcPDPtr part1, 0122 tcPDPtr part2,tcPDPtr part3)=0; 0123 0124 /** 0125 * Dummy setCouplings for a four point interaction 0126 * This method is virtual and must be implemented in 0127 * classes inheriting from this. 0128 */ 0129 virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr,tcPDPtr) { 0130 assert(false); 0131 } 0132 //@} 0133 0134 public: 0135 0136 /**@name Set and Get tensor coefficients.*/ 0137 //@{ 0138 /** 0139 * Access coefficient of \f$g^{\mu\nu}\f$ 0140 */ 0141 Complex a00() const {return _a00;} 0142 0143 /** 0144 * Access coefficient of \f$p_1^\mu p_1^\nu\f$ 0145 */ 0146 Complex a11() const {return _a11;} 0147 0148 /** 0149 * Access coefficient of \f$p_1^\mu p_2^\nu\f$ 0150 */ 0151 Complex a12() const {return _a12;} 0152 0153 /** 0154 * Access coefficient of \f$p_2^\mu p_1^\nu\f$ 0155 */ 0156 Complex a21() const {return _a21;} 0157 0158 /** 0159 * Access coefficient of \f$p_2^\mu p_2^\nu\f$ 0160 */ 0161 Complex a22() const {return _a22;} 0162 0163 /** 0164 * Access coefficient of \f$\epsilon^{\mu\nu\alpha\beta}p_1\alpha p_2\beta\f$ 0165 */ 0166 Complex aEp() const {return _aEp;} 0167 0168 /** 0169 * Set tensor coefficient of \f$g^{\mu\nu}\f$ 0170 */ 0171 void a00(const Complex & val) {_a00 = val;} 0172 0173 /** 0174 * Set tensor coefficient of \f$p_1^\mu p_1^\nu\f$ 0175 */ 0176 void a11(const Complex & val) {_a11 = val;} 0177 0178 /** 0179 * Set tensor coefficient of \f$p_1^\mu p_2^\nu\f$ 0180 */ 0181 void a12(const Complex & val) {_a12 = val;} 0182 0183 /** 0184 * Set tensor coefficient of \f$p_2^\mu p_1^\nu\f$ 0185 */ 0186 void a21(const Complex & val) {_a21 = val;} 0187 0188 /** 0189 * Set tensor coefficient of \f$p_2^\mu p_2^\nu\f$ 0190 */ 0191 void a22(const Complex & val) {_a22 = val;} 0192 0193 /** 0194 * Set tensor coefficient of \f$\epsilon^{\mu\nu\alpha\beta}p_1\alpha p_2\beta\f$ 0195 */ 0196 void aEp(const Complex & val) {_aEp = val;} 0197 //@} 0198 0199 private: 0200 0201 /** 0202 * The assignment operator is private and must never be called. 0203 * In fact, it should not even be implemented. 0204 */ 0205 GeneralVVSVertex & operator=(const GeneralVVSVertex &) = delete; 0206 0207 0208 private: 0209 0210 /** @name Store tensor coefficients.*/ 0211 //@{ 0212 /** 0213 * Coefficient of \f$g^{\mu\nu}\f$ 0214 */ 0215 Complex _a00; 0216 0217 /** 0218 * Coefficient of \f$p_1^\mu p_1^\nu\f$ 0219 */ 0220 Complex _a11; 0221 0222 /** 0223 * Coefficient of \f$p_1^\mu p_2^\nu\f$ 0224 */ 0225 Complex _a12; 0226 0227 /** 0228 * Coefficient of \f$p_2^\mu p_1^\nu\f$ 0229 */ 0230 Complex _a21; 0231 0232 /** 0233 * Coefficient of \f$p_2^\mu p_2^\nu\f$ 0234 */ 0235 Complex _a22; 0236 0237 /** 0238 * Coefficient of \f$\epsilon^{\mu\nu\alpha\beta}p_1\alpha p_2\beta\f$ 0239 */ 0240 Complex _aEp; 0241 //@} 0242 }; 0243 0244 } 0245 } 0246 #endif /* HELICITY_GeneralVVSVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|