// C++ definition #include "APFEL/APFELdev.h" #include "APFEL/APFELevol.h" #include "APFEL/APFELobs.h" #include #include #include using std::cerr; using std::endl; using std::cout; using std::stringstream; using std::istream_iterator; namespace APFEL { vector split(string const &input) { stringstream strstr(input); istream_iterator it(strstr); istream_iterator end; vector results(it, end); return results; } void SetParam(map const& par) { // Cleanup APFEL common blocks APFEL::CleanUp(); // Theory, perturbative order of evolution if (!atoi(par.at(kQED).c_str())) APFEL::SetTheory(string("QCD")); else { APFEL::SetTheory(string("QUniD")); APFEL::EnableNLOQEDCorrections(true); } APFEL::SetPerturbativeOrder(atoi(par.at(kPTO).c_str())); if (par.at(kModEv).compare("EXA") == 0) { APFEL::SetPDFEvolution("exactalpha"); APFEL::SetAlphaEvolution("exact"); } else if (par.at(kModEv).compare("EXP") == 0) { APFEL::SetPDFEvolution("expandalpha"); APFEL::SetAlphaEvolution("expanded"); } else if (par.at(kModEv).compare("TRN") == 0) { APFEL::SetPDFEvolution("truncated"); APFEL::SetAlphaEvolution("expanded"); } else { std::cerr << " ERROR: Unrecognised MODEV: "<< par.at(kModEv) < ckm = split(par.at(kCKM)); APFEL::SetCKM(atof(ckm[0].c_str()), atof(ckm[1].c_str()), atof(ckm[2].c_str()), atof(ckm[3].c_str()), atof(ckm[4].c_str()), atof(ckm[5].c_str()), atof(ckm[6].c_str()), atof(ckm[7].c_str()), atof(ckm[8].c_str())); // TMCs APFEL::SetProtonMass(atof(par.at(kMP).c_str())); if (atoi(par.at(kTMC).c_str())) APFEL::EnableTargetMassCorrections(true); // Heavy Quark Masses if (par.at(kHQ).compare("POLE") == 0 ) APFEL::SetPoleMasses(atof(par.at(kmc).c_str()), atof(par.at(kmb).c_str()), atof(par.at(kmt).c_str())); else if (par.at(kHQ).compare("MSBAR") == 0 ) { APFEL::SetMSbarMasses(atof(par.at(kmc).c_str()), atof(par.at(kmb).c_str()), atof(par.at(kmt).c_str())); APFEL::SetMassScaleReference(atof(par.at(kQmc).c_str()), atof(par.at(kQmb).c_str()), atof(par.at(kQmt).c_str())); } else { cerr << "Error: Unrecognised HQMASS"<