Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 37

DownloadManual
Open PDF In BrowserView PDF
arTeMiDe ver.1.4
Alexey A. Vladimirov
January 21, 2019
User manual for arTeMiDe package, which evaluated TMDs and related cross-sections.
Manual is updating.

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a
letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
If you use the arTeMiDe, please, quote [1].
If you find mistakes, have suggestions, or have questions write to:
Alexey Vladimirov: Alexey.Vladimirov@physik.uni-regensburg.de or vladimirov.aleksey@gmail.com

Contents

Glossary
I. General structure and user input of arTeMiDe
A. General structure
B. User defined functions and options
C. Setup
II. QCDinput module

4
5
5
5
6
7

III. TMDX DY module
A. Initialization
B. Setting up the parameters of cross-section
C. Cross-section evaluation
D. Parallel computation
E. LeptonCutsDY
F. Variation of scale
G. Power corrections
H. Enumeration of processes

8
8
9
9
11
12
12
12
13

IV. TMDX SIDIS module
A. Setting up the parameters of cross-section
B. Cross-section evaluation
C. Power corrections
D. Enumeration of processes

14
14
15
16
16

V. TMDF module
A. Initialization
B. NP parameters and scale variation
C. Evaluating Structure functions
D. Enumeration of structure functions
VI. TMDs module
A. Initialization
B. Definition of low-scales
C. Evaluating TMDs
D. Products of TMDs
E. Grid construction

17
17
17
18
19
21
21
22
22
23
23

2
F. Theoretical uncertainties
VII. TMDs inKT module
VIII. TMDR module
A. Theory
B. Initialization
C. NP input and NP parameters
D. Evaluating TMD evolution kernel
E. Inverted evolution and the lowest available Q
IX. uTMDPDF module
A. Initialization
B. Definition of non-perturbative part, fN P and parameters
C. Evaluating unpolarized TMD PDFs
D. Grid construction
E. Theoretical uncertainties
X. uTMDFF module
XI. Supplementary codes
A. Drell-Yan cross-section
XII. Harpy
References
XIII. Version history
A. Backup
TO DO LIST
B. arTeMiDe structure before v1.3

23
24
25
25
25
26
26
27
28
28
28
29
30
30
31
31
31
32
33
34
36
36
37

3

constants
Text file that contains definitions and inputs
necessary to define the TMD scheme to works,
working parameters, etc.
QCDinput

EWinput

User code that provides αs , PDFs, FFs, etc.
Default version is interfaced to LHAPDF.

User code that provides αQED , gV , MZ , etc.
Default version has PDG definitions.

TMDR model

uTMDPDF model

uTMDFF model

TMDR

uTMDPDF

uTMDFF

TMD
evolution.

optimal
unpolarized
TMDPDF

optimal
unpolarized
TMDFF

...
...

TMDs inKT

TMDs

TMDs in
kT -space.

Combines TMD distributions, and interfaces to
lower modules.

TMDS model

TMDF
Evaluate structure functions.

TMDX DY

TMDX SIDIS

DY-like crosssections.

SIDIS-like crosssections.

...
...

4
Glossary

TMD = Transverse Momentum Dependent
PDF = Parton Distribution Function
FF = Fragmentation Function
NP = Non-perturbative

5
I.

GENERAL STRUCTURE AND USER INPUT OF ARTEMIDE
A.

General structure

The arTeMiDe package is a set of libraries for evaluation of individual TMD distributions, TMD evolution factors,
and other ingredients of TMD factorization theorem. The final goal is the evaluation of cross-section within the TMD
factorization theorem, including all needed integrations, and factor, i.e. such that it can be directly compared to the
data. It also includes several tools for analysis of the obtained values, such as variation of scales, search for limiting
parameters, etc. The structure of modules dependencies is presented on the diagram (shown on the previous page).
The usage of the higher order module excludes the direct operation with a lower modules, because
the higher order module controls parameters of the lower modules (which can be in contradiction to the
direct operation).
The ultimate goal of the arTeMiDe is to evaluate the observables in the TMD factorization framework, such as
cross-section, asymmetries, etc. The general structure of the TMD factorized fully differential cross-section is
dσ
= dσ(qT ) = pref actor1 × pref actor2 × F,
dX

(1.1)

where pref actor1 a process-dependent prefactor, pref actor2 is the experiment dependent prefactor, and F is the
reduced structure function. The role of prefactors 1 and 2 is naturally interchangeable, however, we expect that all
universal factorization dependence (such as hard parts, parton cross-sections) is concentrated in pref actor1, while
non-universal dependence on the particular measurement (e.g phase space multiplies, cut functions) is concentrated
in the pref actor2. Example, for the photon induced Drell-Yan process one has for dσ/dqT
4π
|CV (Q, µH )|2
9sQ2
q2
pref actor2 = 1 + T 2
2Q
Z
X
bdb
F =
J0 (bqT )
|ef |2 Ff (xA , b; µH , ζA )Ff¯(xB , b; µH , ζB ).
2
pref actor1 =

f

The structure function F is generally defined as
Z
X
0
bdb n
F (qT , x1 , x2 ; µ, ζ1 , ζ2 ) =
b Jn (bqT )
zf f 0 F1f (x1 , b; µ, ζ1 )F2f (x2 , b; µ, ζ2 ),
2
0

(1.2)

ff

where F1,2 are TMD distributions (of any origin and polarization), zf f 0 is the process dependent flavor mixing factor.
The number n is also process dependent, e.g. for unpolarized observables it is n = 0, while for SSA’s it is n = 1.
Evaluation structure functions F is performed in the module TMDF. The evaluation of cross-sections is performed in
the modules TMDX. The TMD distributions are evaluated by the module TMDs and related submodules.
Nesting structure of arTeMiDe and responsible modules
Quantity Rough formula
R
dσ
d[bin](pref actors) × F
R bdb n
P
f f0
0
F
f f 0 zf f F1 F2
2 b Jn (bqT )

Name

Fif

f

R (µf →

µi )Fif (µi )

R
Fif (µi )

C ⊗ f fN P

cross-section

TMDX

structure function

TMDF

evolved TMD distribution

TMDs

TMD evolution factor

TMDR

model for TMD distribution

B.

Module

User defined functions and options

depends on kind

6
The arTeMiDe package has been created such that it allows to control each aspect of TMD factorization
theorem. The TMD factorization has a large number of free, and “almost-free” parameters. It is a generally
difficult task to provide a convenient interface for all these inputs. I do my best to make the interface convenient,
however, some parts (e.g. setup of fN P ) could not be simpler (at least within FORTRAN). Also, take care
arTeMiDe is evolving, and I do not really care about back compatibility.
The user has to provide (or use the default values) the set of parameters, that control various aspects of
evaluation. It includes PDF sets, fN P , perturbative scales, parameters of numerics, non-QCD inputs, etc. There are
three input sources for statical parameters.
General parameters: These are working parameters of the arTeMiDe library, such as amount of output
tolerance of integration routines, number of NP parameters, type of evolution, griding parameters, triggering of
particular contributions, etc. There are many of them, and typically they are unchanged. These are set in the
file (in text format) : constants. Changes do not require recompilation.
External physics input: It includes the definition of αs , collinear PDFs, and other distributions. They are
provided by user via the ”interface” module QCDinput. Default version is uses LHAPDF interface [4]. For nonQCD parameters, e.g. αQED , SM parameters, there is a module QEDinput. Changes require recompilation.
For further information see sec.II.
NP model: The NP model consists in NP profiles of TMD distributions, NP model for large-b evolution,
selection of scales µ, etc. These parameter and functions enter nearly each low level module. The code for corresponding functions is provided by user, in appropriate files, which are collected in the subdirectory src/Model.
The name of files are shown on diagram in colored blobs adjusted to the related module. Changes require
recompilation. See also section of corresponding modules.
Comments:
• constants must be in the same directory as the executing file.
• NP functions are typically defined with a number of numeric parameters. The value of these parameters
could be changed without restart (or recompilation) of the arTeMiDe by appropriate command. E.g. (call
TMDs SetNPParameters(lambda)) on the level of TMDs module. See sections of corresponding modules.
• The maximum number of parameters in the model for each module is set in constants-file.
• The directory /Model is convenient to keep as is. We provide our extraction as such directories. However,
QCDinput and QEDinput are not a part of model (although, in bigger sense they are).
C.

Setup

Download and unpack arTeMiDe. The actual code is in the /src. Check the makefile. You have to fix options FC
and FOPT, which are defined in the top of it. FC is the FORTRAN compiler, FOPT is additional options for compiler
(e.g. linking to LHAPDF library).
There is no actual installation procedure, there is just compilation. If model, inputs, etc, are set correctly (typical
problem is linking to LHAPDF, be sure that it is installed correctly), then make compiles the library. The result are
object files (*.o) (which are collected in /obj) and module files (*.mod) (which are collected in /mod).
Next, do your code, include appropriate modules of arTeMiDe, and compile it together with object-files (do not
forget to add proper references to module files -I/mod). It should work! It could be done automatically if you put
your code in directory /Prog, and call for make program TARGET=..., where ... is the name of the file with code.

7
II.

QCDINPUT MODULE

The module QCDinput gives an interface to external function provided by the user, such as PDF, FF, values of
alpha-strong. It is completely user defined. In particular, in the default version it is linked to LHAPDF library [4].
List of available commands
Command

Description

QCDinput Initialize(order)

Subroutine to initialize anything what is needed. (string) parameter order is passed from arTeMiDe modules and conventionally
takes values LO,LO+,NLO,NLO+,NNLO,NNLO+ (see e.g. secVIII B).
According to this variable the QCD input should be initialized.

As(Q)

Returns the (real*8) value of αs (Q)/(4π). Q is (real*8).

xPDF(x,Q,hadron)

Returns the (real*8(-5:5)) value of xf (x, Q) for given hadron. x,
Q are (real*8), hadron is (integer).

xFF(x,Q,hadron)

Returns the (real*8(-5:5)) value of xd(x, Q) for given hadron. x,
Q are (real*8), hadron is (integer).

8
III.

TMDX DY MODULE

This module evaluates cross-sections with the Drell-Yan-like kinematics. I.e. it expects the following kinematic
input, (s, Q, y) which defines the variables x’s, etc.
The general structure of the cross-section is
Z
dσ
= dσ(qT ) = pref actor1 [bin] pref actor2 × F,
(3.1)
dX
where dX ∼ dQdsdydqT . The pref actor2 is expected to be x−independent1 . All x-dependence is set into F .
Generally, the prefactor2 ×F is
pref actor2 × F = (cuts for lepton pair) × H(Q, µH )F (Q, qT , x1 , x2 , µ, ζ1 , ζ) ,

