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