Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F7878828
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
View Options
diff --git a/CepGen/StructureFunctions/ALLM.cpp b/CepGen/StructureFunctions/ALLM.cpp
index ecad060..fcf4981 100644
--- a/CepGen/StructureFunctions/ALLM.cpp
+++ b/CepGen/StructureFunctions/ALLM.cpp
@@ -1,155 +1,166 @@
#include "ALLM.h"
+#include "CepGen/Physics/Constants.h"
#include <cmath>
namespace CepGen
{
namespace SF
{
+ ALLM::Parameterisation::Parameterisation()
+ {
+ ratio_comp = E143Ratio();
+ }
+
ALLM::Parameterisation
ALLM::Parameterisation::allm91()
{
Parameterisation p;
p.pomeron = Parameters( {
{ 0.26550, 0.04856, 1.04682 },
{ -0.04503, -0.36407, 8.17091 },
{ 0.49222, 0.52116, 3.5515 } } );
p.reggeon = Parameters( {
{ 0.67639, 0.49027, 2.66275 },
{ 0.60408, 0.17353, 1.61812 },
{ 1.26066, 1.83624, 0.81141 } } );
p.m02 = 0.30508;
p.mp2 = 10.676;
p.mr2 = 0.20623;
p.q02 = 0.27799;
p.lambda2 = 0.06527;
return p;
}
ALLM::Parameterisation
ALLM::Parameterisation::allm97()
{
Parameterisation p;
p.pomeron = Parameters( {
{ 0.28067, 0.22291, 2.1979 },
{ -0.0808, -0.44812, 1.1709 },
{ 0.36292, 1.8917, 1.8439 } } );
p.reggeon = Parameters( {
{ 0.80107, 0.97307, 3.4924 },
{ 0.58400, 0.37888, 2.6063 },
{ 0.01147, 3.7582, 0.49338 } } );
p.m02 = 0.31985;
p.mp2 = 49.457;
p.mr2 = 0.15052;
p.q02 = 0.52544;
p.lambda2 = 0.06526;
return p;
}
ALLM::Parameterisation
ALLM::Parameterisation::hht_allm()
{
Parameterisation p;
p.pomeron = Parameters( {
{ 0.412, 0.164, 17.7 },
{ -0.835, -0.446, 10.6 },
{ -45.8, 55.7, -0.031 } } );
p.reggeon = Parameters( {
{ -1.04, 2.97, 0.163 },
{ 0.706, 0.185, -16.4 },
{ -1.29, 4.51, 1.16 } } );
p.m02 = 0.446;
p.mp2 = 74.2;
p.mr2 = 29.3;
p.q02 = 4.74e-5;
p.lambda2 = 2.2e-8;
return p;
}
ALLM::Parameterisation
ALLM::Parameterisation::hht_allm_ft()
{
Parameterisation p;
p.pomeron = Parameters( {
{ 0.356, 0.171, 18.6 },
{ -0.075, -0.470, 9.2 },
{ -0.477, 54.0, 0.073 } } );
p.reggeon = Parameters( {
{ -0.636, 3.37, -0.660 },
{ 0.882, 0.082, -8.5 },
{ 0.339, 3.38, 1.07 } } );
p.m02 = 0.388;
p.mp2 = 50.8;
p.mr2 = 0.838;
p.q02 = 1.87e-5;
p.lambda2 = 4.4e-9;
return p;
}
ALLM::Parameterisation
ALLM::Parameterisation::gd07p()
{
Parameterisation p;
p.pomeron = Parameters( {
{ 0.339, 0.127, 1.16 },
{ -0.105, -0.495, 1.29 },
{ -1.42, 4.51, 0.551 } } );
p.reggeon = Parameters( {
{ 0.838, 2.36, 1.77 },
{ 0.374, 0.998, 0.775 },
{ 2.71, 1.83, 1.26 } } );
p.m02 = 0.454;
p.mp2 = 30.7;
p.mr2 = 0.117;
p.q02 = 1.15;
p.lambda2 = 0.06527;
return p;
}
ALLM::Parameterisation
ALLM::Parameterisation::gd11p()
{
Parameterisation p;
p.pomeron = Parameters( {
{ 0.3638, 0.1211, 1.166 }, // c
{ -0.11895, -0.4783, 1.353 }, // a
{ 1.0833, 2.656, 1.771 } } ); // b
p.reggeon = Parameters( {
{ 1.3633, 2.256, 2.209 },
{ 0.3425, 1.0603, 0.5164 },
{ -10.408, 14.857, 0.07739 } } );
p.m02 = 0.5063;
p.mp2 = 34.75;
p.mr2 = 0.03190;
p.q02 = 1.374;
p.lambda2 = 0.06527;
return p;
}
StructureFunctions
ALLM::operator()( double q2, double xbj ) const
{
const double factor = q2/( q2+params_.m02 );
const double W2_eff = q2*( 1.-xbj )/xbj;
const double xp = ( q2+params_.mp2 )/( q2+W2_eff+params_.mp2 ),
xr = ( q2+params_.mr2 )/( q2+W2_eff+params_.mr2 );
const double xlog1 = log( ( q2+params_.q02 )/ params_.lambda2 ), xlog2 = log( params_.q02/params_.lambda2 );
const double t = log( xlog1/xlog2 );
const double apom = params_.pomeron.a[0] + ( params_.pomeron.a[0]-params_.pomeron.a[1] )*( 1./( 1.+pow( t, params_.pomeron.a[2] ) ) - 1. );
const double bpom = params_.pomeron.b[0] + params_.pomeron.b[1]*pow( t, params_.pomeron.b[2] );
const double cpom = params_.pomeron.c[0] + ( params_.pomeron.c[0]-params_.pomeron.c[1] )*( 1./( 1.+pow( t, params_.pomeron.c[2] ) ) - 1. );
const double areg = params_.reggeon.a[0] + params_.reggeon.a[1]*pow( t, params_.reggeon.a[2] );
const double breg = params_.reggeon.b[0] + params_.reggeon.b[1]*pow( t, params_.reggeon.b[2] );
const double creg = params_.reggeon.c[0] + params_.reggeon.c[1]*pow( t, params_.reggeon.c[2] );
const double F2_Pom = cpom*pow( xp, apom )*pow( 1.-xbj, bpom ),
F2_Reg = creg*pow( xr, areg )*pow( 1.-xbj, breg );
StructureFunctions allm;
allm.F2 = factor * ( F2_Pom + F2_Reg );
+
+ const double R = params_.ratio_comp( q2, xbj );
+ const double tau = 4.*xbj*xbj+Constants::mp*Constants::mp/q2;
+ allm.FL = allm.F2 * ( 1.+tau ) * ( R/( 1.+R ) );
+
return allm;
}
}
}
diff --git a/CepGen/StructureFunctions/ALLM.h b/CepGen/StructureFunctions/ALLM.h
index 734f0ca..cf11e78 100644
--- a/CepGen/StructureFunctions/ALLM.h
+++ b/CepGen/StructureFunctions/ALLM.h
@@ -1,56 +1,59 @@
#ifndef CepGen_StructureFunctions_ALLM_h
#define CepGen_StructureFunctions_ALLM_h
#include "StructureFunctions.h"
+#include "SigmaRatio.h"
#include <vector>
namespace CepGen
{
namespace SF
{
class ALLM
{
public:
class Parameterisation
{
private:
struct Parameters {
Parameters() :
a( { 0., 0., 0. } ), b( { 0., 0., 0. } ), c( { 0., 0., 0. } ) {}
Parameters( std::vector<double> c, std::vector<double> a, std::vector<double> b ) :
a( a ), b( b ), c( c ) {}
std::vector<double> a, b, c;
};
public:
+ Parameterisation();
/// Pre-HERA data fit (694 data points)
static Parameterisation allm91();
/// Fixed target and HERA photoproduction total cross sections (1356 points)
static Parameterisation allm97();
static Parameterisation hht_allm();
static Parameterisation hht_allm_ft();
static Parameterisation gd07p();
static Parameterisation gd11p();
Parameters pomeron, reggeon;
/// Effective photon squared mass
double m02;
/// Effective pomeron squared mass
double mp2;
/// Effective reggeon squared mass
double mr2;
double q02;
/// Squared QCD scale
double lambda2;
+ SigmaRatio ratio_comp;
};
ALLM( const ALLM::Parameterisation& param = ALLM::Parameterisation::allm97() ) : params_( param ) {}
StructureFunctions operator()( double q2, double xbj ) const;
private:
Parameterisation params_;
};
}
}
#endif
diff --git a/CepGen/StructureFunctions/SigmaRatio.h b/CepGen/StructureFunctions/SigmaRatio.h
new file mode 100644
index 0000000..dd58f34
--- /dev/null
+++ b/CepGen/StructureFunctions/SigmaRatio.h
@@ -0,0 +1,62 @@
+#ifndef CepGen_StructureFunctions_SigmaRatio_h
+#define CepGen_StructureFunctions_SigmaRatio_h
+
+#include <array>
+#include <cmath>
+
+namespace CepGen
+{
+ namespace SF
+ {
+ class SigmaRatio
+ {
+ public:
+ SigmaRatio() {}
+ virtual double operator()( double q2, double xbj ) const { return 0.; }
+ };
+
+ class E143Ratio : public SigmaRatio
+ {
+ public:
+ struct Parameterisation
+ {
+ double q2_b;
+ std::array<double,6> a, b, c;
+ static Parameterisation standard() {
+ Parameterisation out;
+ out.q2_b = 0.34;
+ out.a = { { 0.0485, 0.5470, 2.0621, -0.3804, 0.5090, -0.0285 } };
+ out.b = { { 0.0481, 0.6114, -0.3509, -0.4611, 0.7172, -0.0317 } };
+ out.c = { { 0.0577, 0.4644, 1.8288, 12.3708, -43.1043, 41.7415 } };
+ return out;
+ }
+ };
+ E143Ratio( const Parameterisation& param = Parameterisation::standard() ) : params_( param ) {}
+ double operator()( double q2, double xbj ) const
+ {
+ const double u = q2/params_.q2_b;
+ const double xl = log( 25.*q2 );
+ const double pa = ( 1.+params_.a[3]*xbj+params_.a[4]*xbj*xbj )*pow( xbj, params_.a[5] );
+ const double pb = ( 1.+params_.b[3]*xbj+params_.b[4]*xbj*xbj )*pow( xbj, params_.b[5] );
+ const double tt = theta( q2, xbj );
+ const double q2_thr = params_.c[3]*xbj + params_.c[4]*xbj*xbj+params_.c[5]*xbj*xbj*xbj;
+ const double ra = params_.a[0]/xl*tt + params_.a[1]/pow( pow( q2, 4 )+pow( params_.a[2], 4 ), 0.25 )*pa,
+ rb = params_.b[0]/xl*tt + ( params_.b[1]/q2+params_.b[2]/( q2*q2+0.3*0.3 ) )*pb,
+ rc = params_.c[0]/xl*tt + params_.c[1]*pow( pow( q2-q2_thr, 2 )+pow( params_.c[2], 2 ), -0.5 );
+
+ const double r = ( ra+rb+rc ) / 3.;
+ if ( q2 > params_.q2_b ) return r;
+ return r * 0.5 * ( 3.*u-u*u*u );
+ }
+
+ private:
+ double theta( double q2, double xbj ) const {
+ return 1.+12.*( q2/( q2+1. ) )*( 0.125*0.125/( 0.125*0.125+xbj*xbj ) );
+ }
+ Parameterisation params_;
+ };
+ }
+}
+
+#endif
+
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Nov 19, 6:59 PM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3805716
Default Alt Text
(9 KB)
Attached To
rCEPGEN CepGen - public repository
Event Timeline
Log In to Comment