00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_VVVVVertex_H
00010 #define ThePEG_VVVVVertex_H
00011
00012
00013
00014 #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h"
00015 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
00016 #include "VVVVVertex.fh"
00017
00018 namespace ThePEG {
00019 namespace Helicity{
00020
00039 class VVVVVertex: public AbstractVVVVVertex {
00040
00041 public:
00042
00046 static void Init();
00047
00048 public:
00049
00065 Complex evaluate(Energy2 q2, int iopt,
00066 const VectorWaveFunction & vec1, const VectorWaveFunction & vec2,
00067 const VectorWaveFunction & vec3, const VectorWaveFunction & vec4);
00069
00079 virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3,
00080 tcPDPtr part4)=0;
00081
00082 protected:
00083
00091 void setOrder(int id1,int id2,int id3,int id4) {
00092 _iorder[0]=id1;
00093 _iorder[1]=id2;
00094 _iorder[2]=id3;
00095 _iorder[3]=id4;
00096 }
00097
00102 void setType(int itype) {
00103 _itype=itype;
00104 }
00105
00113 void setIntermediate(tcPDPtr part1,tcPDPtr part2,Complex c1,Complex c2) {
00114 _inter[0]=part1;
00115 _inter[1]=part2;
00116 _coup[0]=c1;
00117 _coup[1]=c2;
00118 }
00119
00120 private:
00121
00125 static AbstractNoPIOClassDescription<VVVVVertex> initVVVVVertex;
00126
00130 VVVVVertex & operator=(const VVVVVertex &);
00131
00132 private:
00133
00137 int _itype;
00138
00142 int _iorder[4];
00143
00147 tcPDPtr _inter[2];
00148
00152 Complex _coup[2];
00153
00154 };
00155 }
00156 }
00157
00158 namespace ThePEG {
00159
00166 template <>
00167 struct BaseClassTrait<ThePEG::Helicity::VVVVVertex,1> {
00169 typedef ThePEG::Helicity::AbstractVVVVVertex NthBase;
00170 };
00171
00176 template <>
00177 struct ClassTraits<ThePEG::Helicity::VVVVVertex>
00178 : public ClassTraitsBase<ThePEG::Helicity::VVVVVertex> {
00179
00183 static string className() { return "ThePEG::VVVVVertex"; }
00184 };
00185
00188 }
00189
00190 #endif