thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
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
18namespace ThePEG {
19
34class 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
85 const vector<int> & helicities);
87
88public:
89
93 static void Init();
94
99
103 Amplitude & operator=(const Amplitude &) = delete;
104
105};
106
107}
108
109
110namespace ThePEG {
111
118template <>
119struct BaseClassTrait<Amplitude,1>: public ClassTraitsType {
121 typedef HandlerBase NthBase;
122};
123
128template <>
129struct ClassTraits<Amplitude>: public ClassTraitsBase<Amplitude> {
131 static string className() { return "ThePEG::Amplitude"; }
132};
133
136}
137
138#endif /* ThePEG_Amplitude_H */
A concreate implementation of ClassDescriptionBase describing an abstract class without persistent da...
The Amplitude class is the abstract base class for all the classes representing complex amplitudes as...
Definition: Amplitude.h:34
Amplitude & operator=(const Amplitude &)=delete
Private and non-existent assignment operator.
Complex overestimateValue(const PVector &particles, const vector< int > &helicities)
Return an overestimated amplitude.
virtual Complex overestimateValue(const tcPDVector &particles, const vector< Lorentz5Momentum > &momenta, const vector< int > &helicities)
Return an overestimated amplitude.
static AbstractNoPIOClassDescription< Amplitude > initAmplitude
Describe an abstract base class with persistent data.
Definition: Amplitude.h:98
Complex value(const PVector &particles, const vector< int > &helicities)
Return the amplitude.
virtual Complex value(const tcPDVector &particles, const vector< Lorentz5Momentum > &momenta, const vector< int > &helicities)=0
Return the amplitude.
static void Init()
Standard Init function used to initialize the interfaces.
HandlerBase is an abstract base class derived from the Interfaced class via the HandlerBaseT class ad...
Definition: HandlerBase.h:151
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
vector< PPtr > PVector
A vector of pointers to Particle objects.
Definition: Containers.h:76
vector< tcPDPtr > tcPDVector
A vector of transient pointers to const ParticleData objects.
Definition: Containers.h:42
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
static string className()
Return the name of class T.
Definition: ClassTraits.h:66