00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_FFVVertex_H
00010 #define ThePEG_FFVVertex_H
00011
00012
00013
00014 #include <ThePEG/Helicity/Vertex/AbstractFFVVertex.h>
00015 #include <ThePEG/Helicity/WaveFunction/VectorWaveFunction.h>
00016 #include <ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h>
00017 #include <ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h>
00018 #include "FFVVertex.fh"
00019
00020 namespace ThePEG {
00021
00022 namespace Helicity{
00023
00039 class FFVVertex: public AbstractFFVVertex {
00040
00041 public:
00042
00046 static void Init();
00047
00048 public:
00049
00062 Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
00063 const SpinorBarWaveFunction & sbar2,const VectorWaveFunction & vec3);
00064
00077 SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00078 const SpinorBarWaveFunction & sbar2,
00079 const VectorWaveFunction & vec3,
00080 Energy mass=-GeV, Energy width=-GeV);
00081
00094 VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00095 const SpinorWaveFunction & sp1,
00096 const SpinorBarWaveFunction & sbar2,
00097 Energy mass=-GeV, Energy width=-GeV);
00098
00111 SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00112 const SpinorWaveFunction & sp1,
00113 const VectorWaveFunction & vec3,
00114 Energy mass=-GeV, Energy width=-GeV);
00116
00145 virtual SpinorWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out,
00146 const SpinorWaveFunction & sp1,
00147 const VectorWaveFunction & vec3,
00148 unsigned int fhel, unsigned int vhel,
00149 double ctheta, double phi, double stheta,
00150 bool includeEikonal = true,
00151 SmallAngleDirection direction = PostiveZDirection,
00152 Energy mass=-GeV, Energy width=-GeV);
00153
00174 virtual SpinorBarWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out,
00175 const SpinorBarWaveFunction & sbar2,
00176 const VectorWaveFunction & vec3,
00177 unsigned int fhel, unsigned int vhel,
00178 double ctheta, double phi, double stheta,
00179 bool includeEikonal = true,
00180 SmallAngleDirection direction = PostiveZDirection,
00181 Energy mass=-GeV, Energy width=-GeV);
00183
00192 virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3)=0;
00193
00201 const Complex & left() { return _left; }
00202
00206 const Complex & right() { return _right; }
00208
00209 protected:
00210
00218 void left(const Complex & in) { _left = in; }
00219
00223 void right(const Complex & in) { _right = in; }
00225
00226 private:
00227
00231 static AbstractNoPIOClassDescription<FFVVertex> initFFVVertex;
00232
00236 FFVVertex & operator=(const FFVVertex &);
00237
00238 private:
00239
00243 Complex _left;
00244
00248 Complex _right;
00249
00250 };
00251 }
00252
00259 template <>
00260 struct BaseClassTrait<ThePEG::Helicity::FFVVertex,1> {
00262 typedef ThePEG::Helicity::AbstractFFVVertex NthBase;
00263 };
00264
00269 template <>
00270 struct ClassTraits<ThePEG::Helicity::FFVVertex>
00271 : public ClassTraitsBase<ThePEG::Helicity::FFVVertex> {
00272
00276 static string className() { return "ThePEG::FFVVertex"; }
00277 };
00278
00281 }
00282
00283
00284 #endif