ThePEG  1.8.0
Amplitude.h
1 // -*- C++ -*-
2 //
3 // Amplitude.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 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 &);
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 */