10 #include "LHAPDF/PDFInfo.h" 11 #include "LHAPDF/PDFIndex.h" 12 #include "LHAPDF/Factories.h" 13 #include "LHAPDF/AlphaS.h" 14 #include "LHAPDF/Utils.h" 15 #include "LHAPDF/Paths.h" 16 #include "LHAPDF/Exceptions.h" 17 #include "LHAPDF/Version.h" 18 #include "LHAPDF/Config.h" 56 void _loadInfo(
const std::string& mempath);
58 void _loadInfo(
const std::string& setname,
int member) {
59 const string searchpath = findpdfmempath(setname, member);
60 if (searchpath.empty())
61 throw UserError(
"Can't find a valid PDF " + setname +
"/" +
to_str(member));
62 _loadInfo(searchpath);
65 void _loadInfo(
int lhaid) {
66 const pair<string,int> setname_memid =
lookupPDF(lhaid);
67 if (setname_memid.second == -1)
68 throw IndexError(
"Can't find a PDF with LHAPDF ID = " +
to_str(lhaid));
69 _loadInfo(setname_memid.first, setname_memid.second);
89 double xfxQ2(
int id,
double x,
double q2)
const;
102 double xfxQ(
int id,
double x,
double q)
const {
103 return xfxQ2(
id, x, q*q);
115 void xfxQ2(
double x,
double q2, std::map<int, double>& rtn)
const;
126 void xfxQ(
double x,
double q, std::map<int, double>& rtn)
const {
143 void xfxQ2(
double x,
double q2, std::vector<double>& rtn)
const;
157 void xfxQ(
double x,
double q, std::vector<double>& rtn)
const {
170 std::map<int, double>
xfxQ2(
double x,
double q2)
const;
184 std::map<int, double>
xfxQ(
double x,
double q)
const {
185 return xfxQ2(x, q*q);
203 virtual double _xfxQ2(
int id,
double x,
double q2)
const = 0;
217 return numeric_limits<double>::epsilon();
247 return (
info().
has_key(
"QMax")) ?
sqr(
info().get_entry_as<double>(
"QMax")) : numeric_limits<double>::max();
266 return x >= 0.0 && x <= 1.0;
310 virtual bool inRangeQ2(
double q2)
const = 0;
318 virtual bool inRangeX(
double x)
const = 0;
360 assert(memname.length() > 5);
361 const int memid =
lexical_cast<
int>(memname.substr(memname.length()-4));
403 virtual const std::vector<int>&
flavors()
const {
PDF is the general interface for access to parton density information.
Definition: PDF.h:26
virtual double xMin()
Minimum valid x value for this PDF.
Definition: PDF.h:214
double alphasQ(double q) const
Value of alpha_s(Q2) used by this PDF.
Definition: PDF.h:470
std::string _setname() const
Get the set name from the member data file path (for internal use only)
Definition: PDF.h:495
double xfxQ(int id, double x, double q) const
Get the PDF xf(x) value at (x,q) for the given PID.
Definition: PDF.h:102
void xfxQ(double x, double q, std::map< int, double > &rtn) const
Get the PDF xf(x) value at (x,q) for all supported PIDs.
Definition: PDF.h:126
std::string to_str(const T &val)
Make a string representation of val.
Definition: Utils.h:60
virtual double qMin()
Definition: PDF.h:229
Generic unspecialised LHAPDF runtime error.
Definition: Exceptions.h:22
bool inPhysicalRangeQ2(double q2) const
Check whether the given Q2 is physically valid.
Definition: PDF.h:272
virtual ~PDF()
Virtual destructor, to allow unfettered inheritance.
Definition: PDF.h:42
virtual const std::vector< int > & flavors() const
List of flavours defined by this PDF set.
Definition: PDF.h:403
virtual double _xfxQ2(int id, double x, double q2) const =0
Calculate the PDF xf(x) value at (x,q2) for the given PID.
virtual bool inRangeQ2(double q2) const =0
Grid range check for Q2.
bool inRangeXQ2(double x, double q2) const
Combined range check for x and Q2.
Definition: PDF.h:326
std::pair< std::string, int > lookupPDF(int lhaid)
const std::string & get_entry(const std::string &key) const
Retrieve a metadata string by key name.
int memberID() const
PDF member local ID number.
Definition: PDF.h:358
int orderQCD() const
Order of QCD at which this PDF has been constructed.
Definition: PDF.h:419
virtual double q2Max()
Maximum valid Q2 value for this PDF (in GeV2).
Definition: PDF.h:245
virtual bool inRangeXQ(double x, double q) const
Combined range check for x and Q.
Definition: PDF.h:321
vector< int > _flavors
Locally cached list of supported PIDs.
Definition: PDF.h:506
std::map< int, double > xfxQ(double x, double q) const
Get the PDF xf(x) value at (x,q) for all supported PIDs.
Definition: PDF.h:184
double alphasQ2(double q2) const
Value of alpha_s(Q2) used by this PDF.
Definition: PDF.h:478
const PDFInfo & info() const
Get the info class that actually stores and handles the metadata (const version)
Definition: PDF.h:340
bool hasAlphaS() const
Check if an AlphaS calculator is set.
Definition: PDF.h:452
void print(std::ostream &os=std::cout, int verbosity=1) const
Summary printout.
virtual double xMax()
Maximum valid x value for this PDF.
Definition: PDF.h:221
bool inPhysicalRangeQ(double q) const
Check whether the given Q is physically valid.
Definition: PDF.h:279
double quarkMass(int id) const
Get a quark mass in GeV by PDG code (|PID| = 1-6 only)
PDFSet & getPDFSet(const std::string &setname)
T lexical_cast(const U &in)
Convert between any types via stringstream.
Definition: Utils.h:46
std::string basename(const std::string &p)
Get the basename (i.e. terminal file name) from a path p.
Definition: Utils.h:183
bool inPhysicalRangeXQ(double x, double q) const
Check whether the given (x,Q) is physically valid.
Definition: PDF.h:289
virtual bool inRangeX(double x) const =0
Grid range check for x.
AlphaS & alphaS()
Retrieve the AlphaS object for this PDF.
Definition: PDF.h:457
const AlphaS & alphaS() const
Retrieve the AlphaS object for this PDF (const)
Definition: PDF.h:462
PDFInfo & info()
Get the info class that actually stores and handles the metadata.
Definition: PDF.h:337
std::string type() const
Get the type of PDF member that this object represents (central, error)
Definition: PDF.h:381
std::string description() const
Description of this PDF member.
Definition: PDF.h:371
N sqr(const N &x)
Convenience function for squaring (of any type)
Definition: Utils.h:216
virtual double alphasQ2(double q2) const =0
AlphaS * mkAlphaS(const Info &info)
Make an AlphaS object from an Info object.
bool hasFlavor(int id) const
Checks whether id is a valid parton for this PDF.
AlphaS * AlphaSPtr
Definition: PDF.h:32
std::string to_lower(const std::string &s)
Convert a string to lower-case (not in-place)
Definition: Utils.h:137
std::string dirname(const std::string &p)
Get the dirname (i.e. path to the penultimate directory) from a path p.
Definition: Utils.h:189
double xfxQ2(int id, double x, double q2) const
Get the PDF xf(x) value at (x,q2) for the given PID.
int qcdOrder() const
Definition: PDF.h:423
Class for PDF set metadata and manipulation.
Definition: PDFSet.h:39
T get_entry_as(const std::string &key) const
Definition: Info.h:128
PDF()
Definition: PDF.h:36
int verbosity()
Definition: Config.h:65
Metadata class for PDF members.
Definition: PDFInfo.h:18
PDFInfo _info
Metadata container.
Definition: PDF.h:503
Namespace for all LHAPDF functions and classes.
Definition: AlphaS.h:14
bool inPhysicalRangeXQ2(double x, double q2) const
Check whether the given (x,Q2) is physically valid.
Definition: PDF.h:284
Calculator interface for computing alpha_s(Q2) in various ways.
Definition: AlphaS.h:23
std::string file_stem(const std::string &f)
Get the stem (i.e. part without a file extension) from a filename f.
Definition: Utils.h:195
bool has_key(const std::map< K, T > &container, const K &key)
Does the map<K,T> container have a key K key?
Definition: Utils.h:259
int _forcePos
Cached flag for whether to return only positive (or postive definite) PDF values. ...
Definition: PDF.h:516
void setAlphaS(AlphaS *alphas)
Set the AlphaS calculator by pointer.
Definition: PDF.h:447
std::string _mempath
Member data file path.
Definition: PDF.h:500
int lhapdfID() const
PDF member global LHAPDF ID number.
virtual bool inRangeQ(double q) const
Grid range check for Q.
Definition: PDF.h:300
double quarkThreshold(int id) const
Get a flavor scale threshold in GeV by PDG code (|PID| = 1-6 only) Convenience interface to the Mass*...
void xfxQ(double x, double q, std::vector< double > &rtn) const
Get the PDF xf(x) value at (x,q) for "standard" PIDs.
Definition: PDF.h:157
int forcePositive() const
Check whether PDF is set to only return positive (definite) values or not.
Definition: PDF.h:255
int dataversion() const
Version of this PDF's data file.
Definition: PDF.h:376
virtual double q2Min()
Minimum valid Q2 value for this PDF (in GeV2).
Definition: PDF.h:240
virtual double qMax()
Maximum valid Q value for this PDF (in GeV).
Definition: PDF.h:235
Problem exists between keyboard and chair.
Definition: Exceptions.h:110
bool inPhysicalRangeX(double x) const
Check whether the given x is physically valid.
Definition: PDF.h:265
AlphaSPtr _alphas
Optionally loaded AlphaS object.
Definition: PDF.h:509