00001
00002 #ifndef HELICITY_AbstractFFVVertex_H
00003 #define HELICITY_AbstractFFVVertex_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/VectorWaveFunction.h"
00012 #include "AbstractFFVVertex.fh"
00013
00014 namespace ThePEG {
00015 namespace Helicity {
00016
00021 class AbstractFFVVertex: public VertexBase {
00022
00023 public:
00024
00028 enum SmallAngleDirection {
00029 NegativeZDirection = -1,
00030 PostiveZDirection = 1
00031 };
00032
00033 public:
00034
00035
00039 AbstractFFVVertex() : VertexBase(VertexType::FFV) {}
00040
00053 virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
00054 const SpinorBarWaveFunction & sbar2,
00055 const VectorWaveFunction & vec3) = 0;
00056
00069 virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00070 const SpinorBarWaveFunction & sbar2,
00071 const VectorWaveFunction & vec3,
00072 Energy mass=-GeV, Energy width=-GeV) = 0;
00073
00086 virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00087 const SpinorWaveFunction & sp1,
00088 const SpinorBarWaveFunction & sbar2,
00089 Energy mass=-GeV, Energy width=-GeV) = 0;
00090
00103 virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00104 const SpinorWaveFunction & sp1,
00105 const VectorWaveFunction & vec3,
00106 Energy mass=-GeV, Energy width=-GeV) = 0;
00108
00141 virtual SpinorWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out,
00142 const SpinorWaveFunction & sp1,
00143 const VectorWaveFunction & vec3,
00144 unsigned int fhel, unsigned int vhel,
00145 double ctheta, double phi, double stheta,
00146 bool includeEikonal = true,
00147 SmallAngleDirection direction = PostiveZDirection,
00148 Energy mass=-GeV, Energy width=-GeV);
00149
00170 virtual SpinorBarWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out,
00171 const SpinorBarWaveFunction & sbar2,
00172 const VectorWaveFunction & vec3,
00173 unsigned int fhel, unsigned int vhel,
00174 double ctheta, double phi, double stheta,
00175 bool includeEikonal = true,
00176 SmallAngleDirection direction = PostiveZDirection,
00177 Energy mass=-GeV, Energy width=-GeV);
00179
00180 public:
00181
00188 static void Init();
00189
00190 private:
00191
00196 static AbstractNoPIOClassDescription<AbstractFFVVertex> initAbstractFFVVertex;
00197
00202 AbstractFFVVertex & operator=(const AbstractFFVVertex &);
00203
00204 };
00205
00206 }
00207 }
00208
00209 #include "ThePEG/Utilities/ClassTraits.h"
00210
00211 namespace ThePEG {
00212
00217 template <>
00218 struct BaseClassTrait<Helicity::AbstractFFVVertex,1> {
00220 typedef Helicity::VertexBase NthBase;
00221 };
00222
00225 template <>
00226 struct ClassTraits<Helicity::AbstractFFVVertex>
00227 : public ClassTraitsBase<Helicity::AbstractFFVVertex> {
00229 static string className() { return "Helicity::AbstractFFVVertex"; }
00230 };
00231
00234 }
00235
00236 #endif