ThePEG  1.8.0
AbstractFFTVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractFFTVertex_H
3 #define HELICITY_AbstractFFTVertex_H
4 //
5 // This is the declaration of the AbstractFFTVertex 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/TensorWaveFunction.h"
12 #include "AbstractFFTVertex.fh"
13 
14 namespace ThePEG {
15 namespace Helicity {
16 
22 
23 public:
24 
25 
29  AbstractFFTVertex() : VertexBase(VertexType::FFT) {}
30 
43  virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
44  const SpinorBarWaveFunction & sbar2,
45  const TensorWaveFunction & ten3) = 0;
46 
59  virtual TensorWaveFunction evaluate(Energy2 q2, int iopt,tcPDPtr out,
60  const SpinorWaveFunction & sp1,
61  const SpinorBarWaveFunction & sbar2,
62  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
63 
76  virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
77  const SpinorWaveFunction & sp1,
78  const TensorWaveFunction & ten3,
79  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
80 
93  virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
94  const SpinorBarWaveFunction & sbar2,
95  const TensorWaveFunction& ten3,
96  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
98 
99 public:
100 
107  static void Init();
108 
109 private:
110 
116 
122 
123 };
124 
125 }
126 }
127 
128 #include "ThePEG/Utilities/ClassTraits.h"
129 
130 namespace ThePEG {
131 
136 template <>
137 struct BaseClassTrait<Helicity::AbstractFFTVertex,1> {
139  typedef Helicity::VertexBase NthBase;
140 };
141 
144 template <>
145 struct ClassTraits<Helicity::AbstractFFTVertex>
146  : public ClassTraitsBase<Helicity::AbstractFFTVertex> {
148  static string className() { return "Helicity::AbstractFFTVertex"; }
149 };
150 
153 }
154 
155 #endif /* HELICITY_AbstractFFTVertex_H */
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:681
static AbstractNoPIOClassDescription< AbstractFFTVertex > initAbstractFFTVertex
The static object used to initialize the description of this class.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
static void Init()
The standard Init function used to initialize the interfaces.
AbstractFFTVertex()
Default constructor.
The VertexBase class is the base class for all helicity amplitude vertices.
Definition: VertexBase.h:49
AbstractFFTVertex & operator=(const AbstractFFTVertex &)
The assignment operator is private and must never be called.
A concreate implementation of ClassDescriptionBase describing an abstract class without persistent da...
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 AbstractFFTVertex class is the base class for all fermion-fermion-tensor interactions in ThePEG...
virtual Complex evaluate(Energy2 q2, const SpinorWaveFunction &sp1, const SpinorBarWaveFunction &sbar2, const TensorWaveFunction &ten3)=0
Members to calculate the helicity amplitude expressions for vertices and off-shell particles...