PARTONS  
PARtonic Tomography Of Nucleon Software
Using PARTONS

Table of Contents

Introduction

This page explains how to use PARTONS. At this point you should have your own version of PARTONS available: either compiled on your own system (Linux or Mac), or accessible through our virtual machine . To run PARTONS properly, make sure to set up correctly the configuration files. Note also that some tasks described here require a MySQL server to be available and pre-configured to work with PARTONS.

To perform all kinds of tasks you should use Services, which have been developed in order to make your life easier with PARTONS. You may consider Services as a toolbox, which allows you to write a simple task and get back powerful C++ objects. You do not need to worry about how to use low level objects and functions - Services configure and use them for you.

We provide two ways of using Services (and therefore of using PARTONS):

One can distinguish three types of Services:

PARTONS benefits from a layered structure corresponding to the factorized nature of GPD-oriented computations. We distinguish three main layers, each one coming with its own computation service. These are:

When a computation is performed, higher layers call lower ones automatically. The responsibility of a PARTONS user is to only set all required physical assumptions, such as GPD model, order of pQCD approximation, etc.


PARTONS_example project

It is useful for this tutorial to have our example project called partons-example set up and ready to be used. It can serve as an illustration of topics being discussed here and you can base your own program on it for a start. The project is set up to run any XML scenario. The collection of exemplary XML scenarios can be found in data/examples directory.

The project comes with main.cpp file, which illustrates how to call and handle properly PARTONS library in a stand alone program (see this section for more information). With a minor modification, which is clearly indicated in main.cpp, the project can also serve as a base to run any C++ code based on PARTONS library. The collection of exemplary C++ functions is included in examples.h (header) and example.cpp (source) files.

Read this short tutorial to learn how to evaluate (play) a demonstration XML scenario in partons-example. Note, that you can use this project to run any XML scenario that you will create during your work with PARTONS.


PARTONS executable

Here we demonstrate how to create the main function of an executable project, like main() of partons-example. That is, we show how to initialize and handle the PARTONS library and how to call its members properly.

If you wish to work with PARTONS by using only XML scenarios run through partons-example (see this section for more information) and you are not interested in details on how the main function of partons-example is built, you may skip this section of the tutorial.

This is the skeleton for the main function:

int main(int argc, char** argv) {
// Initialize Qt
QCoreApplication a(argc, argv);
PARTONS::Partons* pPartons = 0;
try {
// Initialize PARTONS application
pPartons->init(argc, argv);
// Your program goes here
// Organize your code as you wish by calling your own methods and classes making use of PARTONS.
}
// In a case of PARTONS exception
catch (const ElemUtils::CustomException &e) {
// Show why the exception has occurred
pPartons->getLoggerManager()->error(e);
}
// In a case of standard exception
catch (const std::exception &e) {
// Show why the exception has occurred
pPartons->getLoggerManager()->error("main", __func__, e.what());
}
// Close PARTONS application properly
if (pPartons) {
pPartons->close();
}
return 0;
}

Note the following:


Using XML interface

We refer to a set of physics assumptions as a scenario. In this section we demonstrate how a single scenario can be encoded in an input XML file to be evaluated (played) by PARTONS. This will be achieved with the help of this example, which is used to evaluate one of the Fourier moments of DVCS beam charge asymmetry, \(A_{C}^{\cos 2\phi}\), in a single kinematic point:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<scenario date="2017-06-15" description="How to compute an observable">
<task service="ObservableService" method="computeObservable" storeInDB="0">
<kinematics type="ObservableKinematic">
<param name="xB" value="0.1" />
<param name="t" value="-0.1" />
<param name="Q2" value="2." />
<param name="E" value="12." />
<param name="phi" value="20." />
</kinematics>
<computation_configuration>
<module type="Observable" name="DVCSAcCos2Phi">
<module type="ProcessModule" name="DVCSProcessGV08">
<module type="ScalesModule" name="ScalesQ2Multiplier">
<param name="lambda" value="1." />
</module>
<module type="XiConverterModule" name="XiConverterXBToXi">
</module>
<module type="ConvolCoeffFunctionModule" name="DVCSCFFStandard">
<param name="qcd_order_type" value="LO" />
<module type="GPDModule" name="GPDGK11">
</module>
</module>
</module>
</module>
</computation_configuration>
</task>
<task service="ObservableService" method="printResults">
</task>
</scenario>

Let us analyze the structure of this scenario step-by-step:


Using C++ interface

These are the most important remarks on the usage of PARTONS' C++ interface. Due to the complexity of this subject, we recommend you to study examples provided in this section and in the partons-example project.


Services and available tasks

This table summarizes all tasks available in computation services. For a given task, click on its name to be directed to a page with more information (such as examples).

Service Task Short description
GPDService computeGPDModel Evaluate GPD for single kinematic point
GPDService computeManyKinematicOneModel Evaluate GPD for many kinematic points
GPDService printResults Print out result to std output
GPDService generatePlotFile Generate plot file from data stored in database
ConvolCoeffFunctionService computeWithGPDModel Evaluate CFF for single kinematic point
ConvolCoeffFunctionService computeManyKinematicOneModel Evaluate CFF for many kinematic points
ConvolCoeffFunctionService printResults Print out result to std output
ConvolCoeffFunctionService generatePlotFile Generate plot file from data stored in database
ObservableService computeObservable Evaluate observable for single kinematic point
ObservableService computeManyKinematicOneModel Evaluate observable for many kinematic points
ObservableService printResults Print out result to std output
ObservableService generatePlotFile Generate plot file from data stored in database

