00001
00002 #ifndef HELICITY_AbstractFFVTVertex_H
00003 #define HELICITY_AbstractFFVTVertex_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 "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
00012 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
00013 #include "AbstractFFVTVertex.fh"
00014
00015 namespace ThePEG {
00016 namespace Helicity {
00017
00022 class AbstractFFVTVertex: public VertexBase {
00023
00024 public:
00025
00026
00030 AbstractFFVTVertex() : VertexBase(VertexType::FFVT) {}
00031
00045 virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
00046 const SpinorBarWaveFunction & sbar2,
00047 const VectorWaveFunction & vec3,
00048 const TensorWaveFunction & ten4) = 0;
00049
00063 virtual TensorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00064 const SpinorWaveFunction & sp1,
00065 const SpinorBarWaveFunction & sbar2,
00066 const VectorWaveFunction & vec3,
00067 Energy mass=-GeV, Energy width=-GeV) = 0;
00068
00082 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00083 const SpinorWaveFunction & sp1,
00084 const SpinorBarWaveFunction & sbar2,
00085 const TensorWaveFunction & ten4,
00086 Energy mass=-GeV, Energy width=-GeV) = 0;
00087
00101 virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00102 const SpinorWaveFunction & sp1,
00103 const VectorWaveFunction & vec3,
00104 const TensorWaveFunction & ten4,
00105 Energy mass=-GeV, Energy width=-GeV) = 0;
00106
00120 virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00121 const SpinorBarWaveFunction & sbar2,
00122 const VectorWaveFunction & vec3,
00123 const TensorWaveFunction & ten4,
00124 Energy mass=-GeV, Energy width=-GeV) = 0;
00126
00127 public:
00128
00135 static void Init();
00136
00137 private:
00138
00143 static AbstractNoPIOClassDescription<AbstractFFVTVertex> initAbstractFFVTVertex;
00144
00149 AbstractFFVTVertex & operator=(const AbstractFFVTVertex &);
00150
00151 };
00152
00153 }
00154 }
00155
00156 #include "ThePEG/Utilities/ClassTraits.h"
00157
00158 namespace ThePEG {
00159
00164 template <>
00165 struct BaseClassTrait<Helicity::AbstractFFVTVertex,1> {
00167 typedef Helicity::VertexBase NthBase;
00168 };
00169
00172 template <>
00173 struct ClassTraits<Helicity::AbstractFFVTVertex>
00174 : public ClassTraitsBase<Helicity::AbstractFFVTVertex> {
00176 static string className() { return "Helicity::AbstractFFVTVertex"; }
00177 };
00178
00181 }
00182
00183 #endif