(3.2)

where F is defined in (5.1). There are following feature of current implementation
• In the current version the scaling variables are set as
µ2 = ζ1 = ζ2 = Q2 .

(3.3)

Currently, it is hard coded and could not be easily modified. However, there is a possibility to vary the value of
µ as µ = c2 Q, where c2 is variation parameter (see sec.III F).
• For the definition of (cuts for lepton pair)-function see [1]. It is evaluated within module LeptonCutsDY.f90.
The presence of cuts, and their parameters are set by the SetCuts subroutine.
• The expression for the hard factor H is taken from [10]. It is the function of ln(Q/µH ) and as (µH )). Since in
the current realization µH = Q, the logarithm is replaced by ln(c2 ), where c2 is the variation constant.
This section is to be updated by definition of kinematics
List of available commands
Command

Type

Sec.

Short description

TMDX DY Initialize(order)

subrout. III A Initialization of module.

TMDX DY SetNPParameters(...)

subrout. III B Set new NP parameters to the modules

TMDX DY SetProcess(p)

subrout. III B Set the process

SetCuts(inc,pT,eta1,eta2)

subrout. III B Set the current evaluation of cut for lepton pair.

TMDX DY XSetup(s,Q,y)

subrout. III B Set the kinematic variables

TMDX DY SetScaleVariations(c1,c2,c3,c4) subrout.

–

Set new values for the scale-variation constants.

TMDX DY ShowStatistic()

subrout.

–

Print current statistic on the number of calls.

CalcXsec DY...

subrout. III C Evaluates cross-section. Many overloaded versions
see sec.III C.

A.

Initialization

Prior the usage module is to be initialized (once per run) by
call TMDX DY Initialize(order)
here: order is the declaration of order. It can be ’LO’, ’LO+’, ’NLO’, ’NLO+’,’NNLO’ or ’NNLO+’. This is a complex
declaration, which implies particular orders for coefficient functions, PDFs, anomalous dimension, etc. For detailed
definition see other sections.

1

Not necessary in ver.1.4.

9
B.

Setting up the parameters of cross-section

Prior to evaluation of cross-section one must declare which process is considered and to set up the kinematics. The
declaration of the process is made by
call TMDX DY SetProcess(p1,p2,p3)
call TMDX DY SetProcess(p0)
where p0=(/p1,p2,p3/) and
p1 (integer) Defines the pref actor1 that contains the phase space elements, and generally experimental dependent.
It also influence the bin-integration definition.
p2 (integer) Defines the pref actor2 that contains the universal part of factorization formula.
p3 (integer) Defines the structure function F . See sec.V D.
Alternatively, process can be declared by a shorthand version
call TMDX DY SetProcess(p)
where p(integer) corresponds to particular combinations of p1,p2,p3. See table III H.
The kinematic of the process is declared by
call TMDX DY XSetup(s,Q,y)
where s is the Mandelshtam variable s, Q is hard virtuality Q, y is the rapidity parameter y. Note, that these values
will be used for the evaluation of the cross-section. In the case, the integration over the bin is made these values are
overridden. Also in the case of the parallel computation these variables are overridden. So, often there is little sense
in this command, nonetheless it set initial values.
All non-perturbative parameters are defined in the TMDs and lower-level modules. For user convenience there is a
subroutine, which passes the values of parameters to TMDs. It is
call TMDX DY SetNPParameters(lambda/n)
where lambda is real*8(1:number of parameters) or n is the label of replica. See also VI C.
Finally, one must specify the fiducial cuts on the lepton pair. It is made by calling
call SetCuts(inc,pT,eta1,eta2)
where parameter inc is (logical). If inc=.true. the evaluation of cuts will be done, otherwise it will be ignored.
The cuts are defined as
|lT |, |lT0 | < pT,

eta1 < η, η 0 , eta2,

(3.4)

where l and l0 are the momenta of produced leptons, with lT ’s being their transverse components and η’s being their
rapidities. For accurate definition of the cut-function see sec.2.6 of [1] (particularly equations (2.40)-(2.42)). For
asymmetric cuts use call SetCuts(inc,pT1,pT2,eta1,eta2).
Current realization prevents usage of different cuts in parallel computation. Will be fixed in later
versions.

C.

Cross-section evaluation

After the parameters of cross-section are set up, the values of the cross-section at different qT can be obtained by
call CalcXsec DY(X,qt)
where X is real*8 variable where cross-section will be stored, qt is real*8 is the list of values of qT ’s at which the X
is to be calculated. There exists an overloaded version with X (real*8)(1:N) and qT(real*8)(1:N), which evaluates the
array of crossections over array of qT .
Typically, one needs to integrate over bin. There is a whole set of subroutines which evaluate various integrals over
bin they are

10
Subroutine

Comment

CalcXsec DY Yint(X,qt)

integral
R y0
dydσ(qT )
−y0

CalcXsec DY Yint(X,qt,yMin,yMax)

R ymax

|ymax/min | < y0

CalcXsec DY Qint (X,qt,Qmin,Qmax)

R Qmax

CalcXsec DY Qint Yint (X,qt,Qmin,Qmax)

R Qmax

CalcXsec DY Qint Yint
(X,qt,Qmin,Qmax,yMin,yMax)

ymin

y0 is maximum allowed
y by kinematics, y0 =
ln(s/Q2 )/2.

dydσ(qT )

2QdQdσ(qT )
Ry
2QdQ −y0 0 dydσ(qT )
Qmin
R ymax
R Qmax
dydσ(qT )
2QdQ ymin
Qmin
Qmin

CalcXsec DY PTint Qint Yint
(X,qtmin,qtmax,Qmin,Qmax)

R qT max

CalcXsec DY PTint Qint Yint
(X,qtmin,qtmax,Qmin,Qmax,yMin,yMax)

R qT max

CalcXsec DY PTint Qint Yint
(X,qtmin,qtmax,Qmin,Qmax,N)

R qT max

CalcXsec DY PTint Qint Yint
(X,qtmin,qtmax,Qmin,Qmax,yMin,yMax,N)

R qT max

qT min

qT min

qT min

qT min

2qT dqT

R Qmax

2qT dqT

R Qmax

2qT dqT

R Qmax

2qT dqT

R Qmax

Qmin

Qmin

Qmin

Qmin

2QdQ

R y0

2QdQ

R ymax

2QdQ

R y0

2QdQ

R ymax

−y0

dydσ(qT )

ymin

−y0

ymin

dydσ(qT )

dydσ(qT )
dydσ(qT )

Integration over qT is
Simpsons by default number of sections.
Integration over qT is
Simpsons by default number of sections.
Integration over qT is
Simpsons by N -section.
Integration over qT is
Simpsons by N -section.

More to be added

CalcXsec DY XFint(X,qt,xfMin,xfMax)

In version 1.3
R xF max
dxF dσ(qT )
xF min

√

xF

dxF =
CalcXsec DY Qint XFint
(X,qt,Qmin,Qmax,xfMin,xfMax)

R Qmax

CalcXsec DY PTint Qint XFint
(X,qtmin,qtmax,Qmin,Qmax,xfMin,xfMax)

R qT max

Qmin

qT min

2QdQ

R xF max
xF min

2qT dqT

2

dxF dσ(qT )

R Qmax
Qmin

2
Q2 +qT
√
sinh y
s
√ 2 2
2 Q +qT
√
cosh y dy
s

=

2QdQ

R xF max
xF min

dxF dσ(qT ) Integration over qT is
Simpsons by default number of sections.

R qT max
R x max
R Qmax
CalcXsec DY PTint Qint XFint
2qT dqT Qmin
2QdQ xFFmin
dxF dσ(qT ) Integration over qT is
qT min
(X,qtmin,qtmax,Qmin,Qmax,xfMin,xfMax,N)
Simpsons by N -section.

Note 1: Each command has overloaded version with arrays for X and qt.
Note 2: Cross-section integrated over qT bins have overloaded versions with X, qtmin and qtmax being arrays.
Then the integral is done for X(i) from qtmin(i) to qtmax(i).
Note 2+: There exists an overloaded version for CalcXsec DY PTint Qint Yint with X, qtmin and qtmax,
yMin, yMax being arrays. Then the integral is done for X(i) from qtmin(i) to qtmax(i), yMin(i) to yMax(i).
Note 3: There exist special overloaded case for integrated over qT -bins, with successive bins. I.e. for bins
that adjust to each other. In this case only one argument qtlist is required (instead of qtmin,qtmax).
E.g. CalcXsec DY PTint Qint Yint (X,qtList,Qmin,Qmax). The length of qtlist must be larger then the
length of X by one. The integration for X(i) is done from qtlist(i) till qtlist(i+1). This function saves
boundary values and therefore somewhat faster than the usual evaluation. (Improvement takes a place is only
for un-parallel calculation).
Take care that every next function is heavier to evaluate then the previous one. The integrations over Q and y are
adaptive Simpsons. We have found that it is the fastest (adaptive) method for typical cross-sections with tolerance
10−3 − 10−4 . Naturally, it is not suitable for higher precision, which however is not typically required. The integration
over pt is not adaptive, since typically pT -bins are rather smooth and integral is already accurate if approximated

11
by 4-8 points (default minimal value is set in constants, which is automatically increased for larger bins). For
unexceptionally large qT -bins, or very rapid behavior we suggest to use overloaded versions with manual set of N
(number of integral sections).
There is a subroutine that evaluate cross-section without preliminary call
SetCuts,TMDX DY SetProcess,TMDX DY XSetup. It is called xSec DY and it have the following interface:

of

