00001
00002 #ifndef HELICITY_AbstractSSTVertex_H
00003 #define HELICITY_AbstractSSTVertex_H
00004
00005
00006
00007
00008 #include "VertexBase.h"
00009 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
00010 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h"
00011 #include "AbstractSSTVertex.fh"
00012
00013 namespace ThePEG {
00014 namespace Helicity {
00015
00020 class AbstractSSTVertex: public VertexBase {
00021
00022 public:
00023
00024
00028 AbstractSSTVertex() : VertexBase(VertexType::SST) {}
00029
00042 virtual Complex evaluate(Energy2 q2, const ScalarWaveFunction & sca1,
00043 const ScalarWaveFunction & sca2,
00044 const TensorWaveFunction & ten3) = 0;
00045
00058 virtual ScalarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00059 const ScalarWaveFunction & sca1,
00060 const TensorWaveFunction & ten3,
00061 Energy mass=-GeV, Energy width=-GeV) = 0;
00062
00075 virtual TensorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00076 const ScalarWaveFunction & sca1,
00077 const ScalarWaveFunction & sca2,
00078 Energy mass=-GeV, Energy width=-GeV) = 0;
00080
00081 public:
00082
00089 static void Init();
00090
00091 private:
00092
00097 static AbstractNoPIOClassDescription<AbstractSSTVertex> initAbstractSSTVertex;
00098
00103 AbstractSSTVertex & operator=(const AbstractSSTVertex &);
00104
00105 };
00106
00107 }
00108 }
00109
00110 #include "ThePEG/Utilities/ClassTraits.h"
00111
00112 namespace ThePEG {
00113
00118 template <>
00119 struct BaseClassTrait<Helicity::AbstractSSTVertex,1> {
00121 typedef Helicity::VertexBase NthBase;
00122 };
00123
00126 template <>
00127 struct ClassTraits<Helicity::AbstractSSTVertex>
00128 : public ClassTraitsBase<Helicity::AbstractSSTVertex> {
00130 static string className() { return "Helicity::AbstractSSTVertex"; }
00131 };
00132
00135 }
00136
00137 #endif