int main()
{
const double mu0 = sqrt(2);
const std::vector<double> Thresholds = {0, 0, 0, sqrt(2), 4.5, 175};
const int PerturbativeOrder = 0;
const double xi = 0.3;
const double AlphaQCDRef = 0.35;
const double MuAlphaQCDRef = sqrt(2);
apfel::AlphaQCD a{AlphaQCDRef, MuAlphaQCDRef, Thresholds, PerturbativeOrder};
const auto as = [&] (
double const& mu) ->
double{
return Alphas.
Evaluate(mu); };
const auto GpdObj = InitializeGpdObjects(g, Thresholds, xi);
const auto EvolvedGPDs = BuildDglap(GpdObj, apfel::LHToyPDFs, mu0, PerturbativeOrder, as);
const double mu = 10;
std::cout << std::scientific << "Direct evolution (4th order Runge-Kutta) from Q0 = " << mu0 << " GeV to Q = " << mu << " GeV... ";
const std::map<int, apfel::Distribution> gpds =
apfel::QCDEvToPhys(TabulatedGPDs.Evaluate(mu).GetObjects());
std::cout << "Interpolation of the tabulated GPDs... ";
const std::map<int, apfel::Distribution> tgpds =
apfel::QCDEvToPhys(TabulatedGPDs.Evaluate(mu).GetObjects());
const std::vector<double> xlha = {1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 3e-1, 5e-1, 7e-1, 9e-1};
std::cout << "\nAlphaQCD(Q) = " << Alphas.Evaluate(mu) << std::endl;
std::cout << "\n x "
<< " u-ubar "
<< " d-dbar "
<< " 2(ubr+dbr) "
<< " c+cbar "
<< " gluon "
<< std::endl;
std::cout << "Direct Evolution:" << std::endl;
for (auto const& x : xlha)
{
std::cout.precision(1);
std::cout << x;
std::cout.precision(4);
std::cout << " " << (gpds.at(2) - gpds.at(-2)).Evaluate(x)
<< " " << (gpds.at(1) - gpds.at(-1)).Evaluate(x)
<< " " << 2 * (gpds.at(-2) + gpds.at(-1)).Evaluate(x)
<< " " << (gpds.at(4) + gpds.at(-4)).Evaluate(x)
<< " " << gpds.at(0).Evaluate(x)
<< std::endl;
}
std::cout << "\n";
std::cout << "Interpolation on the GPD table (all x for each Q):" << std::endl;
for (auto const& x : xlha)
{
std::cout.precision(1);
std::cout << x;
std::cout.precision(4);
std::cout << " " << (tgpds.at(2) - tgpds.at(-2)).Evaluate(x)
<< " " << (tgpds.at(1) - tgpds.at(-1)).Evaluate(x)
<< " " << 2 * (tgpds.at(-2) + tgpds.at(-1)).Evaluate(x)
<< " " << (tgpds.at(4) + tgpds.at(-4)).Evaluate(x)
<< " " << tgpds.at(0).Evaluate(x)
<< std::endl;
}
std::cout << "\n";
return 0;
}
The AlphaQCD is a specialization class of the MatchedEvolution class for the computation of the QCD c...
Definition alphaqcd.h:21
The Grid class defines ab object that is essentially a collection of "SubGrid" objects plus other glo...
Definition grid.h:22
T Evaluate(double const &Q) const
Function that interpolates on the grid in Q.
Class for the x-space interpolation SubGrids.
Definition subgrid.h:23
The template TabulateObject class is a derived of the QGrid class that tabulates on object of type T ...
Definition tabulateobject.h:26
The Timer class computes the time elapsed between start and stop.
Definition timer.h:20
void stop(bool const &ForceDisplay=false)
This function stops the timer and reports the elapsed time in seconds since the last time the timer w...
Definition timer.h:36
void start()
This function starts the timer.
Definition timer.h:30
std::map< int, double > QCDEvToPhys(std::map< int, double > const &QCDEvMap)
Rotation from the QCD evolution to the physical basis.