ThePEG  1.8.0
ME2to2Base.h
1 // -*- C++ -*-
2 //
3 // ME2to2Base.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_ME2to2Base_H
10 #define ThePEG_ME2to2Base_H
11 // This is the declaration of the ME2to2Base class.
12 
13 #include "ThePEG/MatrixElement/MEBase.h"
14 #include "ThePEG/MatrixElement/Tree2toNDiagram.h"
15 #include "ThePEG/Interface/Switch.fh"
16 
17 namespace ThePEG {
18 
32 class ME2to2Base: public MEBase {
33 
34 public:
35 
43  theLastPhi(0.0) {}
44 
48  virtual ~ME2to2Base();
50 
51 public:
52 
59  virtual int nDim() const { return 1; }
60 
68  virtual bool generateKinematics(const double * r);
69 
75  virtual CrossSection dSigHatDR() const;
76 
80  virtual Energy2 scale() const;
81 
87  virtual void setKinematics();
89 
94  virtual double getCosTheta(double cthmin, double cthmax, const double * r);
95 
100  int scaleChoice() const { return theScaleChoice; }
101 
102 public:
103 
109  Energy2 tHat() const { return theLastTHat; }
110 
114  Energy2 uHat() const { return theLastUHat; }
115 
119  double phi() const { return theLastPhi; }
121 
122 public:
123 
130  void persistentOutput(PersistentOStream & os) const;
131 
137  void persistentInput(PersistentIStream & is, int version);
139 
143  static void Init();
144 
145 protected:
146 
152  void tHat(Energy2 e2) { theLastTHat = e2; }
153 
157  void uHat(Energy2 e2) { theLastUHat = e2; }
158 
162  void phi(double phi) { theLastPhi = phi; }
164 
165 protected:
166 
172 
173 private:
174 
179 
183  Energy2 theLastTHat;
184 
188  Energy2 theLastUHat;
189 
193  double theLastPhi;
194 
195 
196 private:
197 
202 
206  ME2to2Base & operator=(const ME2to2Base &);
207 
208 };
209 
210 }
211 
212 
213 namespace ThePEG {
214 
221 template <>
222 struct BaseClassTrait<ME2to2Base,1>: public ClassTraitsType {
224  typedef MEBase NthBase;
225 };
226 
231 template <>
232 struct ClassTraits<ME2to2Base>: public ClassTraitsBase<ME2to2Base> {
234  static string className() { return "ThePEG::ME2to2Base"; }
235 };
236 
239 }
240 
241 #endif /* ThePEG_ME2to2Base_H */