ThePEG  1.8.0
WeizsackerWilliamsPDF.h
1 // -*- C++ -*-
2 #ifndef THEPEG_WeizsackerWilliamsPDF_H
3 #define THEPEG_WeizsackerWilliamsPDF_H
4 //
5 // This is the declaration of the WeizsackerWilliamsPDF class.
6 //
7 
8 #include "ThePEG/PDF/PDFBase.h"
9 
10 namespace ThePEG {
11 
12 using namespace ThePEG;
13 
21 
22 public:
23 
28 
35  virtual bool canHandleParticle(tcPDPtr particle) const;
36 
41  virtual cPDVector partons(tcPDPtr particle) const;
42 
49  virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
50  double l, Energy2 particleScale = ZERO) const;
51 
60  virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
61  double l, Energy2 particleScale = ZERO) const;
62 
75  virtual double flattenScale(tcPDPtr particle, tcPDPtr parton,
76  const PDFCuts & cut, double l, double z,
77  double & jacobian) const;
78 
89  virtual double flattenL(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut,
90  double z, double & jacobian) const;
92 
93 public:
94 
101  void persistentOutput(PersistentOStream & os) const;
102 
108  void persistentInput(PersistentIStream & is, int version);
110 
117  static void Init();
118 
119 protected:
120 
127  virtual IBPtr clone() const {return new_ptr(*this);}
128 
133  virtual IBPtr fullclone() const {return new_ptr(*this);}
135 
136 private:
137 
143 
149 
150 private:
151 
155  Energy2 _q2min;
156 
160  Energy2 _q2max;
161 
165  double _a;
166 };
167 
168 }
169 
170 #include "ThePEG/Utilities/ClassTraits.h"
171 
172 namespace ThePEG {
173 
178 template <>
179 struct BaseClassTrait<WeizsackerWilliamsPDF,1> {
181  typedef PDFBase NthBase;
182 };
183 
186 template <>
187 struct ClassTraits<WeizsackerWilliamsPDF>
188  : public ClassTraitsBase<WeizsackerWilliamsPDF> {
190  static string className() { return "ThePEG::WeizsackerWilliamsPDF"; }
198  static string library() { return "WeizsackerWilliamsPDF.so"; }
199 };
200 
203 }
204 
205 #endif /* THEPEG_WeizsackerWilliamsPDF_H */