00001
00002 #ifndef HELICITY_AbstractVVSSVertex_H
00003 #define HELICITY_AbstractVVSSVertex_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 "AbstractVVSSVertex.fh"
00012
00013 namespace ThePEG {
00014 namespace Helicity {
00015
00020 class AbstractVVSSVertex: public VertexBase {
00021
00022 public:
00023
00027 AbstractVVSSVertex() : VertexBase(VertexType::VVSS) {}
00028
00042 virtual Complex evaluate(Energy2 q2, const VectorWaveFunction & vec1,
00043 const VectorWaveFunction & vec2,
00044 const ScalarWaveFunction & sca3,
00045 const ScalarWaveFunction & sca4) = 0;
00046
00060 virtual VectorWaveFunction evaluate(Energy2 q2, int iopt,tcPDPtr out,
00061 const VectorWaveFunction & vec2,
00062 const ScalarWaveFunction & sca3,
00063 const ScalarWaveFunction & sca4,
00064 Energy mass=-GeV, Energy width=-GeV) = 0;
00065
00079 virtual ScalarWaveFunction evaluate(Energy2 q2, int iopt,tcPDPtr out,
00080 const VectorWaveFunction & vec1,
00081 const VectorWaveFunction & vec2,
00082 const ScalarWaveFunction & sca3,
00083 Energy mass=-GeV, Energy width=-GeV) = 0;
00085
00086 public:
00087
00094 static void Init();
00095
00096 private:
00097
00102 static AbstractNoPIOClassDescription<AbstractVVSSVertex> initAbstractVVSSVertex;
00103
00108 AbstractVVSSVertex & operator=(const AbstractVVSSVertex &);
00109
00110 };
00111
00112 }
00113 }
00114
00115 #include "ThePEG/Utilities/ClassTraits.h"
00116
00117 namespace ThePEG {
00118
00123 template <>
00124 struct BaseClassTrait<Helicity::AbstractVVSSVertex,1> {
00126 typedef Helicity::VertexBase NthBase;
00127 };
00128
00131 template <>
00132 struct ClassTraits<Helicity::AbstractVVSSVertex>
00133 : public ClassTraitsBase<Helicity::AbstractVVSSVertex> {
00135 static string className() { return "Helicity::AbstractVVSSVertex"; }
00136 };
00137
00140 }
00141
00142 #endif