ThePEG  1.8.0
AbstractFFVVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractFFVVertex_H
3 #define HELICITY_AbstractFFVVertex_H
4 //
5 // This is the declaration of the AbstractFFVVertex 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/VectorWaveFunction.h"
12 #include "AbstractFFVVertex.fh"
13 
14 namespace ThePEG {
15 namespace Helicity {
16 
22 
23 public:
24 
31  };
32 
33 public:
34 
35 
39  AbstractFFVVertex() : VertexBase(VertexType::FFV) {}
40 
53  virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
54  const SpinorBarWaveFunction & sbar2,
55  const VectorWaveFunction & vec3) = 0;
56 
69  virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
70  const SpinorBarWaveFunction & sbar2,
71  const VectorWaveFunction & vec3,
72  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
73 
86  virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
87  const SpinorWaveFunction & sp1,
88  const SpinorBarWaveFunction & sbar2,
89  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
90 
103  virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
104  const SpinorWaveFunction & sp1,
105  const VectorWaveFunction & vec3,
106  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
108 
141  virtual SpinorWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out,
142  const SpinorWaveFunction & sp1,
143  const VectorWaveFunction & vec3,
144  unsigned int fhel, unsigned int vhel,
145  double ctheta, double phi, double stheta,
146  bool includeEikonal = true,
148  Energy mass=-GeV, Energy width=-GeV);
149 
170  virtual SpinorBarWaveFunction evaluateSmall(Energy2 q2,int iopt, tcPDPtr out,
171  const SpinorBarWaveFunction & sbar2,
172  const VectorWaveFunction & vec3,
173  unsigned int fhel, unsigned int vhel,
174  double ctheta, double phi, double stheta,
175  bool includeEikonal = true,
177  Energy mass=-GeV, Energy width=-GeV);
179 
180 public:
181 
188  static void Init();
189 
190 private:
191 
197 
203 
204 };
205 
206 }
207 }
208 
209 #include "ThePEG/Utilities/ClassTraits.h"
210 
211 namespace ThePEG {
212 
217 template <>
218 struct BaseClassTrait<Helicity::AbstractFFVVertex,1> {
220  typedef Helicity::VertexBase NthBase;
221 };
222 
225 template <>
226 struct ClassTraits<Helicity::AbstractFFVVertex>
227  : public ClassTraitsBase<Helicity::AbstractFFVVertex> {
229  static string className() { return "Helicity::AbstractFFVVertex"; }
230 };
231 
234 }
235 
236 #endif /* HELICITY_AbstractFFVVertex_H */