ThePEG  1.8.0
LuminosityFunction.h
1 // -*- C++ -*-
2 //
3 // LuminosityFunction.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_LuminosityFunction_H
10 #define ThePEG_LuminosityFunction_H
11 // This is the declaration of the LuminosityFunction class.
12 
13 #include "ThePEG/Handlers/HandlerBase.h"
14 #include "ThePEG/Handlers/LastXCombInfo.h"
15 #include "ThePEG/Vectors/LorentzRotation.fh"
16 #include "ThePEG/Utilities/Interval.h"
17 
18 namespace ThePEG {
19 
39 class LuminosityFunction: public HandlerBase, public LastXCombInfo<> {
40 
42  friend class EventHandler;
43 
44 public:
45 
52  LuminosityFunction(Energy a = 45.6*GeV, Energy b = 45.6*GeV);
54 
61  virtual bool canHandle(const cPDPair &) const;
62 
66  virtual Energy maximumCMEnergy() const;
67 
73  virtual LorentzRotation getBoost() const;
74 
80  virtual double Y() const;
81 
87  virtual int nDim(const cPDPair &) const;
88 
94  virtual double value(const cPDPair &, double l1, double l2) const;
95 
103  virtual pair<double,double>
104  generateLL(const double * r, double & jacobian) const;
106 
107 public:
108 
114  Energy beamEMaxA() const { return theBeamEMaxA; }
115 
119  Energy beamEMaxB() const { return theBeamEMaxB; }
121 
122 protected:
123 
127  void beamEMaxA(Energy x) { theBeamEMaxA = x; }
128 
132  void beamEMaxB(Energy x) { theBeamEMaxB = x; }
133 
134 public:
135 
142  void persistentOutput(PersistentOStream & os) const;
143 
149  void persistentInput(PersistentIStream & is, int version);
151 
155  static void Init();
156 
160  void select(tXCombPtr);
161 
162 protected:
163 
170  virtual IBPtr clone() const;
171 
176  virtual IBPtr fullclone() const;
178 
179 private:
180 
185 
190 
191 private:
192 
197 
202 
203 };
204 
211 template <>
214  typedef HandlerBase NthBase;
215 };
216 
221 template <>
222 struct ClassTraits<LuminosityFunction>:
223  public ClassTraitsBase<LuminosityFunction> {
225  static string className() { return "ThePEG::LuminosityFunction"; }
226 };
227 
230 }
231 
232 #endif /* ThePEG_LuminosityFunction_H */