thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
Amplitude.h
1 // -*- C++ -*-
2 //
3 // Amplitude.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2019 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef ThePEG_Amplitude_H
10 #define ThePEG_Amplitude_H
11 // This is the declaration of the Amplitude class.
12 
13 
14 #include "ThePEG/Handlers/HandlerBase.h"
15 #include "ThePEG/PDT/ParticleData.h"
16 #include "ThePEG/EventRecord/Particle.h"
17 
18 namespace ThePEG {
19 
34 class Amplitude: public HandlerBase {
35 
52  virtual Complex value(const tcPDVector & particles,
53  const vector<Lorentz5Momentum> & momenta,
54  const vector<int> & helicities) = 0;
55 
64  virtual Complex overestimateValue(const tcPDVector & particles,
65  const vector<Lorentz5Momentum> & momenta,
66  const vector<int> & helicities);
68 
77  Complex value(const PVector & particles, const vector<int> & helicities);
78 
84  Complex overestimateValue(const PVector & particles,
85  const vector<int> & helicities);
87 
88 public:
89 
93  static void Init();
94 
99 
103  Amplitude & operator=(const Amplitude &) = delete;
104 
105 };
106 
107 }
108 
109 
110 namespace ThePEG {
111 
118 template <>
119 struct BaseClassTrait<Amplitude,1>: public ClassTraitsType {
121  typedef HandlerBase NthBase;
122 };
123 
128 template <>
129 struct ClassTraits<Amplitude>: public ClassTraitsBase<Amplitude> {
131  static string className() { return "ThePEG::Amplitude"; }
132 };
133 
136 }
137 
138 #endif /* ThePEG_Amplitude_H */
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30
Amplitude & operator=(const Amplitude &)=delete
Private and non-existent assignment operator.
static AbstractNoPIOClassDescription< Amplitude > initAmplitude
Describe an abstract base class with persistent data.
Definition: Amplitude.h:98
vector< tcPDPtr > tcPDVector
A vector of transient pointers to const ParticleData objects.
Definition: Containers.h:42
static void Init()
Standard Init function used to initialize the interfaces.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
The Amplitude class is the abstract base class for all the classes representing complex amplitudes as...
Definition: Amplitude.h:34
A concreate implementation of ClassDescriptionBase describing an abstract class without persistent da...
virtual Complex value(const tcPDVector &particles, const vector< Lorentz5Momentum > &momenta, const vector< int > &helicities)=0
Return the amplitude.
HandlerBase is an abstract base class derived from the Interfaced class via the HandlerBaseT class ad...
Definition: HandlerBase.h:151
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
virtual Complex overestimateValue(const tcPDVector &particles, const vector< Lorentz5Momentum > &momenta, const vector< int > &helicities)
Return an overestimated amplitude.
vector< PPtr > PVector
A vector of pointers to Particle objects.
Definition: Containers.h:76
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