ThePEG  1.8.0
AbstractFFSVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractFFSVertex_H
3 #define HELICITY_AbstractFFSVertex_H
4 //
5 // This is the declaration of the AbstractFFSVertex 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/ScalarWaveFunction.h"
12 #include "AbstractFFSVertex.fh"
13 
14 namespace ThePEG {
15 namespace Helicity {
16 
22 
23 public:
24 
28  AbstractFFSVertex() : VertexBase(VertexType::FFS) {}
29 
42  virtual Complex evaluate(Energy2 q2,const SpinorWaveFunction & sp1,
43  const SpinorBarWaveFunction & sbar2,
44  const ScalarWaveFunction & sca3) = 0;
45 
58  virtual SpinorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
59  const SpinorWaveFunction & sp1,
60  const ScalarWaveFunction & sca3,
61  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
62 
75  virtual SpinorBarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
76  const SpinorBarWaveFunction & sbar2,
77  const ScalarWaveFunction & sca3,
78  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
79 
92  virtual ScalarWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
93  const SpinorWaveFunction & sp1,
94  const SpinorBarWaveFunction & sbar2,
95  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
97 
98 public:
99 
106  static void Init();
107 
108 private:
109 
115 
121 
122 };
123 
124 }
125 }
126 
127 #include "ThePEG/Utilities/ClassTraits.h"
128 
129 namespace ThePEG {
130 
135 template <>
136 struct BaseClassTrait<Helicity::AbstractFFSVertex,1> {
138  typedef VertexBase NthBase;
139 };
140 
143 template <>
144 struct ClassTraits<Helicity::AbstractFFSVertex>
145  : public ClassTraitsBase<Helicity::AbstractFFSVertex> {
147  static string className() { return "Helicity::AbstractFFSVertex"; }
148 };
149 
152 }
153 
154 #endif /* HELICITY_AbstractFFSVertex_H */
AbstractFFSVertex()
Default constructor.
static void Init()
The standard Init function used to initialize the interfaces.
static AbstractNoPIOClassDescription< AbstractFFSVertex > initAbstractFFSVertex
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
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:681
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
The VertexBase class is the base class for all helicity amplitude vertices.
Definition: VertexBase.h:49
AbstractFFSVertex & operator=(const AbstractFFSVertex &)
The assignment operator is private and must never be called.
A concreate implementation of ClassDescriptionBase describing an abstract class without persistent da...
The AbstractFFSVertex class provides a base class for all fermion-fermion-scalar vertices in ThePEG...
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
virtual Complex evaluate(Energy2 q2, const SpinorWaveFunction &sp1, const SpinorBarWaveFunction &sbar2, const ScalarWaveFunction &sca3)=0
Members to calculate the helicity amplitude expressions for vertices and off-shell particles...