Commit 7c46565b authored by Pawel Sznajder's avatar Pawel Sznajder
Browse files

correct definition of (non-)singlet for trans. GPDs in GK19

new definition of DVMP amplitudes
parent 14e49619
...@@ -132,7 +132,6 @@ private: ...@@ -132,7 +132,6 @@ private:
const double m_cNf; ///< Number of active flavors. const double m_cNf; ///< Number of active flavors.
const double m_cLambdaQCD; ///< Lambda QCD const double m_cLambdaQCD; ///< Lambda QCD
const double m_EulerGamma; ///< Euler-Mascheroni Constant const double m_EulerGamma; ///< Euler-Mascheroni Constant
const double m_PositronCharge; ///< Charge of the positron
const double m_Nc; ///< Number of colors const double m_Nc; ///< Number of colors
const double m_Cf; ///< Color factor const double m_Cf; ///< Color factor
const double m_muPi; ///> Parameter proportional to chiral condensate, see for instance Eq. (21) in arxiv:0906.0460 const double m_muPi; ///> Parameter proportional to chiral condensate, see for instance Eq. (21) in arxiv:0906.0460
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
* @version 1.0 * @version 1.0
*/ */
#include <complex>
#include <string> #include <string>
#include "../../../utils/type/PhysicalType.h" #include "../../../utils/type/PhysicalType.h"
...@@ -67,6 +68,13 @@ private: ...@@ -67,6 +68,13 @@ private:
double CrossSectionLT(); ///< Partial cross-section LT double CrossSectionLT(); ///< Partial cross-section LT
double CrossSectionTT(); ///< Partial cross-section TT double CrossSectionTT(); ///< Partial cross-section TT
std::complex<double> Amplitude0p0p(); ///< Computation of the amplitude M_{0+0+}.
std::complex<double> Amplitude0m0p(); ///< Computation of the amplitude M_{0-0+}.
std::complex<double> Amplitude0mpp(); ///< Computation of the amplitude M_{0-++}.
std::complex<double> Amplitude0ppp(); ///< Computation of the amplitude M_{0+++}.
std::complex<double> Amplitude0pmp(); ///< Computation of the amplitude M_{0+-+}.
std::complex<double> Amplitude0mmp(); ///< Computation of the amplitude M_{0--+}.
double m_W2; ///< W^2 variable. double m_W2; ///< W^2 variable.
double m_xi; ///< xi variable. double m_xi; ///< xi variable.
......
...@@ -51,9 +51,8 @@ double DVMPCFFGK06::gslWrapper1(double x, void * params) { ...@@ -51,9 +51,8 @@ double DVMPCFFGK06::gslWrapper1(double x, void * params) {
DVMPCFFGK06::DVMPCFFGK06(const std::string &className) : DVMPCFFGK06::DVMPCFFGK06(const std::string &className) :
DVMPConvolCoeffFunctionModule(className), m_cNf(3.), m_cLambdaQCD(0.22), m_EulerGamma( DVMPConvolCoeffFunctionModule(className), m_cNf(3.), m_cLambdaQCD(0.22), m_EulerGamma(
0.577216), m_PositronCharge(0.3028), m_Nc(3.), m_Cf(4. / 3.), m_muPi( 0.577216), m_Nc(3.), m_Cf(4. / 3.), m_muPi(2.0), m_tmin(0.), m_pRunningAlphaStrongModule(
2.0), m_tmin(0.), m_pRunningAlphaStrongModule(0), m_MCNWarmUp( 0), m_MCNWarmUp(2E4), m_MCCalls(2E5), m_MCChi2Limit(0.8) {
2E4), m_MCCalls(2E5), m_MCChi2Limit(0.8) {
//relate GPD types with functions to be used //relate GPD types with functions to be used
m_listOfCFFComputeFunctionAvailable.insert( m_listOfCFFComputeFunctionAvailable.insert(
...@@ -72,11 +71,10 @@ DVMPCFFGK06::DVMPCFFGK06(const std::string &className) : ...@@ -72,11 +71,10 @@ DVMPCFFGK06::DVMPCFFGK06(const std::string &className) :
DVMPCFFGK06::DVMPCFFGK06(const DVMPCFFGK06 &other) : DVMPCFFGK06::DVMPCFFGK06(const DVMPCFFGK06 &other) :
DVMPConvolCoeffFunctionModule(other), m_cNf(other.m_cNf), m_cLambdaQCD( DVMPConvolCoeffFunctionModule(other), m_cNf(other.m_cNf), m_cLambdaQCD(
other.m_cLambdaQCD), m_EulerGamma(other.m_EulerGamma), m_PositronCharge( other.m_cLambdaQCD), m_EulerGamma(other.m_EulerGamma), m_Nc(
other.m_PositronCharge), m_Nc(other.m_Nc), m_Cf(other.m_Cf), m_muPi( other.m_Nc), m_Cf(other.m_Cf), m_muPi(other.m_muPi), m_tmin(
other.m_muPi), m_tmin(other.m_tmin), m_MCNWarmUp( other.m_tmin), m_MCNWarmUp(other.m_MCNWarmUp), m_MCCalls(
other.m_MCNWarmUp), m_MCCalls(other.m_MCCalls), m_MCChi2Limit( other.m_MCCalls), m_MCChi2Limit(other.m_MCChi2Limit) {
other.m_MCChi2Limit) {
//clone alpaS module //clone alpaS module
if (other.m_pRunningAlphaStrongModule != 0) { if (other.m_pRunningAlphaStrongModule != 0) {
...@@ -216,10 +214,7 @@ std::complex<double> DVMPCFFGK06::computeCFF() { ...@@ -216,10 +214,7 @@ std::complex<double> DVMPCFFGK06::computeCFF() {
//Ht //Ht
case GPDType::Ht: { case GPDType::Ht: {
convolution = convolutionTwist2(m_currentGPDComputeType); return convolutionTwist2(m_currentGPDComputeType);
return m_PositronCharge * sqrt(1. - pow(m_xi, 2.)) / sqrt(m_Q2)
* convolution;
} }
break; break;
...@@ -227,12 +222,7 @@ std::complex<double> DVMPCFFGK06::computeCFF() { ...@@ -227,12 +222,7 @@ std::complex<double> DVMPCFFGK06::computeCFF() {
//Et //Et
case GPDType::Et: { case GPDType::Et: {
convolution = convolutionTwist2(m_currentGPDComputeType); return convolutionTwist2(m_currentGPDComputeType);
return m_PositronCharge * sqrt(1. - pow(m_xi, 2.)) / sqrt(m_Q2)
* (-pow(m_xi, 2.) / (1. - pow(m_xi, 2.)) * convolution)
+ m_PositronCharge / sqrt(m_Q2) * sqrt(-(m_t - m_tmin)) * m_xi
/ (2. * Constant::PROTON_MASS) * convolution;
} }
break; break;
...@@ -240,11 +230,9 @@ std::complex<double> DVMPCFFGK06::computeCFF() { ...@@ -240,11 +230,9 @@ std::complex<double> DVMPCFFGK06::computeCFF() {
//HTrans //HTrans
case GPDType::HTrans: { case GPDType::HTrans: {
convolution = convolutionTwist3A(m_currentGPDComputeType) return convolutionTwist3A(m_currentGPDComputeType)
+ convolutionTwist3B(m_currentGPDComputeType) + convolutionTwist3B(m_currentGPDComputeType)
+ convolutionTwist3C(m_currentGPDComputeType); + convolutionTwist3C(m_currentGPDComputeType);
return m_PositronCharge * sqrt(1. - pow(m_xi, 2.)) * convolution;
} }
break; break;
...@@ -252,12 +240,9 @@ std::complex<double> DVMPCFFGK06::computeCFF() { ...@@ -252,12 +240,9 @@ std::complex<double> DVMPCFFGK06::computeCFF() {
//EbarTrans //EbarTrans
case GPDType::EbarTrans: { case GPDType::EbarTrans: {
convolution = convolutionTwist3A(m_currentGPDComputeType) return convolutionTwist3A(m_currentGPDComputeType)
+ convolutionTwist3B(m_currentGPDComputeType) + convolutionTwist3B(m_currentGPDComputeType)
+ convolutionTwist3C(m_currentGPDComputeType); + convolutionTwist3C(m_currentGPDComputeType);
return -2.0 * m_PositronCharge * sqrt(-(m_t - m_tmin))
/ (4. * Constant::PROTON_MASS) * convolution;
} }
break; break;
...@@ -833,7 +818,9 @@ double DVMPCFFGK06::convolutionTwist3BFunction(double x, void * params) const { ...@@ -833,7 +818,9 @@ double DVMPCFFGK06::convolutionTwist3BFunction(double x, void * params) const {
// - getMesonGPDCombination(m_gpdResultXiXi)) // - getMesonGPDCombination(m_gpdResultXiXi))
// / (x - m_xi); // / (x - m_xi);
double convolution = 1. / (x + m_xi) * (getMesonGPDCombination(gpdResult) - getMesonGPDCombination(m_gpdResultmXiXi)) double convolution = 1. / (x + m_xi)
* (getMesonGPDCombination(gpdResult)
- getMesonGPDCombination(m_gpdResultmXiXi))
- 1. - 1.
* (getMesonGPDCombination(gpdResult) * (getMesonGPDCombination(gpdResult)
- getMesonGPDCombination(m_gpdResultXiXi)) - getMesonGPDCombination(m_gpdResultXiXi))
...@@ -913,9 +900,9 @@ std::complex<double> DVMPCFFGK06::convolutionTwist3C( ...@@ -913,9 +900,9 @@ std::complex<double> DVMPCFFGK06::convolutionTwist3C(
* (getMesonGPDCombination(m_gpdResultXiXi) * (getMesonGPDCombination(m_gpdResultXiXi)
* (std::complex<double>(0., 1.) * M_PI * (std::complex<double>(0., 1.) * M_PI
+ log((1. + m_xi) / (1. - m_xi))) + log((1. + m_xi) / (1. - m_xi)))
+ getMesonGPDCombination(m_gpdResultmXiXi) + getMesonGPDCombination(m_gpdResultmXiXi)
* (std::complex<double>(0., 1.) * M_PI * (std::complex<double>(0., 1.) * M_PI
+ log((1. + m_xi) / (1. - m_xi)))); + log((1. + m_xi) / (1. - m_xi))));
} }
......
...@@ -378,13 +378,13 @@ PartonDistribution GPDGK19::computeHTrans() { ...@@ -378,13 +378,13 @@ PartonDistribution GPDGK19::computeHTrans() {
quarkDistribution_d.setQuarkDistribution(dVal + dSea); quarkDistribution_d.setQuarkDistribution(dVal + dSea);
// Set Etq(+) // Set Etq(+)
quarkDistribution_u.setQuarkDistributionPlus(uVal + fHTransuValMx); quarkDistribution_u.setQuarkDistributionPlus(uVal - fHTransuValMx);
quarkDistribution_d.setQuarkDistributionPlus(dVal + fHTransdValMx); quarkDistribution_d.setQuarkDistributionPlus(dVal - fHTransdValMx);
quarkDistribution_s.setQuarkDistributionPlus(0.); quarkDistribution_s.setQuarkDistributionPlus(0.);
// Set Eq(-) // Set Eq(-)
quarkDistribution_u.setQuarkDistributionMinus(uVal - fHTransuValMx); quarkDistribution_u.setQuarkDistributionMinus(uVal + fHTransuValMx);
quarkDistribution_d.setQuarkDistributionMinus(dVal - fHTransdValMx); quarkDistribution_d.setQuarkDistributionMinus(dVal + fHTransdValMx);
quarkDistribution_s.setQuarkDistributionMinus(0.); quarkDistribution_s.setQuarkDistributionMinus(0.);
partonDistribution.setGluonDistribution(gluonDistribution); partonDistribution.setGluonDistribution(gluonDistribution);
...@@ -464,13 +464,13 @@ PartonDistribution GPDGK19::computeEbarTrans() { ...@@ -464,13 +464,13 @@ PartonDistribution GPDGK19::computeEbarTrans() {
quarkDistribution_d.setQuarkDistribution(dVal + dSea); quarkDistribution_d.setQuarkDistribution(dVal + dSea);
// Set Etq(+) // Set Etq(+)
quarkDistribution_u.setQuarkDistributionPlus(uVal + fETransuValMx); quarkDistribution_u.setQuarkDistributionPlus(uVal - fETransuValMx);
quarkDistribution_d.setQuarkDistributionPlus(dVal + fETransdValMx); quarkDistribution_d.setQuarkDistributionPlus(dVal - fETransdValMx);
quarkDistribution_s.setQuarkDistributionPlus(0.); quarkDistribution_s.setQuarkDistributionPlus(0.);
// Set Eq(-) // Set Eq(-)
quarkDistribution_u.setQuarkDistributionMinus(uVal - fETransuValMx); quarkDistribution_u.setQuarkDistributionMinus(uVal + fETransuValMx);
quarkDistribution_d.setQuarkDistributionMinus(dVal - fETransdValMx); quarkDistribution_d.setQuarkDistributionMinus(dVal + fETransdValMx);
quarkDistribution_s.setQuarkDistributionMinus(0.); quarkDistribution_s.setQuarkDistributionMinus(0.);
partonDistribution.setGluonDistribution(gluonDistribution); partonDistribution.setGluonDistribution(gluonDistribution);
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#include <ElementaryUtils/logger/CustomException.h> #include <ElementaryUtils/logger/CustomException.h>
#include <ElementaryUtils/string_utils/Formatter.h> #include <ElementaryUtils/string_utils/Formatter.h>
#include <cmath> #include <cmath>
#include <complex>
#include "../../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../../include/partons/beans/gpd/GPDType.h"
#include "../../../../../include/partons/beans/MesonType.h" #include "../../../../../include/partons/beans/MesonType.h"
...@@ -11,7 +10,6 @@ ...@@ -11,7 +10,6 @@
#include "../../../../../include/partons/BaseObjectRegistry.h" #include "../../../../../include/partons/BaseObjectRegistry.h"
#include "../../../../../include/partons/FundamentalPhysicalConstants.h" #include "../../../../../include/partons/FundamentalPhysicalConstants.h"
#include "../../../../../include/partons/modules/xi_converter/DVMP/DVMPXiConverterModule.h" #include "../../../../../include/partons/modules/xi_converter/DVMP/DVMPXiConverterModule.h"
#include "../../../../../include/partons/modules/xi_converter/XiConverterModule.h"
#include "../../../../../include/partons/utils/type/PhysicalUnit.h" #include "../../../../../include/partons/utils/type/PhysicalUnit.h"
namespace PARTONS { namespace PARTONS {
...@@ -94,13 +92,8 @@ double DVMPProcessGK06::CrossSectionL() { ...@@ -94,13 +92,8 @@ double DVMPProcessGK06::CrossSectionL() {
// Longitudinal partial cross section. See Eq. (43) in arxiv:0906.0460 // Longitudinal partial cross section. See Eq. (43) in arxiv:0906.0460
std::complex<double> amplitude0m0p = getConvolCoeffFunctionValue( std::complex<double> amplitude0m0p = Amplitude0m0p();
GPDType::Et); std::complex<double> amplitude0p0p = Amplitude0p0p();
//TODO TBC
std::complex<double> amplitude0p0p = getConvolCoeffFunctionValue(
GPDType::Ht)
- 2 * Constant::PROTON_MASS * m_xi / sqrt(1. - pow(m_xi, 2))
/ sqrt(-(m_t - m_tmin)) * amplitude0m0p;
double result = 1. double result = 1.
/ (32.0 * M_PI * (m_W2 - pow(Constant::PROTON_MASS, 2.0)) / (32.0 * M_PI * (m_W2 - pow(Constant::PROTON_MASS, 2.0))
...@@ -120,13 +113,10 @@ double DVMPProcessGK06::CrossSectionT() { ...@@ -120,13 +113,10 @@ double DVMPProcessGK06::CrossSectionT() {
// Transverse partial cross section. See Eq. (43) in arxiv:0906.0460 // Transverse partial cross section. See Eq. (43) in arxiv:0906.0460
std::complex<double> amplitude0mpp = getConvolCoeffFunctionValue( std::complex<double> amplitude0mpp = Amplitude0mpp();
GPDType::HTrans); std::complex<double> amplitude0ppp = Amplitude0ppp();
std::complex<double> amplitude0ppp = getConvolCoeffFunctionValue( std::complex<double> amplitude0pmp = Amplitude0pmp();
GPDType::EbarTrans); std::complex<double> amplitude0mmp = Amplitude0mmp();
std::complex<double> amplitude0pmp = getConvolCoeffFunctionValue(
GPDType::EbarTrans);
std::complex<double> amplitude0mmp(0., 0.);
double result = 1. double result = 1.
/ (32.0 * M_PI * (m_W2 - pow(Constant::PROTON_MASS, 2.0)) / (32.0 * M_PI * (m_W2 - pow(Constant::PROTON_MASS, 2.0))
...@@ -144,20 +134,12 @@ double DVMPProcessGK06::CrossSectionT() { ...@@ -144,20 +134,12 @@ double DVMPProcessGK06::CrossSectionT() {
double DVMPProcessGK06::CrossSectionLT() { double DVMPProcessGK06::CrossSectionLT() {
std::complex<double> amplitude0m0p = getConvolCoeffFunctionValue( std::complex<double> amplitude0m0p = Amplitude0m0p();
GPDType::Et); std::complex<double> amplitude0p0p = Amplitude0p0p();
//TODO TBC std::complex<double> amplitude0mpp = Amplitude0mpp();
std::complex<double> amplitude0p0p = getConvolCoeffFunctionValue( std::complex<double> amplitude0ppp = Amplitude0ppp();
GPDType::Ht) std::complex<double> amplitude0pmp = Amplitude0pmp();
- 2 * Constant::PROTON_MASS * m_xi / sqrt(1. - pow(m_xi, 2)) std::complex<double> amplitude0mmp = Amplitude0mmp();
/ sqrt(-(m_t - m_tmin)) * amplitude0m0p;
std::complex<double> amplitude0mpp = getConvolCoeffFunctionValue(
GPDType::HTrans);
std::complex<double> amplitude0ppp = getConvolCoeffFunctionValue(
GPDType::EbarTrans);
std::complex<double> amplitude0pmp = getConvolCoeffFunctionValue(
GPDType::EbarTrans);
std::complex<double> amplitude0mmp(0., 0.);
// Partial cross section of the interference part LT. See Eq. (43) in arxiv:0906.0460 // Partial cross section of the interference part LT. See Eq. (43) in arxiv:0906.0460
...@@ -179,13 +161,10 @@ double DVMPProcessGK06::CrossSectionLT() { ...@@ -179,13 +161,10 @@ double DVMPProcessGK06::CrossSectionLT() {
double DVMPProcessGK06::CrossSectionTT() { double DVMPProcessGK06::CrossSectionTT() {
std::complex<double> amplitude0mpp = getConvolCoeffFunctionValue( std::complex<double> amplitude0mpp = Amplitude0mpp();
GPDType::HTrans); std::complex<double> amplitude0ppp = Amplitude0ppp();
std::complex<double> amplitude0ppp = getConvolCoeffFunctionValue( std::complex<double> amplitude0pmp = Amplitude0pmp();
GPDType::EbarTrans); std::complex<double> amplitude0mmp = Amplitude0mmp();
std::complex<double> amplitude0pmp = getConvolCoeffFunctionValue(
GPDType::EbarTrans);
std::complex<double> amplitude0mmp(0., 0.);
// Partial cross section of the interference part TT. See Eq. (43) in arxiv:0906.0460 // Partial cross section of the interference part TT. See Eq. (43) in arxiv:0906.0460
...@@ -209,4 +188,58 @@ double DVMPProcessGK06::lambdaFunction(double a, double b, double c) const { ...@@ -209,4 +188,58 @@ double DVMPProcessGK06::lambdaFunction(double a, double b, double c) const {
- 2.0 * (a * b + a * c + b * c); - 2.0 * (a * b + a * c + b * c);
} }
std::complex<double> DVMPProcessGK06::Amplitude0p0p() {
std::complex<double> amplitude0p0p = sqrt(1. - pow(m_xi, 2.))
* Constant::POSITRON_CHARGE / sqrt(m_Q2)
* (getConvolCoeffFunctionValue(GPDType::Ht)
- pow(m_xi, 2.) / (1. - pow(m_xi, 2.))
* getConvolCoeffFunctionValue(GPDType::Et));
return amplitude0p0p;
}
std::complex<double> DVMPProcessGK06::Amplitude0m0p() {
std::complex<double> amplitude0m0p = Constant::POSITRON_CHARGE / sqrt(m_Q2)
* sqrt(-(m_t - m_tmin)) * m_xi / (2. * Constant::PROTON_MASS)
* getConvolCoeffFunctionValue(GPDType::Et);
return amplitude0m0p;
}
std::complex<double> DVMPProcessGK06::Amplitude0mpp() {
std::complex<double> amplitude0mpp = Constant::POSITRON_CHARGE
* sqrt(1. - pow(m_xi, 2.))
* getConvolCoeffFunctionValue(GPDType::HTrans);
return amplitude0mpp;
}
std::complex<double> DVMPProcessGK06::Amplitude0ppp() {
std::complex<double> amplitude0ppp = -1.0 * Constant::POSITRON_CHARGE
* sqrt(-(m_t - m_tmin)) / (4. * Constant::PROTON_MASS)
* getConvolCoeffFunctionValue(GPDType::EbarTrans);
return amplitude0ppp;
}
std::complex<double> DVMPProcessGK06::Amplitude0pmp() {
std::complex<double> amplitude0pmp = -1.0 * Constant::POSITRON_CHARGE
* sqrt(-(m_t - m_tmin)) / (4. * Constant::PROTON_MASS)
* getConvolCoeffFunctionValue(GPDType::EbarTrans);
return amplitude0pmp;
}
std::complex<double> DVMPProcessGK06::Amplitude0mmp() {
std::complex<double> amplitude0mmp = 0.0;
return amplitude0mmp;
}
} /* namespace PARTONS */ } /* namespace PARTONS */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment