00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_Amplitude_H
00010 #define ThePEG_Amplitude_H
00011
00012
00013
00014 #include "ThePEG/Handlers/HandlerBase.h"
00015 #include "ThePEG/PDT/ParticleData.h"
00016 #include "ThePEG/EventRecord/Particle.h"
00017
00018 namespace ThePEG {
00019
00034 class Amplitude: public HandlerBase {
00035
00052 virtual Complex value(const tcPDVector & particles,
00053 const vector<Lorentz5Momentum> & momenta,
00054 const vector<int> & helicities) = 0;
00055
00064 virtual Complex overestimateValue(const tcPDVector & particles,
00065 const vector<Lorentz5Momentum> & momenta,
00066 const vector<int> & helicities);
00068
00077 Complex value(const PVector & particles, const vector<int> & helicities);
00078
00084 Complex overestimateValue(const PVector & particles,
00085 const vector<int> & helicities);
00087
00088 public:
00089
00093 static void Init();
00094
00098 static AbstractNoPIOClassDescription<Amplitude> initAmplitude;
00099
00103 Amplitude & operator=(const Amplitude &);
00104
00105 };
00106
00107 }
00108
00109
00110 namespace ThePEG {
00111
00118 template <>
00119 struct BaseClassTrait<Amplitude,1>: public ClassTraitsType {
00121 typedef HandlerBase NthBase;
00122 };
00123
00128 template <>
00129 struct ClassTraits<Amplitude>: public ClassTraitsBase<Amplitude> {
00131 static string className() { return "ThePEG::Amplitude"; }
00132 };
00133
00136 }
00137
00138 #endif