00001
00002 #ifndef HELICITY_AbstractVVSVertex_H
00003 #define HELICITY_AbstractVVSVertex_H
00004
00005
00006
00007
00008 #include "VertexBase.h"
00009 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
00010 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
00011 #include "AbstractVVSVertex.fh"
00012
00013 namespace ThePEG {
00014 namespace Helicity {
00015
00019 class AbstractVVSVertex: public VertexBase {
00020
00021 public:
00022
00023
00027 AbstractVVSVertex() : VertexBase(VertexType::VVS) {}
00028
00041 virtual Complex evaluate(Energy2 q2,const VectorWaveFunction & vec1,
00042 const VectorWaveFunction & vec2,
00043 const ScalarWaveFunction & sca3) = 0;
00044
00057 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00058 const VectorWaveFunction & vec2,
00059 const ScalarWaveFunction & sca3,
00060 Energy mass=-GeV, Energy width=-GeV) = 0;
00061
00074 virtual ScalarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00075 const VectorWaveFunction & vec1,
00076 const VectorWaveFunction & vec2,
00077 Energy mass=-GeV, Energy width=-GeV) = 0;
00079
00080 public:
00081
00088 static void Init();
00089
00090 private:
00091
00096 static AbstractNoPIOClassDescription<AbstractVVSVertex> initAbstractVVSVertex;
00097
00102 AbstractVVSVertex & operator=(const AbstractVVSVertex &);
00103
00104 };
00105
00106 }
00107 }
00108
00109 #include "ThePEG/Utilities/ClassTraits.h"
00110
00111 namespace ThePEG {
00112
00117 template <>
00118 struct BaseClassTrait<Helicity::AbstractVVSVertex,1> {
00120 typedef Helicity::VertexBase NthBase;
00121 };
00122
00125 template <>
00126 struct ClassTraits<Helicity::AbstractVVSVertex>
00127 : public ClassTraitsBase<Helicity::AbstractVVSVertex> {
00129 static string className() { return "Helicity::AbstractVVSVertex"; }
00130 };
00131
00134 }
00135
00136 #endif