ThePEG  1.8.0
AbstractVVVTVertex.h
1 // -*- C++ -*-
2 #ifndef HELICITY_AbstractVVVTVertex_H
3 #define HELICITY_AbstractVVVTVertex_H
4 //
5 // This is the declaration of the AbstractVVVTVertex class.
6 //
7 
8 #include "VertexBase.h"
9 #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
10 #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h"
11 #include "AbstractVVVTVertex.fh"
12 
13 namespace ThePEG {
14 namespace Helicity {
15 
21 
22 public:
23 
27  AbstractVVVTVertex() : VertexBase(VertexType::VVVT) {}
28 
42  virtual Complex evaluate(Energy2 q2,const VectorWaveFunction & vec1,
43  const VectorWaveFunction & vec2,
44  const VectorWaveFunction & vec3,
45  const TensorWaveFunction & ten4) = 0;
46 
60  virtual TensorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
61  const VectorWaveFunction & vec1,
62  const VectorWaveFunction & vec2,
63  const VectorWaveFunction & vec3,
64  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
65 
79  virtual VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out,
80  const VectorWaveFunction & vec1,
81  const VectorWaveFunction & vec2,
82  const TensorWaveFunction & ten4,
83  complex<Energy> mass=-GeV, complex<Energy> width=-GeV) = 0;
85 
86 public:
87 
94  static void Init();
95 
96 private:
97 
103 
109 
110 };
111 
112 }
113 }
114 
115 #include "ThePEG/Utilities/ClassTraits.h"
116 
117 namespace ThePEG {
118 
123 template <>
124 struct BaseClassTrait<Helicity::AbstractVVVTVertex,1> {
126  typedef Helicity::VertexBase NthBase;
127 };
128 
131 template <>
132 struct ClassTraits<Helicity::AbstractVVVTVertex>
133  : public ClassTraitsBase<Helicity::AbstractVVVTVertex> {
135  static string className() { return "Helicity::AbstractVVVTVertex"; }
136 };
137 
140 }
141 
142 #endif /* HELICITY_AbstractVVVTVertex_H */
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
static AbstractNoPIOClassDescription< AbstractVVVTVertex > initAbstractVVVTVertex
The static object used to initialize the description of this class.
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 AbstractVVVTVertex class is the base class for all vector-vector-vector-tensor interactions in Th...
static void Init()
The standard Init function used to initialize the interfaces.
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...
virtual Complex evaluate(Energy2 q2, const VectorWaveFunction &vec1, const VectorWaveFunction &vec2, const VectorWaveFunction &vec3, const TensorWaveFunction &ten4)=0
Members to calculate the helicity amplitude expressions for vertices and off-shell particles...
AbstractVVVTVertex & operator=(const AbstractVVVTVertex &)
The assignment operator is private and must never be called.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
AbstractVVVTVertex()
Default constructor.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52