xSec DY(X,process,s,qT,Q,y,includeCuts,CutParameters,Num)
where
• X is (real*8) value of cross-section.
• process is integer p, or (integer)array (p1,p2,p3).
• s is Mandelshtam variable s
• qT is (real*8)array (qtmin,qtmax)
• Q is (real*8)array (Qmin,Qmax)
• y is (real*8)array (ymin,ymax)
• includeCuts is logical
• CutParameters is (real*8) array (k1,k2,eta1,eta2) OPTIONAL
• Num is even integer that determine number of section in qT integral OPTIONAL
Note, that optional variables could be omit during the call.
IMPORTANT: Practically, the call of this function coincides with X evaluated by the following set of commands
call TMDX DY SetProcess(process)
call TMDX DY XSetup(s,any,any)
call SetCuts(includeCuts,k1,k2,eta1,eta2)
call CalcXsec DY PTint Qint Yint (X,qtmin,qtmax,Qmin,Qmax,yMin,yMax,Num)
However, there is an important difference. The values of s, process, cutParameters set by routines ..Set..
are global. And thus could not be used in parallel computation. In the function xSec DY they are set locally and thus
this function can be used in parallel computations.
?BUG?: Take care that some Fortran compilers, do not understand the usage of arrays directly within function
with optional arguments. E.g. xSec DY(p,s,(/q1,q2/),Q,y,iC,CutParameters=cc). Although it compiles without problems but lead to a freeze during the calculation. In this case, it helps to define: qT=(/q1,q2/) and call
xSec DY(p,s,qT,Q,y,iC,CutParameters=cc). The same problem can appear if xSec DY is used as argument of
another function. I guess there is some problem with memory references.
There is also analogous subroutine that evaluate cross-section by list. It is called xSec DY List and
it have the following interface:
xSec DY List(X,process,s,qT,Q,y,includeCuts,CutParameters,Num)
All variables are analogues to those of xSec DY, but should come in lists, i.e. X is (1:n), process is (1:n,1:3),
s is (1:n), qT,Q,y are (1:n,1:2), includeCuts is (1:n), CutParameters is (1:n,1:4), and Num is (1:n). Only the
Num argument is OPTIONAL arguments. The argument CutParameters must be presented. This
command compiled by OPENMP, so runs in parallel on multi-core computers.

D.

Parallel computation

For the historical reasons the initial code of arTeMiDe did not allow parallelization (it was due to intensive usage of
shared grids). I am working on this problem, improving different parts of code and excluding/encapsulating sharing

12
constructions. After ver.1.32 there is a limited parallelization on the level of computation of the cross-section (the
most expansive level of computation). The parallelization option is planned to improve in the future, making possible
to evaluate large cross-experiment lists of cross-sections in parallel.
Currently, the parallel evaluation is used within the commands CalcXsec DY ... with array variable qt (see Note
1 in sec.TMDX:xsec). Basically, in this case, individual values for the list of cross-sections are evaluated in parallel.
The parallelization is made with OPENMP library. To make the parallel computation possible, add -fopenmp
option in the compilation instructions. The maximum number of allowed threads is set constants-file, in the section
6.
WARNING: the parallel operation is possible only together with grid option, otherwise it will cause a running
condition in TMD modules (which typically results into the program crush). There is no check for grid option
trigger, check it manually.

E.

LeptonCutsDY

The calculation of cut prefactor is made in LeptonCutsDY.f90. It has two public procedures: SetCutParameters,
and CutFactor4.
• The subroutine SetCutParameters(kT,eta1,eta2) set a default version of cut parameters: p1,2 < kT and
η1 < η < η2 .
• The overloaded version of the subroutine SetCutParameters(k1,k2,eta1,eta2) set a default version of asymmetric cut parameters. p1 < k1 ,p2 < k2 and η1 < η < η2 .
• Function CutFactor4(qT,Q in,y in, CutParameters) calculates the cut prefactor at the point qT , Q, y. The
argument CutParameters is optional. If it is not present, cut parameters are taken from default values (which
are set by SetCutParameters). CutParameters is array (/ k1,k2,eta1,eta2/). The usage of global definition
for CutParameters is not recommended, since it can result into running condition during parallel computation.
This is interface is left fro compatibility with earlier version of artemide.
F.

Variation of scale

G.

Power corrections

TO BE WRITTEN

There are many sources of power corrections. For a moment there is no systematic studies of power corrections for
TMD factorization. Nonetheless I include some options in artemide, and plan to make more systematic treatment in
the future.
Exact values of x1,2 for DY: The TMD distributions enter the cross-section with x1 and x2 equal to
s
q2
q+
Q y
Q
x1 = + = √ e 1 + T2 ' √ ey ,
(3.5)
Q
s
s
p1
s
q2
q+
Q −y
Q
x1 = + = √ e
1 + T2 ' √ e−y .
Q
s
s
p1
Traditionally, the corrections ∼ qT /Q are dropped, since they are power corrections. Nonetheless, they could be
included since they have different sources in comparison to power corrections to the factorized cross-section. Usage
of one or another version of x1,2 is switched by the parameter 5.A.1) in constants.

13
H.

Enumeration of processes

List of enumeration for pref actor1
p1
p1
1
2

pref actor1

Short description

1

dX = dydQ2 dqT2 .

√

2

2
Q2 +qT
√
s

√
2
2 Q2 +qT
√
cosh y dX = dxF dQ2 dqT2 where xF =
sinh y is Feynman x. Important:
s
In this case the integration y is preplaced by the integration over xF . I.e.
Rb
Rb
... Yint(..., a, b, ..) which usually evaluates a dy evaluates a dxF .
List of enumeration for pref actor2
p2

pref actor2

p2

2
4π αem (Q)
DY
9
sQ2 |CV

1

Short description

(c2 Q)|2 R × cut(qT )

DY-cross-section

dσ
2 ).
dQ2 dyd(qT

cut(qT ) is the weight for the lepton tensor with

fiducial cuts (see sec.2.6 in [1]). Corresponds to DY-cross-section
Process declared y ↔ −y symmetric. The result is in pb/GeV
2

2
4π αem (Q)
DY
9
sQ2 |CV

3

4π 2 αem (Q)
BrZ |CVDY
3
s

(c2 Q)|2 R × cut(qT )

dσ
2 ).
dQ2 dyd(qT
2

dσ
DY-cross-section dQ2 dyd(q
2 . cut(qT ) is the weight for the lepton tensor with
T)
fiducial cuts (see sec.2.6 in [1]). Process declared y ↔ −y non-symmetric.
The result is in pb/GeV2

dσ
(c2 Q)|2 R × cut(qT ) DY-cross-section dQ2 dyd(q
for the Z-boson production in the narrow width
2
T)
approximation. BrZ = 0.03645 is Z-boson branching ration to leptons. cut(qT )
is the weight for the lepton tensor with fiducial cuts (see sec.2.6 in [1]). Process
declared y ↔ −y symmetric. The result is in pb/GeV2

Here R = 0.3893379 · 109 the transformation factor from GeV to pb.
List of shorthand enumeration for processes
p

p1

p2

p3

Description

1

1

1

5

p + p → Z + γ ∗ → ll. Standard DY process measured in the vicinity of the
Z-peak. E.g. for LHC measurements.

2

1

1

6

p + p̄ → Z + γ ∗ → ll. Standard DY process measured in the vicinity of the
Z-peak. E.g. for Tevatron measurements.

14
IV.

TMDX SIDIS MODULE

In ver.1.4, this module has not been checked for bugs, and errors so well as DY module. I do
not guaranty all correct factors. I hope to do so in ver. 1.5.
This module evaluates cross-sections with the SIDIS-like kinematics. I.e. it expects the following kinematic input,
(Q, x, z) or (Q, y, z) or (x, y, z), that are equivalent.
The general structure of the cross-section is
Z
dσ
= dσ(qT ) = pref actor1 [bin] pref actor2 × F,
(4.1)
dX
where dX ∼ dl0 , with l0 momentum of scattered lepton.
The pref actor2 is expected to be x−independent. All x-dependence is set into F .
This section is to be updated by definition of kinematics
The structure of the module repeats the structure of TMDX DY module, with the main change in the kinematic
definition. Most part of routines has the same input and output with only replacement DY→ SIDIS. We do
not comment such commands. They marked by ∗ in the following table.

List of available commands
Command

Type

Sec.

Short description

TMDX SIDIS Initialize(order)

subrout. III A * Initialization of module.

TMDX SIDIS SetNPParameters(...)

subrout. III B * Set new NP parameters to the modules

TMDX SIDIS SetProcess(p)

subrout. IV A Set the process

TMDX SIDIS SetTargetMass(M)

subrout. IV A Set the mass of target hadron

TMDX SIDIS SetProducedMass(M)

subrout. IV A Set the mass of produced hadron

TMDX SIDIS XSetup(s,Q,y)

subrout. IV A Set the kinematic variables

TMDX SIDIS SetScaleVariations(c1,c2,c3,c4) subrout.

–

*

TMDX SIDIS ShowStatistic()

subrout.

–

* Print current statistic on the number of calls.

CalcXsec SIDIS...

subrout. IV B Evaluates cross-section. Many overloaded versions
see sec.III C.

A.

Set new values for the scale-variation constants.

Setting up the parameters of cross-section

Prior to evaluation of cross-section one must declare which process is considered and to set up the kinematics.
The declaration of the process is made by
call TMDX SIDIS SetProcess(p1,p2,p3)
call TMDX SIDIS SetProcess(p0)
where p0=(/p1,p2,p3/) and
p1 (integer) Defines the pref actor1 that contains the phase space elements, and generally experimental dependent.
Could be set outside of bin-integration.
p2 (integer) Defines the pref actor2 that contains the universal part of factorization formula. Participate in the
bin-integration
p3 (integer) Defines the structure function F . See sec.V D.

15
Alternatively, process can be declared by shorthand version
call TMDX SIDIS SetProcess(p)
where p(integer) corresponds to particular combinations of p1,p2,p3. See table.
The kinematic of the process is declared by variables (s, Q, x, z)
call TMDX SIDIS XSetup(s,Q,x,z)
where s is Mandeschtan variable s, Q is hard virtuality Q, and (x,z) are standard SIDIS variables. The variable y
is derived by y = Q2 /(xs).
There is a possibility to account the target mass corrections within the phase factors. This possibility
is switched on in the constants file. The masses of hadrons are set by TMDX SIDIS SetTargetMass &
TMDX SIDIS SetProducedMass subroutines. Masses must be set after the initialization of package (default
cases target=nucleon, produced =pion).
All non-perturbative parameters are defined in the TMDs and lower-level modules. For user convenience there is a
subroutine, which passes the values of parameters to TMDs. It is
call TMDX SIDS SetNPParameters(lambda/)
where lambda is real*8(1:number of parameters)/ or n is the number of replica. See also VI C.
B.

Cross-section evaluation

After the parameters of cross-section are set up, the values of the cross-section at different qT can be obtained by
call CalcXsec DY(X,qt)
where X is real*8 variable where cross-section will be stored, qt is real*8 is the list of values of qT ’s at which the X
is to be calculated. There exists an overloaded version with X (real*8)(1:N) and qT(real*8)(1:N), which evaluates the
array of crossections over array of qT .
Typically, one needs to integrate over bin. There is a whole set of subroutines which evaluate various integrals over
bin they are
Subroutine
CalcXsec SIDIS Xint(X,qt,xMin,xMax)
CalcXsec SIDIS Zint(X,qt,zMin,zMax)
CalcXsec SIDIS Qint (X,qt,Qmin,Qmax)

integral
Comment
R xmax
dxdσ(qT )
0 < xmin < xmax < 1
xmin
R zmax
0 < zmin < zmax < 1
dzdσ(qT )
zmin
R Qmax
2QdQdσ(qT )
Qmin

More to be added

Note 1: Each command has overloaded version with arrays for X and qt.
Note 2: Cross-section integrated over qT bins have overloaded versions with X, qtmin and qtmax being arrays.
Then the integral is done for X(i) from qtmin(i) to qtmax(i).
Note 3: There exist special overloaded case for integrated over qT -bins, with successive bins. I.e. for bins
that adjust to each other. In this case only one argument qtlist is required (instead of qtmin,qtmax). E.g.
CalcXsec DY PTint Qint Yint (X,qtList,Qmin,Qmax). The length of qtlist must be larger then the length
of X by one. The integration for X(i) is done from qtlist(i) till qtlist(i+1). This function saves boundary
values and therefore somewhat faster than the usual evaluation.
Take care that every next function is heavier to evaluate then the previous one. The integrations over Q and y are
adaptive Simpsons. We have found that it is the fastest (adaptive) method for typical cross-sections with tolerance
10−3 − 10−4 . Naturally, it is not suitable for higher precision, which however is not typically required. The integration
over pt is not adaptive, since typically pT -bins are rather smooth and integral is already accurate if approximated by
5-7 points (default value is set in constants). For larger pT -bins we suggest to use overloaded versions with manual
set of N (number of integral sections).

16
C.

Power corrections

There are many sources of power corrections. For a moment there is no systematic studies of of effect of power
corrections for TMD factorization. Nonetheless we include some options in artemide, and plan to make systematic
treatment in the future.
Exact values of x1 and z1 for SIDIS: The TMD distributions enter the cross-section with x1 and z1 equal to


2
qT
2x
1
−
+
2
Q
q
r
x1 = − + =
(4.2)

 ,
P
p2T
2
1 + 1 + 1 − Q2 γ
p
p−
z(1 + 1 − ρ2 γ 2 )
h
r
z1 = − − =

 .
q
p2T
1 + 1 + 1 − Q2 γ 2
Traditionally, the corrections ∼ qT /Q are dropped, since they are power corrections. Nonetheless, they could be
included since they have different sources in comparison to power corrections to the factorized cross-section. Usage
of one or another version of x1,2 is switched by the parameter 5.A.1) in constants.
Target mass correction in kinematics and phase volumes: These is a set of (small) variables that are
proportional to M and m and pT which enter cross-section independently of factorization order. They are
γ=

