herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
SatPDF.h
1// -*- C++ -*-
2//
3// SatPDF.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4// Copyright (C) 2002-2019 The Herwig Collaboration
5//
6// Herwig is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef HERWIG_SatPDF_H
10#define HERWIG_SatPDF_H
11//
12// This is the declaration of the SatPDF class.
13//
14
15#include "ThePEG/PDF/PDFBase.h"
16
17namespace Herwig {
18using namespace ThePEG;
30class SatPDF: public PDFBase {
31
32public:
33
37 inline SatPDF() : thePDF(PDFPtr()), theX0(1E-4), theExp(0.0) {}
38
39public:
40
47 virtual bool canHandleParticle(tcPDPtr particle) const;
48
53 virtual cPDVector partons(tcPDPtr particle) const;
54
61 virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
62 double x, double eps=0.0, Energy2 particleScale = ZERO) const;
63
73 virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
74 double x, double eps=0.0, Energy2 particleScale = ZERO) const;
76
77
78public:
79
87
93 void persistentInput(PersistentIStream & is, int version);
95
102 static void Init();
103
104protected:
105
112 inline virtual IBPtr clone() const { return new_ptr(*this); }
113
118 inline virtual IBPtr fullclone() const { return new_ptr(*this); }
120
121
122// If needed, insert declarations of virtual function defined in the
123// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
124
125
126private:
127
132 SatPDF & operator=(const SatPDF &) = delete;
133
138
143 double theX0;
144
148 double theExp;
149
150};
151
152}
153
154#ifndef HERWIG_TEMPLATES_IN_CC_FILE
155// #include "SatPDF.tcc"
156#endif
157
158#endif /* HERWIG_SatPDF_H */
The SatPDF class defines a modified pdf which uses an existing pdf object to add modifications like r...
Definition: SatPDF.h:30
SatPDF()
The default constructor.
Definition: SatPDF.h:37
virtual cPDVector partons(tcPDPtr particle) const
Return the partons which this PDF may extract from the given particle.
double theX0
x from where the extrapolation f(x) = f(theX0) * (x/theX0)**theExp is used for the pdf's.
Definition: SatPDF.h:143
PDFPtr thePDF
pointer to the underlying ThePEG::PDFBase object, we are modifying.
Definition: SatPDF.h:137
double theExp
the exponent of the pdf extrapolation for small x (x < theX0).
Definition: SatPDF.h:148
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: SatPDF.h:118
virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const
The valence density.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of partons from the given particle.
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: SatPDF.h:112
virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const
The density.
static void Init()
The standard Init function used to initialize the interfaces.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
SatPDF & operator=(const SatPDF &)=delete
The assignment operator is private and must never be called.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr ZeroUnit ZERO
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< PDFBase >::pointer PDFPtr
vector< cPDPtr > cPDVector