ThePEG  1.8.0
AbstractVVVVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractVVVVertex_H
3 #define HELICITY_AbstractVVVVertex_H
4 //
5 // This is the declaration of the AbstractVVVVertex class.
6 //
7 
8 #include "VertexBase.h"
9 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
10 #include "AbstractVVVVertex.fh"
11 
12 namespace ThePEG {
13 namespace Helicity {
14 
20 
21 public:
22 
26  AbstractVVVVertex() : VertexBase(VertexType::VVV) {}
27 
40  virtual Complex evaluate(Energy2 q2, const VectorWaveFunction & vec1,
41  const VectorWaveFunction & vec2,
42  const VectorWaveFunction & vec3) = 0;
43 
56  virtual VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
57  const VectorWaveFunction & vec2,
58  const VectorWaveFunction & vec3,
59  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
61 
62 public:
63 
70  static void Init();
71 
72 private:
73 
79 
85 
86 };
87 
88 }
89 }
90 
91 #include "ThePEG/Utilities/ClassTraits.h"
92 
93 namespace ThePEG {
94 
99 template <>
100 struct BaseClassTrait<Helicity::AbstractVVVVertex,1> {
102  typedef Helicity::VertexBase NthBase;
103 };
104 
107 template <>
108 struct ClassTraits<Helicity::AbstractVVVVertex>
109  : public ClassTraitsBase<Helicity::AbstractVVVVertex> {
111  static string className() { return "Helicity::AbstractVVVVertex"; }
112 };
113 
116 }
117 
118 #endif /* HELICITY_AbstractVVVVertex_H */
AbstractVVVVertex & operator=(const AbstractVVVVertex &)
The assignment operator is private and must never be called.
static void Init()
The standard Init function used to initialize the interfaces.
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
virtual Complex evaluate(Energy2 q2, const VectorWaveFunction &vec1, const VectorWaveFunction &vec2, const VectorWaveFunction &vec3)=0
Members to calculate the helicity amplitude expressions for vertices and off-shell particles...
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 AbstractVVVVertex class provides the base class for all vector-vector-vector interactions in TheP...
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 AbstractNoPIOClassDescription< AbstractVVVVertex > initAbstractVVVVertex
The static object used to initialize the description of this class.
AbstractVVVVertex()
Default constructor.
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