2M x
,
Q

ρ=

m
.
zQ

(4.3)

They are switched on/off in constants. Note, that swithching them on, also modify the variable of Bessel transform
to a correct one:
s


|b||pT |
1 + γ2
J
N2 ,
.
(4.4)
N2 =
z1
1 − γ 2 ρ2

D.

Enumeration of processes

List of enumeration for pref actor1
p1
pref actor1

p1

Short description

1 1

No comments.
List of enumeration for pref actor2
p2
pref actor2

p2
1
2
3

πα2em (Q)
Q2
πα2em (Q)
Q4
πα2em (Q)
Q4

Short description

y
SIDIS
(c2 Q)|2 R
1−ε |CV

SIDIS-cross-section

dσ
2 ).
dxdydzd(qT

y
SIDIS
(c2 Q)|2 R
1−ε |CV

SIDIS-cross-section

dσ
2 ).
dxdQ2 dzd(qT

xy
SIDIS
(c2 Q)|2 R
1−ε |CV

SIDIS-cross-section

dσ
2 ).
dQ2 dydzd(qT

2

Here R = 0.3893379109 the transformation factor from GeV to pb.
List of shorthand enumeration for processes
p

p1

p2

p3

Description

1

1

1

5

p + p → Z + γ ∗ → ll. Standard DY process measured in the vicinity of the
Z-peak. E.g. for LHC measurements.

2

1

1

6

p + p̄ → Z + γ ∗ → ll. Standard DY process measured in the vicinity of the
Z-peak. E.g. for Tevatron measurements.

17
V.

TMDF MODULE

This module evaluates the structure functions, that are universally defined as
Z ∞
X
0
bdb n
2
zf f 0 (Q2 )F1f (x1 , b; µ, ζ1 )F2f (x2 , b; µ, ζ2 ),
F (Q , qT , x1 , x2 , µ, ζ1 , ζ2 ) =
b Jn (bqT )
2
0
0

(5.1)

ff

where
• Q2 is hard scale.
• qT is transverse momentum in the factorization frame. It coincides with measured qT in center-mass frame for
DY, but qT ∼ pT /z for SIDIS.
√
• x1 and x2 are parts of collinear parton momenta. I.e. for DY x1,2 ' Qe±y / s, while for SIDIS x2 ∼ z. It can
also obtain power correction, ala Nachmann variables.
• µ is the hard factorization scale µ ∼ Q
• ζ1,2 are rapidity factorization scales. In the standard factorization scheme ζ1 ζ2 = Q4 .
• f, f 0 are parton flavors.
• zf f 0 is the process related function. E.g. for photon DY on p + p̄, zf f 0 = δf f 0 |ef |2 .
• n The order of Bessel transformation is defined by structure function. E.g. for unpolarized DY n = 1. For
SSA’s n = 1. In general for angular modulation ∼ cos(nθ).
f
• F1,2
TMD distribution (PDF or FF) of necessary polarization and flavor.

The module has simple structure since it evaluates only this integral and does not require any exra input.
List of available commands
Command

Type

Sec.

Short description

TMDF Initialize(order)

subrout.

VA

Initialization of module.

TMDF SetNPParameters(...)

subrout.

VA

Set new NP parameters to the modules

TMDF SetScaleVariations(c1,c3,c4)

subrout.

??

Set new values for the scale-variation constants.

TMDF ShowStatistic())

subrout.

–

Print current statistic on the number of calls.

TMDF F(Q2,qT,x1,x2,mu,zeta1,zeta2,N) (real*8)

A.

VC

Evaluates the structure function

Initialization

Prior the usage module is to be initialized (once per run) by
call TMDF Initialize(order)
here:
order declaration of order the order used by package. It can be ’LO’, ’LO+’, ’NLO’, ’NLO+’, ’NNLO’ and ’NNLO+’.
This declaration is passed to the lower packages, where is should be defined.
B.

NP parameters and scale variation

To set particular values of these NP parameters, and to vary the scales use
call TMDF SetNPParameters(lambda/n)
and
call TMDFs SetScaleVariations(c1,c3,c4)
respectively. In fact, this subroutine just pass the initialization request to the module TMDs, see VI A
and VI F. The arguments of subroutines also defines in these sections.

18
C.

Evaluating Structure functions

The value of the structure function is obtained by
(real*8)TMDF F(Q2,qT,x1,x2,mu,zeta1,zeta2,N)
where
Q2 (real*8) hard scale.
qT (real*8) modulus of transverse momentum in the factorization frame in GeV, qT > 0
x1 (real*8) x passed to the first TMD distribution (0 < x1 < 1)
x2 (real*8) x passed to the first TMD distribution (0 < x2 < 1)
mu (real*8) The hard scale µ in GeV. Typically, µ = Q.
zeta1 (real*8) The scale ζf in GeV2 for the first TMD distribution. Typically, ζf = Q2 .
zeta2 (real*8) The scale ζf in GeV2 for the second TMD distribution. Typically, ζf = Q2 .
N (integer) The number of process.
The function returns the value of
F N (Q2 , qT , x1 , x2 , µ, ζ1 , ζ2 ) =

Z

∞

0

X
0
bdb n
b Jn (bqT )
zfNf 0 (Q2 )F1f (x1 , b; µ, ζ1 )F2f (x2 , b; µ, ζ2 ).
2
0

(5.2)

ff

The parameter n depends on the argument N and uniformly defined as
n=0
n=1
n=2
n=3

for
for
for
for

N < 10000
N ∈ [10000, 20000]
N ∈ [20000, 30000]
N > 30000

The particular values of zf f 0 and F1,2 are given in the following table. User function can be implemented by code
modification.
Notes on the integral evaluation:
• The integral is uniformly set to 0 for qT < 10−7 .
• If for any element of evaluation (including TMD evolution factors and convolution integrals, and the integral
of the structure function it-self) obtained divergent value. The trigger is set to ON. In this case, the integral
returns uniformly large value 10100 for all integrals without evaluation. The trigger is reset by new values of NP
parameters. It is done in order to cut the improper values of NP parameters in the fastest possible way, which
speed up fitting procedures.
• The Fourier is made by Ogata quadrature, which is double exponential quadrature. I.e.
Z
0

∞



∞
bnk
1 X
bdb n
n+1
ω̃nk bnk I
b I(b)Jn (qT b) ' n+2
,
2
qT
qT k=1

where
bnk =

ψ(h̃ξ˜nk )
π
= ξ˜nk tanh( sinh(h̃ξ˜nk ))
2
h̃

ω̃nk =

Jn (b̃nk )
ψ 0 (h̃ξ˜nk )
2
˜
ξnk Jn+1
(ξ˜nk )

Here, ξ˜nk is k’th zero of Jn (x) function. Note, that h̃ = h/π in the original Ogata’s notation.

(5.3)

19
• The sum over k is restricted by Nmax where Nmax is hard coded number, Nmax = 100.
• The sum over k is evaluated until the sum of absolute values of last four terms is less then tolerance. If M > Nmax
the integral declared divergent, and the trigger is set to ON.
WARNING!
The error for Ogata quadrature is defined by parameters h and M (number of terms in the sum over k). In
the parameter M quadrature is double-exponential, i.e. converges fast as M approaches Nmax . And the
convergence of the sum can be simply checked. In the parameter h the quadrature is quadratic (the
convergence is rather poor). The convergence to the true value of integral is very expensive especially at
large qT (it requires the complete reevaluation of integral at all nodes). Unfortunately, Nmax ∼ h−1 , and has
to find the balance value for h. In principle, TMD functions decays rather fast, and suggested default value
h = 0.005 is trustful. Nonetheless, we suggest to test other values (*/2) of h to validate the
obtained values in your model.
The adaptive check of convergence will implemented in the future versions.

