00001
00002 #ifndef HELICITY_AbstractSSSVertex_H
00003 #define HELICITY_AbstractSSSVertex_H
00004
00005
00006
00007
00008 #include "VertexBase.h"
00009 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
00010 #include "AbstractSSSVertex.fh"
00011
00012 namespace ThePEG {
00013 namespace Helicity {
00014
00019 class AbstractSSSVertex: public VertexBase {
00020
00021 public:
00022
00026 AbstractSSSVertex() : VertexBase(VertexType::SSS) {}
00027
00040 virtual Complex evaluate(Energy2 q2,const ScalarWaveFunction & sca1,
00041 const ScalarWaveFunction & sca2,
00042 const ScalarWaveFunction & sca3) = 0;
00043
00056 virtual ScalarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00057 const ScalarWaveFunction & sca1,
00058 const ScalarWaveFunction & sca2,
00059 Energy mass=-GeV, Energy width=-GeV) = 0;
00061
00062 public:
00063
00070 static void Init();
00071
00072 private:
00073
00078 static AbstractNoPIOClassDescription<AbstractSSSVertex> initAbstractSSSVertex;
00079
00084 AbstractSSSVertex & operator=(const AbstractSSSVertex &);
00085
00086 };
00087
00088 }
00089 }
00090
00091 #include "ThePEG/Utilities/ClassTraits.h"
00092
00093 namespace ThePEG {
00094
00099 template <>
00100 struct BaseClassTrait<Helicity::AbstractSSSVertex,1> {
00102 typedef Helicity::VertexBase NthBase;
00103 };
00104
00107 template <>
00108 struct ClassTraits<Helicity::AbstractSSSVertex>
00109 : public ClassTraitsBase<Helicity::AbstractSSSVertex> {
00111 static string className() { return "Helicity::AbstractSSSVertex"; }
00112 };
00113
00116 }
00117
00118 #endif