00001
00002 #ifndef HELICITY_AbstractVVVVertex_H
00003 #define HELICITY_AbstractVVVVertex_H
00004
00005
00006
00007
00008 #include "VertexBase.h"
00009 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
00010 #include "AbstractVVVVertex.fh"
00011
00012 namespace ThePEG {
00013 namespace Helicity {
00014
00019 class AbstractVVVVertex: public VertexBase {
00020
00021 public:
00022
00026 AbstractVVVVertex() : VertexBase(VertexType::VVV) {}
00027
00040 virtual Complex evaluate(Energy2 q2, const VectorWaveFunction & vec1,
00041 const VectorWaveFunction & vec2,
00042 const VectorWaveFunction & vec3) = 0;
00043
00056 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00057 const VectorWaveFunction & vec2,
00058 const VectorWaveFunction & vec3,
00059 Energy mass=-GeV, Energy width=-GeV) = 0;
00061
00062 public:
00063
00070 static void Init();
00071
00072 private:
00073
00078 static AbstractNoPIOClassDescription<AbstractVVVVertex> initAbstractVVVVertex;
00079
00084 AbstractVVVVertex & operator=(const AbstractVVVVertex &);
00085
00086 };
00087
00088 }
00089 }
00090
00091 #include "ThePEG/Utilities/ClassTraits.h"
00092
00093 namespace ThePEG {
00094
00099 template <>
00100 struct BaseClassTrait<Helicity::AbstractVVVVertex,1> {
00102 typedef Helicity::VertexBase NthBase;
00103 };
00104
00107 template <>
00108 struct ClassTraits<Helicity::AbstractVVVVertex>
00109 : public ClassTraitsBase<Helicity::AbstractVVVVertex> {
00111 static string className() { return "Helicity::AbstractVVVVertex"; }
00112 };
00113
00116 }
00117
00118 #endif