D.

Enumeration of structure functions

List of enumeration of structures functions
N<10000
zf f 0

N

F1

F2 Short description

Gluon req.

0

–

–

–

Test case

no

1

δf¯f 0 |ef |2

f1

f1

(unpol.)p + p → γ

no

2

δf f 0 |ef |2

f1

f1

(unpol.)p + p̄ → γ

no

3

δf¯f 0

f1

f1

(unpol.)p + p → Z

no

f1

f1

(unpol.)p + p̄ → Z

no

4

(1 − 2|ef |s2w )2 − 4e2f s4w
8s2w c2w
(1 − 2|ef |s2w )2 − 4e2f s4w
δf f 0
8s2w c2w

5

δf¯f 0

zll0 zf f 0
given in (2.8) of [1]
2
αem

f1

f1

(unpol.)p + p → Z + γ

no

6

δf f 0

zll0 zf f 0
given in (2.8) of [1]
2
αem

f1

f1

(unpol.)p + p̄ → Z + γ

no

1001 RfCu
¯f 0 ef ef 0 see (3.1) of [1]

f1

f1Cu (unpol.)p + Cu → γ (roughly simulates isostructure
of Cu, used to describe E288 experiment in [1])

0
1002 Rf¯H
f 0 ef ef see (3.1) of [1] with Z = 1
and A = 2

f1

