00001
00002 #ifndef HELICITY_AbstractVSSVertex_H
00003 #define HELICITY_AbstractVSSVertex_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 "AbstractVSSVertex.fh"
00012
00013 namespace ThePEG {
00014 namespace Helicity {
00015
00020 class AbstractVSSVertex: public VertexBase {
00021
00022 public:
00023
00027 AbstractVSSVertex() : VertexBase(VertexType::VSS) {}
00028
00041 virtual Complex evaluate(Energy2 q2,const VectorWaveFunction & vec1,
00042 const ScalarWaveFunction & sca2,
00043 const ScalarWaveFunction & sca3) = 0;
00044
00057 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00058 const ScalarWaveFunction & sca2,
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 ScalarWaveFunction & sca2,
00077 Energy mass=-GeV, Energy width=-GeV) = 0;
00079
00080 public:
00081
00088 static void Init();
00089
00090 private:
00091
00096 static AbstractNoPIOClassDescription<AbstractVSSVertex> initAbstractVSSVertex;
00097
00102 AbstractVSSVertex & operator=(const AbstractVSSVertex &);
00103
00104 };
00105
00106 }
00107 }
00108
00109 #include "ThePEG/Utilities/ClassTraits.h"
00110
00111 namespace ThePEG {
00112
00117 template <>
00118 struct BaseClassTrait<Helicity::AbstractVSSVertex,1> {
00120 typedef Helicity::VertexBase NthBase;
00121 };
00122
00125 template <>
00126 struct ClassTraits<Helicity::AbstractVSSVertex>
00127 : public ClassTraitsBase<Helicity::AbstractVSSVertex> {
00129 static string className() { return "Helicity::AbstractVSSVertex"; }
00130 };
00131
00134 }
00135
00136 #endif