00001
00002 #ifndef HELICITY_GeneralVVSVertex_H
00003 #define HELICITY_GeneralVVSVertex_H
00004
00005
00006
00007
00008 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
00009 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
00010 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
00011 #include "GeneralVVSVertex.fh"
00012
00013 namespace ThePEG {
00014 namespace Helicity {
00015
00016 using namespace ThePEG;
00017
00034 class GeneralVVSVertex: public AbstractVVSVertex {
00035
00036 public:
00037
00041 GeneralVVSVertex() : _a00(1),
00042 _a11(0), _a12(0),
00043 _a21(0), _a22(0),
00044 _aEp(0)
00045 {}
00046
00053 static void Init();
00054
00055 public:
00056
00069 virtual Complex evaluate(Energy2 q2,const VectorWaveFunction & vec1,
00070 const VectorWaveFunction & vec2,
00071 const ScalarWaveFunction & sca3);
00072
00085 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00086 const VectorWaveFunction & vec2,
00087 const ScalarWaveFunction & sca3,
00088 Energy mass=-GeV, Energy width=-GeV);
00089
00102 virtual ScalarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00103 const VectorWaveFunction & vec1,
00104 const VectorWaveFunction & vec2,
00105 Energy mass=-GeV, Energy width=-GeV);
00107
00115 virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,
00116 tcPDPtr part3)=0;
00117
00118 public:
00119
00125 Complex a00() const {return _a00;}
00126
00130 Complex a11() const {return _a11;}
00131
00135 Complex a12() const {return _a12;}
00136
00140 Complex a21() const {return _a21;}
00141
00145 Complex a22() const {return _a22;}
00146
00150 Complex aEp() const {return _aEp;}
00151
00155 void a00(const Complex & val) {_a00 = val;}
00156
00160 void a11(const Complex & val) {_a11 = val;}
00161
00165 void a12(const Complex & val) {_a12 = val;}
00166
00170 void a21(const Complex & val) {_a21 = val;}
00171
00175 void a22(const Complex & val) {_a22 = val;}
00176
00180 void aEp(const Complex & val) {_aEp = val;}
00182
00183 private:
00184
00189 static AbstractNoPIOClassDescription<GeneralVVSVertex> initGeneralVVSVertex;
00190
00195 GeneralVVSVertex & operator=(const GeneralVVSVertex &);
00196
00197
00198 private:
00199
00205 Complex _a00;
00206
00210 Complex _a11;
00211
00215 Complex _a12;
00216
00220 Complex _a21;
00221
00225 Complex _a22;
00226
00230 Complex _aEp;
00232 };
00233
00234 }
00235 }
00236
00237 #include "ThePEG/Utilities/ClassTraits.h"
00238
00239 namespace ThePEG {
00240
00245 template <>
00246 struct BaseClassTrait<Helicity::GeneralVVSVertex,1> {
00248 typedef Helicity::AbstractVVSVertex NthBase;
00249 };
00250
00253 template <>
00254 struct ClassTraits<Helicity::GeneralVVSVertex>
00255 : public ClassTraitsBase<Helicity::GeneralVVSVertex> {
00257 static string className() { return "Helicity::GeneralVVSVertex"; }
00258 };
00259
00262 }
00263
00264 #endif