Available modules

This table summarizes all modules available in PARTONS. For a given module, click on the class name for more information. The class name serves also as the module identifier to be used in XML scenarios.

Module type Class name Short description
GPDModule GPDGK16 Goloskokov-Kroll model 2016 (analytical DD integration)
GPDModule GPDGK16Numerical Goloskokov-Kroll model 2016 (numerical DD integration)
GPDModule GPDMMS13 Mezrag-Moutarde-Sabatie model 2013
GPDModule GPDMPSSW13 Moutarde-Pire-Sabatie-Szymanowski-Wagner model 2013
GPDModule GPDVGG99 Vanderhaeghen-Guichon-Guidal model 1999
GPDModule GPDVinnikov06 Vinnikov model 2011
GPDEvolutionModule GPDEvolutionVinnikov LO fixed NF evolution Vinnikov routines
ConvolCoeffFunctionModule DVCSCFFStandard LO/NLO light quarks
ConvolCoeffFunctionModule DVCSCFFHeavyQuark LO/NLO light and heavy quarks
ConvolCoeffFunctionModule DVCSCFFConstant Constant CFFs to be set by the user
ProcessModule DVCSProcessGV08 Guichon-Vanderhaeghen expressions 2008
ProcessModule DVCSProcessBMJ12 Belitsky-Muller-Kirchner expressions 2012
ProcessModule DVCSProcessVGG99 Vanderhaeghen-Guichon-Guidal expressions 1999
ActiveFlavorsThresholdsModule ActiveFlavorsThresholdsQuarkMasses Thresholds by quarks masses
ActiveFlavorsThresholdsModule ActiveFlavorsThresholdsConstant Thresholds to be set by the user
RunningAlphaStrongModule RunningAlphaStrongStandard Evaluation in MSbar for 3 <= NF <= 6
RunningAlphaStrongModule RunningAlphaStrongVinnikov Evaluation in MSbar for 3 <= NF <= 5 as in Vinnikov evolution
XiConverterModule XiConverterXBToXi xi = xB / (2 - xB)
ScalesModule ScalesQ2Multiplier muF2 = muR2 = lambda * Q2
Observable DVCSAc DVCS-like beam charge asymmetry phi angle dependent
Observable DVCSAcCos0Phi DVCS-like beam charge asymmetry cos(0) Fourier moment
Observable DVCSAcCos1Phi DVCS-like beam charge asymmetry \(\cos(\phi)\) Fourier moment
Observable DVCSAcCos2Phi DVCS-like beam charge asymmetry \(\cos(2\phi)\) Fourier moment
Observable DVCSAcCos3Phi DVCS-like beam charge asymmetry \(\cos(3\phi)\) Fourier moment
Observable DVCSAllMinus DVCS-like beam-target LL asymmetry phi angle dependent
Observable DVCSAllMinusCos0Phi DVCS-like beam-target LL asymmetry cos(0) Fourier moment
Observable DVCSAllMinusCos1Phi DVCS-like beam-target LL asymmetry \(\cos(\phi)\) Fourier moment
Observable DVCSAllMinusCos2Phi DVCS-like beam-target LL asymmetry \(\cos(2\phi)\) Fourier moment
Observable DVCSAluDVCS DVCS-like beam L asymmetry DVCS part phi angle dependent
Observable DVCSAluDVCSSin1Phi DVCS-like beam L asymmetry DVCS part \(\sin(\phi)\) Fourier moment
Observable DVCSAluInt DVCS-like beam L asymmetry INT part phi angle dependent
Observable DVCSAluIntSin1Phi DVCS-like beam L asymmetry INT part \(\sin(\phi)\) Fourier moment
Observable DVCSAluIntSin2Phi DVCS-like beam L asymmetry INT part \(\sin(2\phi)\) Fourier moment
Observable DVCSAluMinus DVCS-like beam L asymmetry beam charge minus phi angle dependent
Observable DVCSAluMinusSin1Phi DVCS-like beam L asymmetry beam charge minus \(\sin(\phi)\) Fourier moment
Observable DVCSAulMinus DVCS-like target L asymmetry beam charge minus phi angle dependent
Observable DVCSAulMinusSin1Phi DVCS-like target L asymmetry beam charge minus \(\sin(\phi)\) Fourier moment
Observable DVCSAulMinusSin2Phi DVCS-like target L asymmetry beam charge minus \(\sin(2\phi)\) Fourier moment
Observable DVCSAulMinusSin3Phi DVCS-like target L asymmetry beam charge minus \(\sin(3\phi)\) Fourier moment
Observable DVCSAutSinPhiMPhis DVCS-like target T asymmetry beam charge minus phi angle dependent
Observable DVCSAutSinPhiMPhisCos0Phi DVCS-like target T asymmetry beam charge minus cos(0) Fourier moment
Observable DVCSCrossSectionUUMinus DVCS-like unpolarized cross section phi angle dependent
Observable DVCSCrossSectionDifferenceLUMinus DVCS-like beam cross section difference L phi angle dependent