00001
00002 #ifndef HELICITY_AbstractFFTVertex_H
00003 #define HELICITY_AbstractFFTVertex_H
00004
00005
00006
00007
00008 #include "VertexBase.h"
00009 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
00010 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
00011 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h"
00012 #include "AbstractFFTVertex.fh"
00013
00014 namespace ThePEG {
00015 namespace Helicity {
00016
00021 class AbstractFFTVertex: public VertexBase {
00022
00023 public:
00024
00025
00029 AbstractFFTVertex() : VertexBase(VertexType::FFT) {}
00030
00043 virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
00044 const SpinorBarWaveFunction & sbar2,
00045 const TensorWaveFunction & ten3) = 0;
00046
00059 virtual TensorWaveFunction evaluate(Energy2 q2, int iopt,tcPDPtr out,
00060 const SpinorWaveFunction & sp1,
00061 const SpinorBarWaveFunction & sbar2,
00062 Energy mass=-GeV, Energy width=-GeV) = 0;
00063
00076 virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00077 const SpinorWaveFunction & sp1,
00078 const TensorWaveFunction & ten3,
00079 Energy mass=-GeV, Energy width=-GeV) = 0;
00080
00093 virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
00094 const SpinorBarWaveFunction & sbar2,
00095 const TensorWaveFunction& ten3,
00096 Energy mass=-GeV, Energy width=-GeV) = 0;
00098
00099 public:
00100
00107 static void Init();
00108
00109 private:
00110
00115 static AbstractNoPIOClassDescription<AbstractFFTVertex> initAbstractFFTVertex;
00116
00121 AbstractFFTVertex & operator=(const AbstractFFTVertex &);
00122
00123 };
00124
00125 }
00126 }
00127
00128 #include "ThePEG/Utilities/ClassTraits.h"
00129
00130 namespace ThePEG {
00131
00136 template <>
00137 struct BaseClassTrait<Helicity::AbstractFFTVertex,1> {
00139 typedef Helicity::VertexBase NthBase;
00140 };
00141
00144 template <>
00145 struct ClassTraits<Helicity::AbstractFFTVertex>
00146 : public ClassTraitsBase<Helicity::AbstractFFTVertex> {
00148 static string className() { return "Helicity::AbstractFFTVertex"; }
00149 };
00150
00153 }
00154
00155 #endif