Skip to content

Commit

Permalink
Merge pull request #37 from niclaurenti/new-aQg30
Browse files Browse the repository at this point in the history
Implement a_Qg30 from 2403.00513
  • Loading branch information
niclaurenti authored Mar 27, 2024
2 parents 6336aea + 1e7f495 commit 8f3b02c
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 7 deletions.
51 changes: 50 additions & 1 deletion src/HighEnergyCoefficientFunction.cc
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ Value PowerTermsCoefficientFunction::fxBand(
double x, double m2Q2, double m2mu2, int nf
) const {
// TODO: in this way the error is very small: should take all the
// combinations
// combinations?
double central = (highenergy_->fx(x, m2Q2, m2mu2, nf))
- (highenergyhighscale_->fx(x, m2Q2, m2mu2, nf));
double higher =
Expand All @@ -225,6 +225,55 @@ Value PowerTermsCoefficientFunction::fxBand(
return Value(central, lower, higher);
}

// In this way the error is enormous

// Value PowerTermsCoefficientFunction::fxBand(
// double x, double m2Q2, double m2mu2, int nf
// ) const {

// double central = (highenergy_->fx(x, m2Q2, m2mu2, nf))
// - (highenergyhighscale_->fx(x, m2Q2, m2mu2, nf));

// Value tmp1 = highenergy_->fxBand(x, m2Q2, m2mu2, nf);
// Value tmp2 = highenergyhighscale_->fxBand(x, m2Q2, m2mu2, nf);

// double delta_he_up = tmp1.GetHigher() - tmp1.GetCentral();
// double delta_he_down = tmp1.GetCentral() - tmp1.GetLower();

// double delta_hehs_up = tmp2.GetHigher() - tmp2.GetCentral();
// double delta_hehs_down = tmp2.GetCentral() - tmp2.GetLower();

// double err_up = sqrt(delta_he_up*delta_he_up + delta_hehs_up*delta_hehs_up);
// double err_down = sqrt(delta_he_down*delta_he_down + delta_hehs_down*delta_hehs_down);

// return Value(central, central + err_up, central - err_down);
// }

// In this way the error is enormous

// Value PowerTermsCoefficientFunction::fxBand(
// double x, double m2Q2, double m2mu2, int nf
// ) const {

// double central = (highenergy_->fx(x, m2Q2, m2mu2, nf))
// - (highenergyhighscale_->fx(x, m2Q2, m2mu2, nf));

// vector<double> tmp1 = highenergy_->fxBand(x, m2Q2, m2mu2, nf).ToVect();
// vector<double> tmp2 = highenergyhighscale_->fxBand(x, m2Q2, m2mu2, nf).ToVect();

// double tmp, higher = central, lower = central;
// for(double he : tmp1) {
// for (double hehs : tmp2) {
// tmp = he - hehs;

// if(tmp > higher) higher = tmp;
// if(tmp < lower) lower = tmp;
// }
// }

// return Value(central, higher, lower);
// }

//==========================================================================================//
// High energy limit of the gluon coefficient function for F2 at O(as^2).
//
Expand Down
33 changes: 27 additions & 6 deletions src/MatchingCondition.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,18 @@ MatchingCondition::MatchingCondition(
entry2_ = entry2;

// check version
if (version != "exact" && version != "improved" && version != "original") {
cout << "Error: version must be 'exact', 'improved' or 'original'! Got "
if (version != "exact" && version != "improved" && version != "original"
&& version != "blumline") {
cout << "Error: version must be 'exact', 'improved', 'blumline' or "
"'original'! Got "
<< version << endl;
exit(-1);
}

if (entry2 == 'q' && version == "improved") {
cout << "Error: quark channel doesn't have 'improved' version!" << endl;
if (entry2 == 'q' && (version == "improved" || version == "blumline")) {
cout << "Error: quark channel doesn't have 'improved' or 'blumline' "
"version!"
<< endl;
exit(-1);
}

Expand Down Expand Up @@ -75,6 +79,10 @@ Value MatchingCondition::MuIndependentNfIndependentTerm(double x) const {
int low_id;
if (version_ == "exact")
return Value(a_Qg_30(x, 0));
else if (version_ == "blumline")
// This version doesn't have an uncertainty band
// so returning the same value three times
return Value(a_Qg_30(x, 2));
else if (version_ == "improved")
low_id = -1;
else
Expand Down Expand Up @@ -250,8 +258,9 @@ vector<double> MatchingCondition::NotOrdered(double x) const {
//
// v = 0 : exact result
// v = 1 : Eq. (3.49) of Ref. [arXiv:1205.5727]
// v = 2 : Eq. (16) Ref. of [arXiv:1701.05838]
// v = -1 : Eq. (16) Ref. of [arXiv:1701.05838]
// v = -12 : Eq. (3.50) of Ref. [arXiv:1205.5727]
// v = 2 : approximation from [arXiv:2403.00513]
//------------------------------------------------------------------------------------------//

double MatchingCondition::a_Qg_30(double x, int v) const {
Expand Down Expand Up @@ -284,9 +293,21 @@ double MatchingCondition::a_Qg_30(double x, int v) const {
-2658.323 * L12 - 7449.948 * L1 - 7460.002 * (2. - x)
+ 3178.819 * L2 + 4710.725 / x + 1548.891 / x * L
);
} else if (v == 2) {
double L14 = L13 * L1;
double L15 = L14 * L1;
double L3 = L2 * L;
double L4 = L3 * L;
double L5 = L4 * L;
return -5882.68 + 8956.65 / x + 10318.5 * x - 8363.19 * x * x
+ 737.165 * L1 - 332.537 * L12 + 4.3802 * L13 - 8.20988 * L14
+ 3.7037 * L15 + 11013.4 * L + (1548.89 * L) / x
+ 6558.74 * x * L - 720.048 * L2 + 514.091 * L3 - 21.7593 * L4
+ 4.84444 * L5 - 274.207 * (-L1 + L)
- 274.207 * (-1 + x - x * L1 + x * L);
} else {
cout << "Error in MatchingCondition::a_Qg_30: Choose either v=0, v=1, "
"v=-1 or v=-12"
"v=-1, v=-12 or v=2"
<< endl;
exit(-1);
}
Expand Down

0 comments on commit 8f3b02c

Please sign in to comment.