00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_VVVVertex_H
00010 #define ThePEG_VVVVertex_H
00011
00012
00013
00014 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
00015 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
00016 #include "VVVVertex.fh"
00017
00018 namespace ThePEG {
00019 namespace Helicity{
00020
00039 class VVVVertex: public AbstractVVVVertex {
00040
00041 public:
00042
00046 static void Init();
00047
00048 public:
00049
00062 Complex evaluate(Energy2 q2, const VectorWaveFunction & vec1,
00063 const VectorWaveFunction & vec2, const VectorWaveFunction & vec3);
00064
00077 VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00078 const VectorWaveFunction & vec2,
00079 const VectorWaveFunction & vec3,
00080 Energy mass=-GeV, Energy width=-GeV);
00082
00091 virtual void setCoupling(Energy2 q2,tcPDPtr part1,
00092 tcPDPtr part2,tcPDPtr part3)=0;
00093
00094 private:
00095
00099 static AbstractNoPIOClassDescription<VVVVertex> initVVVVertex;
00100
00104 VVVVertex & operator=(const VVVVertex &);
00105
00106 };
00107
00108 }
00109
00116 template <>
00117 struct BaseClassTrait<ThePEG::Helicity::VVVVertex,1> {
00119 typedef ThePEG::Helicity::AbstractVVVVertex NthBase;
00120 };
00121
00126 template <>
00127 struct ClassTraits<ThePEG::Helicity::VVVVertex>
00128 : public ClassTraitsBase<ThePEG::Helicity::VVVVertex> {
00129
00133 static string className() { return "ThePEG::VVVVertex"; }
00134 };
00135
00138 }
00139
00140
00141 #endif