f1 H (unpol.)p +2 H → γ (roughly simulates isostructure
of 2 H, used to describe E772 experiment

2001 δf f 0 |ef |2

f1

2

2

d1

(unpol)h1 + γ → h2

100006N<20000

no

no

no

20

N
10000

zf f 0

F1

F2 Short description

–

–

–

Gluon req.

Test case

no
200006N<30000

N
20000

zf f 0

F1

F2 Short description

–

–

–

Gluon req.

Test case

no
300006N

N
30000

zf f 0

F1

F2 Short description

–

–

–

Gluon req.

Test case

Notes on parameters and notation: s2w = 0.2313, MZ and ΓZ are defined in constants
f1 -unpolarized TMDPDF

no

21
VI.

TMDS MODULE

The module TMDs joins the lower modules and performs the evaluation of various TMD distributions in the ζprescription. Generally a TMD distribution is given by the expression
Ff (x, b; µ, ζ) = Rf [b, (µ, ζ) → (µi , ζµi )]F̃f (x, b),

(6.1)

where R is the TMD evolution kernel, F̃ is a TMD distribution at low scale. The scale µi is dependent on the
evolution type, and could be out of use. Note, that TMDs initializes the lower modules automatically. Therefore, no
special initializations should be done.
List of available commands
Command

Type

Sec.

Short description

TMDs Initialize(order)

subrout.

VI A Initialization of module.

TMDs SetNPParameters(lambda)

subrout.

VI A Set new NP parameters to the modules

TMDs SetNPParameters(n)

subrout.

VI A Set NP parameters corresponding to replica n.

TMDs SetScaleVariations(c1,c3,c4)

subrout.

VI F Set new values for the scale-variation constants.

uTMDPDF 5(x,b,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF (gluon term undefined)

uTMDPDF 50(x,b,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF (gluon term defined)

uTMDFF 5(x,b,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD FF (gluon term undefined)

uTMDFF 50(x,b,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD FF (gluon term defined)

uTMDPDF 5(x,b,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF at optimal line (gluon term
undefined)

uTMDPDF 50(x,b,,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF at optimal line (gluon term
defined)

uTMDFF 5(x,b,h)

(real*8(-5:5)) VI C Unpolarized TMD FF at optimal line(gluon term undefined)

uTMDFF 50(x,ba,h)

(real*8(-5:5)) VI C Unpolarized TMD FF at optimal line (gluon term
defined)

uPDF uPDF(x1,x2,b,mu,zeta,h1,h2)

(real*8(-5:5)) VI D Product of Unpolarized TMD PDF fq←h1 (x1 )fq̄←h1
at the same scale (gluon term undefined)

uPDF anti uPDF(x1,x2,b,mu,zeta,h1,h2) (real*8(-5:5)) VI D Product of Unpolarized TMD PDF fq←h1 (x1 )fq←h1
at the same scale (gluon term undefined)
List of inputs
Input

Setup by

Short description

mu LOW(b)

write-in

The value of µi used in the evolutions of type 1 and 2 (improved D and γ). See [3].

mu0(b)

write-in

The value of µ0 used in the evolution of type 1 (improved D). See [3].

A.

Initialization

Prior the usage module is to be initialized (once per run) by
call TMDs Initialize(order)
here:
order declaration of order the order used by package. It can be ’LO’, ’LO+’, ’NLO’, ’NLO+’, ’NNLO’ and ’NNLO+’.
This declaration is passed to the lower packages, where is should be defined.

22
This subroutine also initializes modules for individual TMDs according to the number of NP parameters.
The important part of the initialization is the number of NP parameters for each TMD under consideration. Each
TMD-evaluating module (say, uTMDPDF, uTMDFF, etc.) requires ni number of parameters. We expect ni > 0, i.e. fN P
is at least 1-parametric (if it is not so, just do not use the parameter in the definition of fN P , but keep ni > 0). The
numbers ni are read from the constants-file, in fixed order, i.e. n0 is for TMDR, n1 is for uTMDPDF, n2 is for uTMDFF,
and so on (see constants-file). These numbers are read during the initialization procedure TMDs Initialize.
If ni = 0 (i > 0) the corresponded module would be not-initialized and not available in calculation.
To set particular values of these parameters use
call TMDs SetNPParameters(lambda)
where
P
{λi } real*8(1: i ni )The set of parameters which define the non-perturbative functions fN P with in modules. It
is split into parts and send to corresponding modules. I.e. lambda(1:n0 ) →uTMDR, lambda(n0 + 1:n0 + n1 )
→uTMDPDF, lambda(n0 + n1 + 1:n0 + n1 + n2 ) →uTMDFF, etc.
P
Important: There is a check on the minimal input length of lambda. It should be at least i ni . Otherwise,
the command is ignored (with warning).
Optional: There exist the overloaded version of TMDs SetNPParameters(n), with n being an integer. It attempt
to load user defined set of NP parameters associated with number n. Practically, it calls submodules with request to
set replica n.

B.

Definition of low-scales

The low scales µi and µ0 are defined in the functions mu LOW(bt) and mu0(bt) which can be found in the end of
TMDs.f90 code. Modify it if needed.
C.

Evaluating TMDs

The expression for unpolarized TMD PDF is obtained by the functions
(real*8(-5:5))uTMDPDF 5(x,b,mu,zeta,h)
where
x (real*8) Bjorken-x (0 < x < 1)
b (real*8) Transverse distance (b > 0) in GeV
mu (real*8) The scale µf in GeV. Typically, µf = Q.
zeta (real*8) The scale ζf in GeV2 . Typically, ζf = Q2 .
h (integer) The hadron type.
¯ ?, d, u, s, c, b.
This function return the vector real*8(-5:5) for b̄, c̄, s̄, ū, d,
• Gluon contribution in uTMDPDF 5 is undefined, but taken into account in the mixing contribution. The point is
that evaluation of gluons slow down the procedure approximately by 40%, and often is not needed. To calculate
the full flavor vector with the gluon TMD, call uTMDPDF 50(x,b,mu,zeta,h), where all arguments defined in
the same way.
• The other TMDs, such as unpolarized TMDFF, transversity, etc. are obtained by similar function see the table
in the beginning of the section.
• Each function has version without parameters mu and zeta. It corresponds to the evaluation of a TMS at
optimal line [3]. Practically, it just transfers the outcome of corresponding TMD module, e.g.module uTMDPDF,
see sec.IX.

23
D.

Products of TMDs

The the evaluation of majority of cross-sections one needs the product of two TMDs at the same scale. There are
set of functions which return these products. They are slightly faster then just evaluation and multiplication, due to
the flavor blindness of the TMD evolution. The function have common interface
(real*8(-5:5)) uPDF uPDF(x1,x2,b,mu,zeta,h1,h2)
where
x1,x2 (real*8) Bjorken-x’s (0 < x < 1)
b (real*8) Transverse distance (b > 0) in GeV
mu (real*8) The scale µf in GeV. Typically, µf = Q.
zeta (real*8) The scale ζf in GeV2 . Typically, ζf = Q2 .
h1,h2 (integer) The hadron’s types.
The function return a product ofthe form Ff1 ←h1 (x1 , b; µ, ζ)Ff2 ←h2 (x2 , b; µ, ζ), where f1,2 and the type of TMDs
depend on the function.

E.

Grid construction

For fitting procedure one often needs to evaluate TMDs multiple times. For example, for fit performed in [1] the
evaluation of singe χ2 entry requires ∼ 16 × 106 calls of uTMDPDF ... Every call of uTMDPDF .. at NNLO order,
requires ∼ 200 calls of pdfs, depending on x, b and λ’s. Therefore, in such situations it is much more cheaper to make
a grid of TMD distributions for given set of non-pertrubative parameters (i.e. the grid is in x and b), and then use
this grid for the interpolation of TMD values.
The griding procedure is switches by the changing makeGrid in the file constants. If grid precalculation is ON,
then every change of non-perturbative parameters activate the procedure of grid calculation (long). After that (until
the next change of non-perturbative) the TMD values will be extracted from the grid (fast).

F.

Theoretical uncertainties

TMDs SetScaleVariations(c1,c3,c4) changes the scale multiplicative factors ci (see [3], sec.6). The default set
of arguments is (1,1,1), i.e. the scales as they given in corresponding functions. This subroutine changes c1 and c3
constants and call corresponding subroutines for variation of c4 in TMD defining packages. Note, that in some types
of evolution particular variations absent.

24
VII.

TMDS INKT MODULE

The module TMDs inKT is derivative of the module TMDs that provides the TMD in the transverse momentum space.
We define
Z
d2 b
F (x, b; µ, ζ)e−i(kT b) .
(7.1)
F (x, kT ; µ, ζ) =
(2π)2
Since all evaluated TMDs depends only on the modulus of b, within the module we evaluate
Z
d|b|
F (x, |kT |; µ, ζ) =
|b|J0 (|b||kT |)F (x, |b|; µ, ζ).
2π

(7.2)

The module TMDs inKT uses all functions from the module TMDs. In fact, all technical commands (like Initialize)
just transfer the request to TMDs. Thus, the information on these commands can be found in the section VI. For the
evaluation of Hankel integral we use the Ogata quadrature see V C (the parameters for it are set in corresponding
section of constants.
List of available commands
Command

Type

Sec.

Short description

TMDs inKT Initialize(order)

subrout.

VI A Initialization of module.

TMDs inKT SetNPParameters(lambda)

subrout.

VI A Set new NP parameters to the modules

TMDs inKT SetNPParameters(n)

subrout.

VI A Set NP parameters corresponding to replica n.

TMDs inKT SetScaleVariations(c1,c3,c4)

subrout.

VI F Set new values for the scale-variation constants.

TMDs inKT ShowStatistic

subrout.

-

Print current statistic on the number of calls.

uTMDPDF kT 5(x,kT,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF at the optimal line (gluon
term undefined)

uTMDPDF kT 50(x,kT,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF at the optimal line (gluon
term defined)

uTMDPDF kT 5(x,kT,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF (gluon term undefined)

uTMDPDF kT 50(x,kT,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD PDF (gluon term defined)

uTMDFF kT 5(x,kT,h)

(real*8(-5:5)) VI C Unpolarized TMD FF at the optimal line (gluon
term undefined)

uTMDFF kT 50(x,kT,h)

(real*8(-5:5)) VI C Unpolarized TMD FF at the optimal line (gluon
term defined)

uTMDFF kT 5(x,kT,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD FF (gluon term undefined)

uTMDFF kT 50(x,kT,mu,zeta,h)

(real*8(-5:5)) VI C Unpolarized TMD FF (gluon term defined)

Comments:
• The value of kT is expected bigger 1MeV for smaller values the function evaluates at 1MeV.
• For gluonless TMDs ( 5) the gluon term is identically 0.
• The convergence of the integral is checked by convergence of |u| + |d| + |g| combination.

25
VIII.

TMDR MODULE

The module TMDR performs the evaluation of the TMD evolution kernel in the (µ, ζ)-plane.
List of available commands
Command

Sec.

Short description

TMDR Initialize(order)

VIII B Initialization of module.

TMDR setNPparameter(...)

VIII C Set new NP parameters used in DNP and zetaNP.

TMDR R(...)

VIII D Evolution kernel from (µf , ζf ) to (µi , ζi ).

TMDR Rzeta(...)

VIII D Evolution kernel from (µf , ζf ) to (µi , ζµi ).

LowestQ()

VIII E Returns the values of Q (and the band) for which the evolution inverts.
List of inputs

Input

Setup by

Short description

DNP(mu,b,f)

write-in

NP-model for DNP .

zetaNP(mu,b,f)

write-in

NP-model for ζµ . Should follow equipotential.

NPparam
as

TMDR setNPparameter(input) NP parameters used in DNP and zetaNP.
defined in QCDinput

Strong coupling. See sec.II

A.

Theory

The detailed theory is given in the article [3]. The NLO rapidity anomalous dimension has been evaluated in [7].
The NNLO rapidity anomalous dimension has been evaluated in [8, 9].
TO BE WRITTEN

B.

Initialization

Prior the usage module is to be initialized (once per run prior to any other module-related command). By
call TMDR Initialize(order)
This command read the input from the constants-file, and set the other parameters according to
order (string) declaration of order for the evolution kernel. Typically, one set Γcusp one order higher then the rest of
anomalous dimensions. There are following set of orders
Γcusp

γV

D*

Dresum

ζµ **

LO

a1s

a0s

a0s

a0s

a0s

LO+

a1s

a1s

a1s

a0s

a0s

NLO

a2s

a1s

a1s

a1s

a1s

NLO+

a2s

a2s

a2s

a1s

a1s

NNLO

a3s

a2s

a2s

a2s

a2s

NNLO+

a3s

a3s

a3s

a2s

a2s

order

* Dresum starts from a0s , it already contains Γ0 .
** Definition of ζµ is correct only in the natural ordering, i.e. LO,NLO,NNLO. Proper definition in + orders would
make the function too heavy. The resumed version has the same counting.

26
C.

NP input and NP parameters

The NP parameters are used in the definition of the function DNP . Their number is read from the constants-file,
and allocated (and set = 0) during the initialization procedure. Their values are set by command
call TMDR setNPparameter(input)
where input is real*8 list NP parameters, with the length equals to the number of NP parameters.
– DNP –
The important part of TMD evolution is the rapidity anomalous dimension. It has a NP part which is to be
parameterized by user. It should be done in the function DNP(mu,b,f) in the end of the file, where mu is (real*8)
scale, b is (real*8) parameter b, f is (integer) flavor. This functions is used for all evolution kernels. Specifying
it, you can use build-in functions Dpert(mu,b,f) and Dresum(mu,b,f) for the perturbative expressions of D. Also
the NP parameters from the set which are given by variables NPparam(i).
– zetaNP –
The arTeMiDe is founded on the notion of ζ-prescription, therefore, the ζµ line plays essential role. For D =
6 DNP
(which is standard situation), the ζµ line is different from the perturbative. It should be set within the arTeMiDe.
It is done by user in the function zetaNP(mu,b,f), with the same arguments as for DNP. Note, that it MUST
approach ζµ perturbation in small-b regeme. Otherwise, the evolution is calculated incorrectly. E.g.
if DNP = Dpert (b∗ ) + gK b2 the ζNP = ζperp (b∗ ) + .., where dots are power suppressed, and thus can be dropped.
Defining this function you can use zetaMUpert and zetaMUresum for perturbative and resumed versions of ζµ , as well
as, NPparam(i).
In the model code user can provide the ReplicaParameters(n), which returns the array of NP parameters corresponding to integer number n. It is convenient to specify initializing values here, or indeed, the values for fit replicas.
i
D.

Evaluating TMD evolution kernel

The evolution kernel are presented in two types for the evolution from arbitrary point to arbitrary, and for th
evolution from the arbitrary point to the ζ-line. Since all three types of evolution discussed here has different number
of arguments, they could not be confused.
Function

solution

Evol.type Comments

Evolution from (µf , ζf ) to (µi , ζi )
TMDR R(b,muf,zetaf,mui,zetai,mu0,f)

improved D

1

TMDR R(b,muf,zetaf,mui,zetai,f)

improved γ

2

Evolution from (µf , ζf ) to (µi , ζµi )
TMDR Rzeta(b,muf,zetaf,mui,mu0,f)

improved D

1

TMDR Rzeta(b,muf,zetaf,mui,f)

improved γ

2

fixed µ

3

TMDR Rzeta(b,muf,zetaf,f)

Evolution along ζ. Absolutely fastest.

where
b (real*8) Transverse distance (b > 0) in GeV
zetaf,muf (real*8) hard-factorization scales (ζf , µf ) in GeV. Typically, =(Q2 , Q)
zetai,mui (real*8) low-factorization scales (ζi , µi ) in GeV.
mu0 (real*8) The scale of perturbative definition of rapidity anomalous dimension D µ0 in GeV.
f (integer) parton flavor. 0 for gluon, 6= 0 for quarks.
The parameter evolution type is set in constants-file and is used by TMDs to call particular version of evolution.
Within only the TMDR-module it is not needed.

27
E.

Inverted evolution and the lowest available Q

At small values of parameter Q = Q0 the point (Q, Q2 ) crosses the ζ-lines. The value of Q0 dependents on b. The
dangerous situation is then hard scale of the process Q is smaller then Q0 at large b = b∞ . In this case the evolution
kernel R[b∞ , (Q, Q2 ) → ζµ ] > 1, which is generally implies that it grows to infinity. However, it happens only at
small values of Q. E.g. at NNLO the typical value of Q0 is ∼ 1.5GeV. That should be taken into account during
consideration of low-energy experiment and especially their error-band, since the point (c2 Q, Q2 ) could cross the point
at larger values of Q.
The function LowestQ() returns the values (real*8(1:3)) {Q−1 , Q0 , Q+1 }, which are solution of equation Q2 =
ζcQ (b), for (fixed bu) large values of b. Q−1 corresponds to c = 0.5, Q0 corresponds to c = 1 and Q+1 corresponds to
c = 2.

28
IX.

UTMDPDF MODULE

The module uTMDPDF performs the evaluation of the unpolarized TMD PDF at low scale µi in ζ-prescription. It is
given by the following integral
Z 1
dz
z
f
Ff (x, b) =
Cf ←f 0 (z, b, c4 µOPE )ff 0 ( , c4 µOPE )fN
(9.1)
P (x, z, b, {λ}),
x
x z
where ff (x, µ) is PDF of flavor f , C is the coefficient function in ζ-prescription, fN P is the non-perturbative function.
The variable c4 is used to test the scale variation sensitivity of the TMD PDF. The NNLO coefficient functions used
in the module were evaluated in [5] (please, cite it if use).
List of available commands
Command

Type

Sec.

Short description

uTMDPDF Initialize(order)

subrout.

IX A

Initialization of module.

uTMDPDF SetLambdaNP(..)

subrout

IX B

Set new NP parameters used in FNP and mu OPE.

uTMDPDF lowScale5(x,b,h)

(real*8(-5:5)) IX C

Returns unpolarized TMD PDF at x, b and hadron h.
Gluon flavour undefined.

uTMDPDF lowScale50(x,b,h)

(real*8(-5:5)) IX C

Returns unpolarized TMD PDF at x, b and hadron h.

uTMDPDF SetScaleVariation(c4))

subrout

uTMDPDF resetGrid(bG,g)

subrout

Set new value of c4 (default value c4 = 1).
IX D

Force reset or deconstruct the grid.

List of inputs
Input

Setup by

Short description

ModelInitialization()

write-in

Necessary predefinitions by user. E.g. some precalculations
for FNP.

FNP(x,z,b,hadron)

write-in

NP-model for fN P (x, z, b, {λ}) depends on the hadron. See
sec.IX B

mu OPE(x,bt)

write-in

The value of µOPE .

lambdaNP

uTMDPDF SetLambdaNP(..) NP parameters used in FNP and mu OPE.

as

defined in QCDinput

Strong coupling. See sec.II

xf (x)

defined in QCDinput

Unpolarized PDF. See sec.II

A.

Initialization

Prior the usage module is to be initialized (once per run). By
call uTMDPDF Initialize(order)
here order defines the perturbative order of the coefficient function according to the
LO,LO+ = a0s ,
B.

NLO,NLO+ = a1s ,

NNLO,NNLO+ = a2s .

Definition of non-perturbative part, fN P and parameters

The model for TMD is given by fN P (and in smaller amount by µOP E ). In the current version there is no possibility
to implement b∗-prescription, to be added in future. The definitions of these functions is provided by user in the file
uTMDPDF model.f90, which is located in the scr/model directory.
• The function FNP is dependent on x, z, b and λ (and the hadron flavor). It is an array for all flavors (-5:5).
It uses the parameters λ1,2.... which are passed to it by main module. The total number of NP parameters
LambdaNPLength, is declared in the constants-file.

29
• Also user can provide the value of µOPE (or use the default one) in the function mu OPE(x,b). This scale is used
inside the convolution F (x, b) = C(x, b; µOPE ) ⊗ q(x, µOPE ). The function could depend on x (the one which
enter f (x) in the convolution), however, this option has not been accurately tested yet..
• Together with the model user can provide the function ReplicaParameters(n), which returns NP parameters
in accordance to input integer number n. These parameters will be set as be current λ1,2.. , upon the call
uTMDPDF SetLambdaNP(n), where n is integer number of the replica. It is convenient to specify initializing
values here, or indeed, the values for fit replicas.
To set the values for array lambdaNP use the subroutine
call uTMDPDF SetLambdaNP((/λ1 , λ2 ,.../))
Optional: There exist the overloaded version of uTMDPDF SetLambdaNP, with two additional boolean parameters
call uTMDPDF SetLambdaNP((/λ1 , λ2 ,.../),makeGrid,includeGluons)
If parameter makeGrid=.true. then for this run of non-perturbative parameters the grid for TMD will be evaluated.
Then until new NP parameters set the TMDs are reconstructed from the grid, see sec.IX D.
If parameter includeGluons=.true., the grid is calculated with gluons. If parameter includeGluons=.false.,
the grid is calculated without gluons (but the mixture of quark with gluon is taken into account. The difference is
the same as, e.g. between uTMDPDF lowScale5 and uTMDPDF lowScale50 functions (see next section).
Default version has makeGrid=.false.,includeGluons=.false.. Note, that this command compare new values of
parameters to the old one. If they coincides, the grid is not renewed.
Optional: There exist the overloaded version of uTMDPDF SetLambdaNP(n), with n being an integer. It attempt to
load user defined set of NP parameters associated with number n.

C.

Evaluating unpolarized TMD PDFs

The expression for unpolarized TMD PDFs is given by the function
uTMDPDF lowScale??(x,b,h)
where
x (real*8) Bjorken-x (0 < x < 1)
b (real*8) Transverse distance (b > 0) in GeV
h (integer) The number that indicates the hadron. Since coefficient function is hadron independent, this number
influence the PDF that used, and FNP.
The questions marks stand for a flavor content of TMD-vector. The functions evaluate the TMD PDFs of different
flavours simultaneously.
¯ ?, d, u, s, c, b. Gluon contribution is unuTMDPDF lowScale5(x,b,h) returns (real*8) array(-5:5) for b̄, c̄, s̄, ū, d,
defined, but taken into account in the mixing contribution.
¯ g, d, u, s, c, b. This procedure is slower
uTMDPDF lowScale50(x,b,h) returns (real*8) array(-5:5) for b̄, c̄, s̄, ū, d,
(∼ 10 − 50% depending on parameters, mainly on x) in comparison to the previous command. The slowdown
is presented since the gluon coefficient function has 1/x behavior, and requires more iteration to reach the
demanded precision. If gluons are not needed use previous.
Important note: there is no arguments µ and ζ, because the arTeMiDe uses the ζ-prescription, where a TMD
distribution is scaleless. The scale of matching procedure µOPE is set in the function mu OPE (see previous
subsection). Note, that the TMD at different then ζ-prescription point can be evaluated within TMDs package
(which uses uTMDPDF in turn).
Additional points:
• In order to avoid possible problems at b = 0, at b < 10−6 the value of b is set to b = 10−6 . This region is
numerically non-important, since in any cross-section it is suppressed by bn (n > 1) within the Fourier integral.

30
• The convolution procedure C ⊗ f is the most costly procedure in the package. Its timing seriously increases from
NLO to NNLO coefficient function (about 10 times). In the current version we implement the Gauss-Kronrod
adaptive algorithm, with estimation of accuracy as |(G7 − K15)/(f (x)fN P (1))| < , where the default value
of  is 10−3 . According to our checks default estimation guaranties the 4-digit precision of the evaluation. If
integrand does not converge fast enough at z → 1 (e.g. for gluon contribution at NNLO, where ln3 z̄ is presented),
the integral at (x0 , 1) is replaced by exact integral with constant f (x)fN P . The value of x0 is determined by
f 0 (x0 ) <  and x0 > 1 − . This additional procedure is needed to ensure convergence of the integral. However,
in our experience (which uses only quark TMDs), this extra procedure is not used at all.

D.

Grid construction

For fitting procedure one often needs to evaluate TMDs multiple times. For example, for fit performed in [1] the
evaluation of singe χ2 entry requires ∼ 16 × 106 calls of uTMDPDF ... Every call of uTMDPDF .. at NNLO order,
requires ∼ 200 calls of pdfs, depending on x, b and λ’s. Therefore, in such situations it is much more cheaper to make
a grid of TMD distributions for given set of non-pertrubative parameters (i.e. the grid is in x and b), and then use
this grid for the interpolation of TMD values.
The griding turns on by the call overloaded version of uTMDPDF SetLambdaNP(lambda,makeGrid,includeGluons)
with makeGrid=.true. (see also sec.IX B). After this call the grid will be built (the corresponding massage will be
shown on the screen, if output level is > 1). This grid is used for the interpolation of TMD distribution until the next
call of uTMDPDF SetLambdaNP, which resets/cancels grid.
To speed up the multiple changes of parameters, the packages checks the function FNP onto the x-dependance. If
it is x-independent, then the grid (unless it is forcibly reseted) is not renewed but reweighted with new FNP. It is
possible since in this case FNP does not enter the convolution.
The interpolation is cubic. The grid is build for the finite domain of x ∈ (xmin , 1) and b ∈ (0, bM ). For x < xmin
the program will be terminated (with an error). For b > bM the extrapolation by the function exp(−α(x) − β(x)b) (or
exp(−α(x) − β(x)b2 )) is made (with the common sign equal to sign of TMD at b = bM ). In the default set we have
xmin = 10−5 ,

bM = 100.

The default grid is 250×750 (the grid is logarithmic in both x and b, small x and b → 0), we have found that it
gives in average 5-6 digit precision. All this parameter can be changed in constants file in the section 3.D. These
parameters have been used to fit a large domain of energies and qT . However, we recommend, to check the obtained
result by exact evaluation without a grid to ensure the precision in particular cases.
The form of the extrapolation (exponential or Gauassian) can be also changed in the file constants, sec. 3.D.
The subroutine uTMDPDF resetGrid(makeGrid,includeGluons) changes the current behaviour (for the meaning
of arguments see uTMDPDF SetLambdaNP). If makeGrid=.true. the grid will be recalculated.
E.

Theoretical uncertainties

uTMDPDF SetScaleVariation(c4) changes the scale multiplicative factor c4 (see [1], eqn.(2.46)).

31
X.

UTMDFF MODULE

The TMDFF functions structurally repeats the TMDPDF functions. Therefore, the module is practically the same
as uTMDFF. The NNLO coefficient functions used in the module were evaluated in [5, 6] (please, cite it if use).
XI.

SUPPLEMENTARY CODES

In the arTeMiDe archive you can find the codes which evaluates the cross-sections using our fit parameters.
A.

Drell-Yan cross-section

The compile the program for the evaluation of Drell-Yan cross-section evaluate: make dy. As a result of evaluation
in the executable file arTeMiDe DY and the file of input parameters input will be placed in /bin. The program
arTeMiDe DY evaluates the differential cross-section dσ/dQ2 dydqT2 for the production of Z and γ ∗ in the Drell-Yan
process (take care that in the current fit we expect agreement with the data for qT < 0.2Q). The program also
evaluates various integrals of cross-section such as
Z

Q2

Q1

dQ2 ,

Z

y2

Z

qT 2

dy,
y1

qT 1

dqT2
,
qT 2 − qT 1

(11.1)

and their combinations. It also takes (if necessary) into account lepton cuts. Therefore, can be used to build DY
cross-section for wide range of experiments. To input all these options check the file input, which is self-explanatory.

32
XII.

HARPY

The harpy (from combination of Hybrid ARtemide+PYthon)) is an interface to artemide to the python.
It is directly possible to interfacing the artemide to python since artemide is made on fortran95. It uses some of
it features, such as interfaces, and indirect list declarations, which are alien to python. Also I have not found any
convenient way to include several dependent Fortran modules in f2py (if you have suggestion just tell me). Therefore,
I made a wrap module harpy.f90 that call some useful functions from artemide with simple declarations. So, it
could be linked to python by f2py library.
So, in the current realization I create the signature file that declare python module artemide, which has an wrap
module harpy. In python it looks like
>>> import artemide
>>> artemide.harpy.initialize(”NNLO”)
>>> print artemide.harpy.utmdpdf 5 optimal(0.1,1.,1)
Ugly, but it works.
Note, that not all functions of artemide are available in harpy. I have added only the most useful, however, you
can add them by our-self, or write me an e-mail. Here, list the functions from artemide and their synonym in harpy
artemide
module

function

General
TMDX DY

TMDs

Initialize(order)
TMDX DY SetNPParameters(array)

SetLambda(array)

TMDX DY SetNPParameters(integer)

SetLambda ByReplica(integer)

TMDX DY SetScaleVariations(c1,c2,c3,c4)

SetScaleVariation(c1,c2,c3,c4)

uTMDPDF 5(x,bt,muf,zetaf,h)

uTMDPDF 5 Evolved(x,bt,muf,zetaf,h)

uTMDPDF 50(x,bt,muf,zetaf,h)

uTMDPDF 50 Evolved(x,bt,muf,zetaf,h)

uTMDPDF 5(x,bt,h)

uTMDPDF 5 Optimal(x,bt,h)

uTMDPDF 50(x,bt,h)

uTMDPDF 50 Optimal(x,bt,h)

TMDs inKT uTMDPDF kT 5(x,kt,muf,zetaf,h)

TMDX DY

harpy.f90

uTMDPDF kT 5 Evolved(x,kt,muf,zetaf,h)

uTMDPDF kT 50(x,kt,muf,zetaf,h)

uTMDPDF kT 50 Evolved(x,kt,muf,zetaf,h)

uTMDPDF kT 5(x,kt,h)

uTMDPDF kT 5 Optimal(x,kt,h)

uTMDPDF kT 50(x,kt,h)

uTMDPDF kT 50 Optimal(x,kt,h)

xSec DY(X,proc,s,qT,Q,y,iC,cuts,Num)

X=DY xSec Single(proc,s,qT,Q,y,iC,cuts,Num)

xSec DY List(X,proc,s,qT,Q,y,iC,cuts,Num) X=DY xSec List(proc,s,qT,Q,y,iC,cuts,Num)
NOTE: there is no OPTIONAL parameters. All parameters should be defined (it is necessary for f2py).
For convenience I have also created a more user-friendly interface, written on python. It is called harpy.py
and located in /harpy, and can be imported as is.

33

[1] I. Scimemi and A. Vladimirov, Eur. Phys. J. C 78, no. 2, 89 (2018) doi:10.1140/epjc/s10052-018-5557-y [arXiv:1706.01473
[hep-ph]].
[2] L. A. Harland-Lang, A. D. Martin, P. Motylinski and R. S. Thorne, Eur. Phys. J. C 75 (2015) no.5, 204
doi:10.1140/epjc/s10052-015-3397-6 [arXiv:1412.3989 [hep-ph]].
[3] I. Scimemi and A. Vladimirov, JHEP 1808 (2018) 003 doi:10.1007/JHEP08(2018)003 [arXiv:1803.11089 [hep-ph]].
[4] A. Buckley, J. Ferrando, S. Lloyd, K. Nordstrm, B. Page, M. Rfenacht, M. Schnherr and G. Watt, Eur. Phys. J. C 75, 132
(2015) doi:10.1140/epjc/s10052-015-3318-8 [arXiv:1412.7420 [hep-ph]].
[5] M. G. Echevarria, I. Scimemi and A. Vladimirov, JHEP 1609, 004 (2016) doi:10.1007/JHEP09(2016)004 [arXiv:1604.07869
[hep-ph]].
[6] M. G. Echevarria, I. Scimemi and A. Vladimirov, Phys. Rev. D 93, no. 1, 011502 (2016) Erratum: [Phys. Rev. D 94, no.
9, 099904 (2016)] doi:10.1103/PhysRevD.93.011502, 10.1103/PhysRevD.94.099904 [arXiv:1509.06392 [hep-ph]].
[7] M. G. Echevarria, I. Scimemi and A. Vladimirov, Phys. Rev. D 93, no. 5, 054004 (2016) doi:10.1103/PhysRevD.93.054004
[arXiv:1511.05590 [hep-ph]].
[8] A. A. Vladimirov, Phys. Rev. Lett. 118, no. 6, 062001 (2017) doi:10.1103/PhysRevLett.118.062001 [arXiv:1610.05791
[hep-ph]].
[9] A. Vladimirov, JHEP 1804, 045 (2018) doi:10.1007/JHEP04(2018)045 [arXiv:1707.07606 [hep-ph]].
[10] T. Gehrmann, E. W. N. Glover, T. Huber, N. Ikizlerli and C. Studerus, JHEP 1006, 094 (2010)
doi:10.1007/JHEP06(2010)094 [arXiv:1004.3653 [hep-ph]].

34
XIII.

Ver.1.4

VERSION HISTORY

– HARPY: Implemented.
– TMDs and sub-modules: Added function SetReplica.
– TMDs: Added interface to optimal TMDs
– TMDs: Added check for length of incoming λN P
– TMDs: Fixed bug with incorrect gluon TMDs in functions 50.
– TMDs inKT: Implemented.
– TMDX DY: Added xSec DY subroutines.
– TMDX DY: Encapsulated process, and cut-parameter variables.
– TMDX DY: Defined p1=2, which corresponds to integration over xF . Removed old functions for xF
integrations.
– TMDX DY: Fixed a bug with variation of c2 (introduced in ver.1.3).
– LeptonCutsDY : Old version of function removed, cut-parameters encapsulated into single array variable.
– LeptonCutsDY : asymmetric cuts in pT are introduced.
– LeptonCutsDY : New function CutFactor4, which is analogous to CutFactor3 but with one integral
integrated analytically. Thus, it is more accurate, and faster by 5-20%
– LeptonCutsDY : some rearrangement of variables that makes CutFactor4 and CutFactor3 faster by
20%.
– uTMDPDF & uTMDFF : FN P is now function of (x, z, b, h, λ). For that reason this version incompatible with earlier versions.
– uTMDPDF & uTMDFF: The common block of the code is extracted into a separate files. It include
calculation of Mellin convolution and Grid construction.

Ver.1.32

– TMDX DY: Added the routine with lists of y-bins, in addition to the lists of pt-bins.
– TMDX DY: The implementation of parallel computation over the list of cross-sections.
– LeptonCutsDY: The kinematic variables are encapsulated.
– TMDX DY: The kinematic variables are encapsulated (by the cost of small reduction of performance).
– uTMDR: Changed behavior at extremely small-b. Now values of b freeze at b = 10−6 .
– uTMDPDF & uTMDFF: Changed behavior at extremely small-b. Now values of b freeze at b = 10−6 .
– TMDR: Added NNNLO evolution (only for quarks, Γ3 is from 1808.08981). Not tested.
– TMDs: Functions RuPDFuPDF and antiRuPDFuPDF are added.

Ver.1.31

– Global: The module TMDF is split out from TMDX .. modules.
– Global: Constant tables are moved to the folder \tables.
– TMDX ..: Change the structure of process definition.
– TMDF: Fixed bug with throwing exception for failed check of convergence of Ogata quadrature.
– TMDF: Added possibility to vary the Ogata quadrature parameters.
– TMDX DY: The structure of interface to integrated cross-section simplified.
– TMDX DY: Added trigger for exact power-corrected values of x1,2 .
– uTMDPDF & uTMDFF: Fixed rare error for exceptional restoration of TMD distribution from grid,
then fN P evaluated to zero.

Ver.1.3

– Global: Complete change of interface. Interface update for all modules.
– uTMDPDF: Added hadron dependence. FNP is now flavour and hadron dependent.
– uTMDPDF: Renormalon correction is removed. As not used.
– TMDR: The grid (and pre-grid) option is removed. Since it was incompatible with new interface. Also
the new evolution (type 3) is faster any previous (with grids).

35
Ver.1.2(unpub.)

– TMDR: Older version is changed to uTMDR1. New evolution routine implemented.
– uTMDFF: Implemented.
– uTMDPDF: Fixed bug in evaluation of gluon TMDs, within the evaluation of (..)+ part.
– Global: Removed functions for the evaluation of only 3-flavours TMDs. As outdated and not used.
– Global: Number of non-pertrubative parameters is now read from ’constants’-file. Module TMDs initialize
sub-modules with accordance to this set.
– Global: Module TMDX is renamed into TMDX DY, also many functions in it renamed.
– uTMDX SIDIS: Implemented.
– TMDs: As an temporary solution introduced a rigid cut for TMD(µ < mq ).
– TMDX: Update of Ogata quadrature, with more accurate estimation of convergence.

Ver.1.1 hotfix Bugs in uTMDPDF and TMDR related to the evaluation of gluon TMDs fixed (thanks to Valerio Bertone).
Ver.1.1

– Global: The physical, numerical and option constant are moved to the file constants, where they are
read during the initialization stage.
– MakeGridsForTMDR: Update of integration procedures to adaptive. Default grids accordingly updated (no
significant effect).
– uTMDPDF: Update of the integration procedure in uTMDPDF, to adaptive Gauss-Kronrod (G7-K15). with
special treatment of the x → 1 singularity.
– uTMDPDF: The procedure for evaluation of TMD for individual flavour (uTMDPDF lowScale(f,x,b,mu)) is
removed, as outdated.
– uTMDPDF: Removed argument µ, from uTMDPDF ...(x,b). Added function mu OPE(b), which is used as
µ-definition for TMDs.
– uTMDPDF: Optional griding of TMDs is added. See sec.??
– TMDR: fixed potential error in the ”close-to-Landau-pole” exception.
– TMDs: fixed potential error in the evaluation of the gluon evolution factor.
– TMDX: the name convention of subroutines CalculateXsection ..., changed to CalculateXsec ..., to
shorten the name length.
– TMDX: added functions CalculateXsec PTint Qint YintComplete(X,qtMin,qtMax,QMin,QMax) and
CalculateXsec Qint YintComplete(X,qtMin,qtMax,QMin,QMax).
– TMDX&TMDs&uTMDPDF: the independent variation constant c4 is added (in the ver.1 variation of c3 and c4
was simultaneous). The corresponding routines are updated.

Ver.1 Release: uTMDPDF, TMDR, TMDs and TMDX modules. Only Drell-Yan-like cross-sections.

36
XIV.

BACKUP

TO DO LIST

• Re-check uTMDFF module. Possible mistake in 1/z 2 factors.
• Add possibility for non-perturbative definition of ζ-line.

37
A.

arTeMiDe structure before v1.3

MakeGridsForTMDR

User defined
as

Precalculated grids for various RGE, see
sec.??.
User defined functions
• InitializeAs byUser
• alphaS ByUser

PDF Grids

RGE Grids
Default from MMHT2014[2]

paths

TMDR
Evaluates TMD evolution
factor R. See sec.VIII

uTMDPDF

User defined
unpolarized
PDF

User defined
fN P

Evaluates unpolarized TMD PDF at low-scale
point. see sec.IX
User defined functions:
• InitializePDF byUser
• xPDF
• ModelInitialization byUser
• FNP

uTMDFF
Evaluates unpolarized TMD FF at low-scale
point.
Not implemented in the ver.1

..
Not implemented in the ver.1
TMDs

User defined lownormalization scale µ.

Fiducial cuts on leptons.

qT -independent part.

Integrand of Fourier.

Evaluates of TMD distributions. See sec.VI
User defined functions
• mu LOW

TMDX DY

TMDX SIDIS

Evaluates cross-section of
DY-type with TMD distributions. See sec.III
User defined functions
• CutPrefactor byUser
• XPrefactor byUser
• XIntegrand

Evaluates cross-section of
SIDIS-type with TMD distributions. See sec.III
User defined functions
• XPrefactor byUser
• XIntegrand



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 37
Page Mode                       : UseOutlines
Author                          : 
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.15
Create Date                     : 2019:01:21 17:10:48+01:00
Modify Date                     : 2019:01:21 17:10:48+01:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian) kpathsea version 6.2.1dev
EXIF Metadata provided by EXIF.tools

Navigation menu