ThePEG  1.8.0
AbstractRFVVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractRFVVertex_H
3 #define HELICITY_AbstractRFVVertex_H
4 //
5 // This is the declaration of the AbstractRFVVertex class.
6 //
7 
8 #include "VertexBase.h"
9 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
10 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
11 #include "ThePEG/Helicity/WaveFunction/RSSpinorWaveFunction.h"
12 #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h"
13 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
14 #include "AbstractRFVVertex.fh"
15 
16 namespace ThePEG {
17 namespace Helicity {
18 
24 
25 public:
26 
30  AbstractRFVVertex() : VertexBase(VertexType::RFV) {}
31 
44  virtual Complex evaluate(Energy2 q2,const RSSpinorWaveFunction & sp1,
45  const SpinorBarWaveFunction & sbar2,
46  const VectorWaveFunction & vec3) = 0;
47 
55  virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
56  const RSSpinorBarWaveFunction & sbar2,
57  const VectorWaveFunction & vec3) = 0;
58 
71  virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
72  const RSSpinorBarWaveFunction & sbar2,
73  const VectorWaveFunction & vec3,
74  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
75 
88  virtual RSSpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
89  const SpinorBarWaveFunction & sbar2,
90  const VectorWaveFunction & vec3,
91  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
92 
105  virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
106  const RSSpinorWaveFunction & sp1,
107  const SpinorBarWaveFunction & sbar2,
108  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
109 
122  virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
123  const SpinorWaveFunction & sp1,
124  const RSSpinorBarWaveFunction & sbar2,
125  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
126 
139  virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
140  const RSSpinorWaveFunction & sp1,
141  const VectorWaveFunction & vec3,
142  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
143 
156  virtual RSSpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
157  const SpinorWaveFunction & sp1,
158  const VectorWaveFunction & vec3,
159  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
161 
162 public:
163 
170  static void Init();
171 
172 private:
173 
179 
185 
186 };
187 
188 }
189 }
190 
191 #include "ThePEG/Utilities/ClassTraits.h"
192 
193 namespace ThePEG {
194 
199 template <>
200 struct BaseClassTrait<Helicity::AbstractRFVVertex,1> {
202  typedef Helicity::VertexBase NthBase;
203 };
204 
207 template <>
208 struct ClassTraits<Helicity::AbstractRFVVertex>
209  : public ClassTraitsBase<Helicity::AbstractRFVVertex> {
211  static string className() { return "Helicity::AbstractRFVVertex"; }
212 };
213 
216 }
217 
218 #endif /* HELICITY_AbstractRFVVertex_H */