ThePEG  1.8.0
AbstractFFVTVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractFFVTVertex_H
3 #define HELICITY_AbstractFFVTVertex_H
4 //
5 // This is the declaration of the AbstractFFVTVertex class.
6 //
7 
8 #include "VertexBase.h"
9 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
10 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h"
11 #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
12 #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
13 #include "AbstractFFVTVertex.fh"
14 
15 namespace ThePEG {
16 namespace Helicity {
17 
23 
24 public:
25 
26 
30  AbstractFFVTVertex() : VertexBase(VertexType::FFVT) {}
31 
45  virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
46  const SpinorBarWaveFunction & sbar2,
47  const VectorWaveFunction & vec3,
48  const TensorWaveFunction & ten4) = 0;
49 
63  virtual TensorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
64  const SpinorWaveFunction & sp1,
65  const SpinorBarWaveFunction & sbar2,
66  const VectorWaveFunction & vec3,
67  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
68 
82  virtual VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
83  const SpinorWaveFunction & sp1,
84  const SpinorBarWaveFunction & sbar2,
85  const TensorWaveFunction & ten4,
86  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
87 
101  virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
102  const SpinorWaveFunction & sp1,
103  const VectorWaveFunction & vec3,
104  const TensorWaveFunction & ten4,
105  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
106 
120  virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
121  const SpinorBarWaveFunction & sbar2,
122  const VectorWaveFunction & vec3,
123  const TensorWaveFunction & ten4,
124  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
126 
127 public:
128 
135  static void Init();
136 
137 private:
138 
144 
150 
151 };
152 
153 }
154 }
155 
156 #include "ThePEG/Utilities/ClassTraits.h"
157 
158 namespace ThePEG {
159 
164 template <>
165 struct BaseClassTrait<Helicity::AbstractFFVTVertex,1> {
167  typedef Helicity::VertexBase NthBase;
168 };
169 
172 template <>
173 struct ClassTraits<Helicity::AbstractFFVTVertex>
174  : public ClassTraitsBase<Helicity::AbstractFFVTVertex> {
176  static string className() { return "Helicity::AbstractFFVTVertex"; }
177 };
178 
181 }
182 
183 #endif /* HELICITY_AbstractFFVTVertex_H */
static AbstractNoPIOClassDescription< AbstractFFVTVertex > initAbstractFFVTVertex
The static object used to initialize the description of this class.
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
AbstractFFVTVertex()
Default constructor.
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:681
virtual Complex evaluate(Energy2 q2, const SpinorWaveFunction &sp1, const SpinorBarWaveFunction &sbar2, const VectorWaveFunction &vec3, const TensorWaveFunction &ten4)=0
Members to calculate the helicity amplitude expressions for vertices and off-shell particles...
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
AbstractFFVTVertex & operator=(const AbstractFFVTVertex &)
The assignment operator is private and must never be called.
The VertexBase class is the base class for all helicity amplitude vertices.
Definition: VertexBase.h:49
A concreate implementation of ClassDescriptionBase describing an abstract class without persistent da...
static void Init()
The standard Init function used to initialize the interfaces.
static string className()
Return the name of class T.
Definition: ClassTraits.h:66
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
The AbstractFFVTVertex class is the base class for all fermion-fermion-vector-tensor interactions in ...