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" 
   28       ATOP = -6, ABOTTOM = -5, ACHARM = -4, ASTRANGE = -3, AUP = -2, ADOWN = -1,
 
   30       DOWN = 1, UP = 2, STRANGE = 3, CHARM = 4, BOTTOM = 5, TOP = 6
 
   62     void _loadInfo(
const std::string& mempath);
 
   64     void _loadInfo(
const std::string& setname, 
int member) {
 
   65       const string searchpath = findpdfmempath(setname, member);
 
   66       if (searchpath.empty())
 
   67         throw UserError(
"Can't find a valid PDF " + setname + 
"/" + to_str(member));
 
   68       _loadInfo(searchpath);
 
   71     void _loadInfo(
int lhaid) {
 
   72       const pair<string,
int> setname_memid = lookupPDF(lhaid);
 
   73       if (setname_memid.second == -1)
 
   74         throw IndexError(
"Can't find a PDF with LHAPDF ID = " + to_str(lhaid));
 
   75       _loadInfo(setname_memid.first, setname_memid.second);
 
   95     double xfxQ2(
int id, 
double x, 
double q2) 
const;
 
  108     double xfxQ(
int id, 
double x, 
double q) 
const {
 
  121     void xfxQ2(
double x, 
double q2, std::map<
int, 
double>& rtn) 
const;
 
  132     void xfxQ(
double x, 
double q, std::map<
int, 
double>& rtn) 
const {
 
  149     void xfxQ2(
double x, 
double q2, std::vector<
double>& rtn) 
const;
 
  164     void xfxQ(
double x, 
double q, std::vector<
double>& rtn) 
const {
 
  192       return xfxQ2(x, q*q);
 
  210     virtual double _xfxQ2(
int id, 
double x, 
double q2) 
const = 0;
 
  212     virtual void _xfxQ2(
double x, 
double q2, std::vector<
double>& ret) 
const = 0;
 
  224       if (info().has_key(
"XMin"))
 
  225         return info().get_entry_as<
double>(
"XMin");
 
  226       return numeric_limits<
double>::epsilon();
 
  231       if (info().has_key(
"XMax"))
 
  232         return info().get_entry_as<
double>(
"XMax");
 
  239       return info().get_entry_as<
double>(
"QMin", 0);
 
  245       return info().get_entry_as<
double>(
"QMax", numeric_limits<
double>::max());
 
  256       return (info().has_key(
"QMax")) ? sqr(info().get_entry_as<
double>(
"QMax")) : numeric_limits<
double>::max();
 
  267         _forcePos = info().get_entry_as<
unsigned int>(
"ForcePositive", 0);
 
  281       return x >= 0.0 && x <= 1.0;
 
  361       return getPDFSet(_setname());
 
  374       const string memname = file_stem(_mempath);
 
  375       assert(memname.length() > 5); 
 
  376       const int memid = lexical_cast<
int>(memname.substr(memname.length()-4)); 
 
  387       return info().get_entry(
"MemDesc", info().get_entry(
"PdfDesc", 
""));
 
  392       return info().get_entry_as<
int>(
"DataVersion", -1);
 
  397       return to_lower(info().get_entry(
"MemType", info().get_entry(
"PdfType")));
 
  419       if (_flavors.empty()) {
 
  420         _flavors = info().get_entry_as< vector<
int> >(
"Flavors");
 
  421         sort(_flavors.begin(), _flavors.end());
 
  431       sort(_flavors.begin(), _flavors.end());
 
  445       return info().get_entry_as<
int>(
"OrderQCD");
 
  477       _alphas.reset(alphas);
 
  482       _alphas = std::move(alphas);
 
  513       if (!
hasAlphaS()) 
throw Exception(
"No AlphaS pointer has been set");
 
  523       _alphas.reset( mkAlphaS(info()) );
 
  528       return basename(dirname(_mempath));