ThePEG  1.8.0
PDFBase.h
1 // -*- C++ -*-
2 //
3 // PDFBase.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_PDFBase_H
10 #define ThePEG_PDFBase_H
11 // This is the declaration of the PDFBase class.
12 
13 #include "ThePEG/Config/ThePEG.h"
14 #include "ThePEG/Handlers/HandlerBase.h"
15 #include "ThePEG/PDF/PDFCuts.h"
16 #include "PDFBase.xh"
17 
18 namespace ThePEG {
19 
40 class PDFBase: public HandlerBase {
41 
42 public:
43 
49  PDFBase();
50 
54  PDFBase(const PDFBase &);
55 
59  virtual ~PDFBase();
61 
62 public:
63 
70  virtual bool canHandleParticle(tcPDPtr particle) const = 0;
71 
77  virtual bool canHandle(tcPDPtr particle) const;
78 
84  virtual bool hasPoleIn1(tcPDPtr particle, tcPDPtr parton) const;
85 
90  virtual cPDVector partons(tcPDPtr particle) const = 0;
91 
98  virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
99  double l, Energy2 particleScale = ZERO) const;
100 
107  virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
108  double x, double eps = 0.0,
109  Energy2 particleScale = ZERO) const;
110 
121  virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
122  double l, Energy2 particleScale = ZERO) const;
123 
133  virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
134  double x, double eps = 0.0,
135  Energy2 particleScale = ZERO) const;
136 
146  virtual double xfsl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
147  double l, Energy2 particleScale = ZERO) const;
148 
158  virtual double xfsx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
159  double x, double eps = 0.0,
160  Energy2 particleScale = ZERO) const;
161 
172  virtual double flattenL(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut,
173  double z, double & jacobian) const;
174 
187  virtual double flattenScale(tcPDPtr particle, tcPDPtr parton,
188  const PDFCuts & cut, double l, double z,
189  double & jacobian) const;
191 
197 
198 
199 public:
200 
207  void persistentOutput(PersistentOStream & os) const;
208 
214  void persistentInput(PersistentIStream & is, int version);
216 
220  static void Init();
221 
222 protected:
223 
231  virtual void doinit();
232 
233 protected:
234 
240 
241 protected:
242 
247  rangeFreeze,
250  };
251 
257 
258 private:
259 
260 
266 
270  PDFBase & operator=(const PDFBase &);
271 
272 };
273 
274 ThePEG_DECLARE_CLASS_TRAITS(PDFBase,HandlerBase);
275 
276 }
277 
278 #endif /* ThePEG_PDFBase_H */