00001 // -*- C++ -*- 00002 #ifndef HELICITY_AbstractVVVVVertex_H 00003 #define HELICITY_AbstractVVVVVertex_H 00004 // 00005 // This is the declaration of the AbstractVVVVVertex class. 00006 // 00007 00008 #include "VertexBase.h" 00009 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" 00010 #include "AbstractVVVVVertex.fh" 00011 00012 namespace ThePEG { 00013 namespace Helicity { 00014 00019 class AbstractVVVVVertex: public VertexBase { 00020 00021 public: 00022 00026 AbstractVVVVVertex() : VertexBase(VertexType::VVVV) {} 00027 00043 virtual Complex evaluate(Energy2 q2, int iopt, 00044 const VectorWaveFunction & vec1, 00045 const VectorWaveFunction & vec2, 00046 const VectorWaveFunction & vec3, 00047 const VectorWaveFunction & vec4) = 0; 00049 00050 public: 00051 00058 static void Init(); 00059 00060 private: 00061 00066 static AbstractNoPIOClassDescription<AbstractVVVVVertex> initAbstractVVVVVertex; 00067 00072 AbstractVVVVVertex & operator=(const AbstractVVVVVertex &); 00073 00074 }; 00075 00076 } 00077 } 00078 00079 #include "ThePEG/Utilities/ClassTraits.h" 00080 00081 namespace ThePEG { 00082 00087 template <> 00088 struct BaseClassTrait<Helicity::AbstractVVVVVertex,1> { 00090 typedef Helicity::VertexBase NthBase; 00091 }; 00092 00095 template <> 00096 struct ClassTraits<Helicity::AbstractVVVVVertex> 00097 : public ClassTraitsBase<Helicity::AbstractVVVVVertex> { 00099 static string className() { return "Helicity::AbstractVVVVVertex"; } 00100 }; 00101 00104 } 00105 00106 #endif /* HELICITY_AbstractVVVVVertex_H */