00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_GeneralFFVVertex_H
00010 #define ThePEG_GeneralFFVVertex_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 "GeneralFFVVertex.fh"
00019
00020 namespace ThePEG {
00021
00022 namespace Helicity{
00023
00038 class GeneralFFVVertex: public AbstractFFVVertex {
00039
00040 public:
00041
00045 static void Init();
00046
00059 Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
00060 const SpinorBarWaveFunction & sbar2,const VectorWaveFunction & vec3);
00061
00074 SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00075 const SpinorBarWaveFunction & sbar2,
00076 const VectorWaveFunction & vec3,
00077 Energy mass=-GeV, Energy width=-GeV);
00078
00091 VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00092 const SpinorWaveFunction & sp1,
00093 const SpinorBarWaveFunction & sbar2,
00094 Energy mass=-GeV, Energy width=-GeV);
00095
00108 SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
00109 const SpinorWaveFunction & sp1,
00110 const VectorWaveFunction & vec3,
00111 Energy mass=-GeV, Energy width=-GeV);
00113
00122 virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3)=0;
00130 const Complex & getLeft() { return _left; }
00131
00135 const Complex & getRight() { return _right; }
00136
00140 const complex<InvEnergy> getLeftSigma() { return _leftSigma; }
00141
00145 const complex<InvEnergy> getRightSigma() { return _rightSigma; }
00147
00148 protected:
00149
00157 void setLeft(const Complex & in) { _left = in; }
00158
00162 void setRight(const Complex & in) { _right = in; }
00163
00167 void setLeftSigma(const complex<InvEnergy> & in) { _leftSigma = in; }
00168
00172 void setRightSigma(const complex<InvEnergy> & in) { _rightSigma = in; }
00174
00175 private:
00176
00180 static AbstractNoPIOClassDescription<GeneralFFVVertex> initGeneralFFVVertex;
00181
00185 GeneralFFVVertex & operator=(const GeneralFFVVertex &);
00186
00187 private:
00188
00192 Complex _left;
00193
00197 Complex _right;
00198
00202 complex<InvEnergy> _leftSigma;
00203
00207 complex<InvEnergy> _rightSigma;
00208
00209 };
00210 }
00211
00218 template <>
00219 struct BaseClassTrait<ThePEG::Helicity::GeneralFFVVertex,1> {
00221 typedef ThePEG::Helicity::AbstractFFVVertex NthBase;
00222 };
00223
00228 template <>
00229 struct ClassTraits<ThePEG::Helicity::GeneralFFVVertex>
00230 : public ClassTraitsBase<ThePEG::Helicity::GeneralFFVVertex> {
00231
00235 static string className() { return "ThePEG::GeneralFFVVertex"; }
00236 };
00237
00240 }
00241
00242
00243 #endif