ThePEG  1.8.0
AbstractVSSVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractVSSVertex_H
3 #define HELICITY_AbstractVSSVertex_H
4 //
5 // This is the declaration of the AbstractVSSVertex class.
6 //
7 
8 #include "VertexBase.h"
9 #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
10 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
11 #include "AbstractVSSVertex.fh"
12 
13 namespace ThePEG {
14 namespace Helicity {
15 
21 
22 public:
23 
27  AbstractVSSVertex() : VertexBase(VertexType::VSS) {}
28 
41  virtual Complex evaluate(Energy2 q2,const VectorWaveFunction & vec1,
42  const ScalarWaveFunction & sca2,
43  const ScalarWaveFunction & sca3) = 0;
44 
57  virtual VectorWaveFunction evaluate(Energy2 q2,int iopt,tcPDPtr out,
58  const ScalarWaveFunction & sca2,
59  const ScalarWaveFunction & sca3,
60  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
61 
74  virtual ScalarWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
75  const VectorWaveFunction & vec1,
76  const ScalarWaveFunction & sca2,
77  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
79 
80 public:
81 
88  static void Init();
89 
90 private:
91 
97 
103 
104 };
105 
106 }
107 }
108 
109 #include "ThePEG/Utilities/ClassTraits.h"
110 
111 namespace ThePEG {
112 
117 template <>
118 struct BaseClassTrait<Helicity::AbstractVSSVertex,1> {
120  typedef Helicity::VertexBase NthBase;
121 };
122 
125 template <>
126 struct ClassTraits<Helicity::AbstractVSSVertex>
127  : public ClassTraitsBase<Helicity::AbstractVSSVertex> {
129  static string className() { return "Helicity::AbstractVSSVertex"; }
130 };
131 
134 }
135 
136 #endif /* HELICITY_AbstractVSSVertex_H */
The AbstractVSSVertex class is the base class for vector-scalar-scalar interactions in ThePEG...
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
static AbstractNoPIOClassDescription< AbstractVSSVertex > initAbstractVSSVertex
The static object used to initialize the description of this class.
AbstractVSSVertex()
Default constructor.
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:681
AbstractVSSVertex & operator=(const AbstractVSSVertex &)
The assignment operator is private and must never be called.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
virtual Complex evaluate(Energy2 q2, const VectorWaveFunction &vec1, const ScalarWaveFunction &sca2, const ScalarWaveFunction &sca3)=0
Members to calculate the helicity amplitude expressions for vertices and off-shell particles...
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