eko.evolution_operator package
Contains the central operator classes.
See Operator overview.
- eko.evolution_operator.select_singlet_element(ker, mode0, mode1)[source]
Select element of the singlet matrix.
- Parameters:
ker (numpy.ndarray) – singlet integration kernel
mode0 (int) – id for first sector element
mode1 (int) – id for second sector element
- Returns:
singlet integration kernel element
- Return type:
- eko.evolution_operator.select_QEDsinglet_element(ker, mode0, mode1)[source]
Select element of the QEDsinglet matrix.
- Parameters:
ker (numpy.ndarray) – QEDsinglet integration kernel
mode0 (int) – id for first sector element
mode1 (int) – id for second sector element
- Returns:
ker – QEDsinglet integration kernel element
- Return type:
- eko.evolution_operator.select_QEDvalence_element(ker, mode0, mode1)[source]
Select element of the QEDvalence matrix.
- Parameters:
ker (numpy.ndarray) – QEDvalence integration kernel
mode0 (int) – id for first sector element
mode1 (int) – id for second sector element
- Returns:
ker – QEDvalence integration kernel element
- Return type:
- class eko.evolution_operator.QuadKerBase(*args, **kwargs)[source]
Bases:
QuadKerBaseManage the common part of Mellin inversion integral.
- Parameters:
- class_type = jitclass.QuadKerBase#73a56d9d8550<is_singlet:bool,is_QEDsinglet:bool,is_QEDvalence:bool,is_log:bool,logx:float64,u:float64>
- eko.evolution_operator.quad_ker(u, order, mode0, mode1, method, is_log, logx, areas, as_list, mu2_from, mu2_to, a_half, alphaem_running, nf, L, ev_op_iterations, ev_op_max_order, sv_mode, is_threshold, n3lo_ad_variation, is_polarized, is_time_like, use_fhmruvv)
Raw evolution kernel inside quad.
- Parameters:
u (float) – quad argument
order (int) – perturbation order
mode0 (int) – pid for first sector element
mode1 (int) – pid for second sector element
method (str) – method
is_log (boolean) – is a logarithmic interpolation
logx (float) – Mellin inversion point
areas (tuple) – basis function configuration
as1 (float) – target coupling value
as0 (float) – initial coupling value
mu2_from (float) – initial value of mu2
mu2_from – final value of mu2
aem_list (list) – list of electromagnetic coupling values
alphaem_running (bool) – whether alphaem is running or not
nf (int) – number of active flavors
L (float) – logarithm of the squared ratio of factorization and renormalization scale
ev_op_iterations (int) – number of evolution steps
ev_op_max_order (int) – perturbative expansion order of U
sv_mode (int, enum.IntEnum) – scale variation mode, see eko.scale_variations.Modes
is_threshold (boolean) – is this an intermediate threshold operator?
n3lo_ad_variation (tuple) – N3LO anomalous dimension variation
(gg, gq, qg, qq, nsp, nsm, nsv)is_polarized (boolean) – is polarized evolution ?
is_time_like (boolean) – is time-like evolution ?
use_fhmruvv (bool) – if True use the FHMRUVV N3LO anomalous dimension
- Returns:
evaluated integration kernel
- Return type:
- eko.evolution_operator.quad_ker_qcd(ker_base, order, mode0, mode1, method, as1, as0, nf, L, ev_op_iterations, ev_op_max_order, sv_mode, is_threshold, is_polarized, is_time_like, n3lo_ad_variation, use_fhmruvv)[source]
Raw evolution kernel inside quad.
- Parameters:
quad_ker (float) – quad argument
order (int) – perturbation order
mode0 (int) – pid for first sector element
mode1 (int) – pid for second sector element
method (str) – method
as1 (float) – target coupling value
as0 (float) – initial coupling value
nf (int) – number of active flavors
L (float) – logarithm of the squared ratio of factorization and renormalization scale
ev_op_iterations (int) – number of evolution steps
ev_op_max_order (int) – perturbative expansion order of U
sv_mode (int, enum.IntEnum) – scale variation mode, see eko.scale_variations.Modes
is_threshold (boolean) – is this an itermediate threshold operator?
n3lo_ad_variation (tuple) – N3LO anomalous dimension variation
(gg, gq, qg, qq, nsp, nsm, nsv)use_fhmruvv (bool) – if True use the FHMRUVV N3LO anomalous dimensions
- Returns:
evaluated integration kernel
- Return type:
- eko.evolution_operator.quad_ker_qed(ker_base, order, mode0, mode1, method, as_list, mu2_from, mu2_to, a_half, alphaem_running, nf, L, ev_op_iterations, ev_op_max_order, sv_mode, is_threshold, n3lo_ad_variation, use_fhmruvv)[source]
Raw evolution kernel inside quad.
- Parameters:
ker_base (QuadKerBase) – quad argument
order (int) – perturbation order
mode0 (int) – pid for first sector element
mode1 (int) – pid for second sector element
method (str) – method
as1 (float) – target coupling value
as0 (float) – initial coupling value
mu2_from (float) – initial value of mu2
mu2_from – final value of mu2
aem_list (list) – list of electromagnetic coupling values
alphaem_running (bool) – whether alphaem is running or not
nf (int) – number of active flavors
L (float) – logarithm of the squared ratio of factorization and renormalization scale
ev_op_iterations (int) – number of evolution steps
ev_op_max_order (int) – perturbative expansion order of U
sv_mode (int, enum.IntEnum) – scale variation mode, see eko.scale_variations.Modes
is_threshold (boolean) – is this an itermediate threshold operator?
n3lo_ad_variation (tuple) – N3LO anomalous dimension variation
(gg, gq, qg, qq, nsp, nsm, nsv)use_fhmruvv (bool) – if True use the FHMRUVV N3LO anomalous dimensions
- Returns:
evaluated integration kernel
- Return type:
- class eko.evolution_operator.Managers(atlas: Atlas, couplings: Couplings, interpolator: InterpolatorDispatcher)[source]
Bases:
objectSet of steering objects.
- interpolator: InterpolatorDispatcher
- class eko.evolution_operator.Operator(config, managers: Managers, segment: Segment, mellin_cut=0.05, is_threshold=False)[source]
Bases:
ScaleVariationModeMixinInternal representation of a single EKO.
The actual matrices are computed upon calling
compute().- Parameters:
- log_label = 'Evolution'
- full_labels: Tuple[Tuple[int, int], ...] = ((100, 100), (100, 21), (21, 100), (21, 21), (10201, 0), (10101, 0), (10200, 0))
- full_labels_qed: Tuple[Tuple[int, int], ...] = ((21, 21), (21, 22), (21, 100), (21, 101), (22, 21), (22, 22), (22, 100), (22, 101), (100, 21), (100, 22), (100, 100), (100, 101), (101, 21), (101, 22), (101, 100), (101, 101), (10200, 10200), (10200, 10204), (10204, 10200), (10204, 10204), (10103, 0), (10203, 0), (10102, 0), (10202, 0))
- property n_pools
Return number of parallel cores.
- property xif2
Return scale variation factor \((\mu_F/\mu_R)^2\).
- property int_disp: InterpolatorDispatcher
Return the interpolation dispatcher.
- property grid_size
Return the grid size.
- property mu2
Return the arguments to the \(a_s\) function.
- property a_s
Return the computed values for \(a_s\).
- property a_em
Return the computed values for \(a_{em}\).
- compute_aem_list()[source]
Return the list of the couplings for the different values of \(a_s\).
This functions is needed in order to compute the values of \(a_s\) and \(a_em\) in the middle point of the \(mu^2\) interval, and the values of \(a_s\) at the borders of every intervals. This is needed in the running_alphaem solution.
- property labels
Compute necessary sector labels to compute.
- property ev_method
Return the evolution method.
Submodules
eko.evolution_operator.flavors module
The write-up of the matching conditions is given in Matching Conditions.
- eko.evolution_operator.flavors.pids_from_intrinsic_evol(label, nf, normalize)[source]
Obtain the list of pids with their corresponding weight, that are contributing to
evol.The normalization of the weights is only needed for the output rotation:
if we want to build e.g. the singlet in the initial state we simply have to sum to obtain \(\Sigma = u + \bar u + d + \bar d + \ldots\)
if we want to rotate back in the output we have to normalize the weights: e.g. in nf=3 \(u = \frac 1 6 \Sigma + \frac 1 6 V + \ldots\)
The normalization can only happen here since we’re actively cutting out some flavor (according to
nf).
- eko.evolution_operator.flavors.get_range(evol_labels, qed)[source]
Determine the number of light and heavy flavors participating in the input and output.
Here, we assume that the T distributions (e.g. T15) appears always before the corresponding V distribution (e.g. V15).
- Parameters:
qed (bool) – activate qed
- Returns:
nf_in (int) – number of light flavors in the input
nf_out (int) – number of light flavors in the output
- eko.evolution_operator.flavors.rotate_pm_to_flavor(label)[source]
Rotate from +- basis to flavor basis.
- eko.evolution_operator.flavors.rotate_matching(nf, qed, inverse=False)[source]
Rotation between matching basis (with e.g. S,g,…V8 and c+,c-) and new true evolution basis (with S,g,…V8,T15,V15).
- eko.evolution_operator.flavors.rotate_matching_inverse(nf, qed)[source]
Inverse rotation between matching basis (with e.g. S,g,…V8 and c+,c-) and new true evolution basis (with S,g,…V8,T15,V15).
- eko.evolution_operator.flavors.qed_rotation_parameters(nf)[source]
Parameters of the QED basis rotation.
From \((\Sigma, \Sigma_{\Delta}, h_+)\) into \((\Sigma, \Sigma_{\Delta}, T_i^j)\), or equivalentely for \(V, V_{\Delta}, V_i^j, h_-\).
eko.evolution_operator.matching_condition module
Defines the matching conditions for the VFNS evolution.
- class eko.evolution_operator.matching_condition.MatchingCondition(op_members, q2_final)[source]
Bases:
OperatorBaseMatching conditions for PDF at threshold.
The continuation of the (formally) heavy non-singlet distributions with either the full singlet \(S\) or the full valence \(V\) is considered “trivial”. Instead at NNLO additional terms (“non-trivial”) enter.
eko.evolution_operator.operator_matrix_element module
The OME for the non-trivial matching conditions in the VFNS evolution.
- class eko.evolution_operator.operator_matrix_element.MatchingMethods(value)[source]
Bases:
IntEnumEnumerate matching methods.
- FORWARD = 1
- BACKWARD_EXACT = 2
- BACKWARD_EXPANDED = 3
- eko.evolution_operator.operator_matrix_element.matching_method(s: InversionMethod | None) MatchingMethods[source]
Return the matching method.
- Parameters:
s – string representation
- Returns:
int representation
- Return type:
i
- eko.evolution_operator.operator_matrix_element.build_ome(A, matching_order, a_s, backward_method)[source]
Construct the matching expansion in \(a_s\) with the appropriate method.
- Parameters:
A (numpy.ndarray) – list of OME
matching_order (tuple(int,int)) – perturbation matching order
a_s (float) – strong coupling, needed only for the exact inverse
backward_method (MatchingMethods) – empty or method for inverting the matching condition (exact or expanded)
- Returns:
ome – matching operator matrix
- Return type:
- eko.evolution_operator.operator_matrix_element.quad_ker(u, order, mode0, mode1, is_log, logx, areas, a_s, nf, L, sv_mode, Lsv, backward_method, is_msbar, is_polarized, is_time_like)[source]
Raw kernel inside quad.
- Parameters:
u (float) – quad argument
mode0 (int) – pid for first element in the singlet sector
mode1 (int) – pid for second element in the singlet sector
is_log (boolean) – logarithmic interpolation
logx (float) – Mellin inversion point
areas (tuple) – basis function configuration
a_s (float) – strong coupling, needed only for the exact inverse
nf (int) – number of active flavor below threshold
L (float) – :math:
\ln(\mu_F^2 / m_h^2)backward_method (InversionMethod or None) – empty or method for inverting the matching condition (exact or expanded)
is_msbar (bool) – add the \(\overline{MS}\) contribution
is_polarized (boolean) – is polarized evolution ?
is_time_like (boolean) – is time-like evolution ?
- Returns:
ker – evaluated integration kernel
- Return type:
- class eko.evolution_operator.operator_matrix_element.OperatorMatrixElement(config, managers: Managers, nf: int, q2: float, is_backward: bool, L: float, is_msbar: bool)[source]
Bases:
OperatorInternal representation of a single OME.
The actual matrices are computed upon calling
compute().- Parameters:
- log_label = 'Matching'
- full_labels: Tuple[OperatorLabel, ...] = ((100, 100), (100, 21), (21, 100), (21, 21), (90, 21), (90, 100), (21, 90), (100, 90), (90, 90), (200, 200), (200, 91), (91, 200), (91, 91))
- full_labels_qed: Tuple[OperatorLabel, ...] = ((100, 100), (100, 21), (21, 100), (21, 21), (90, 21), (90, 100), (21, 90), (100, 90), (90, 90), (200, 200), (200, 91), (91, 200), (91, 91))
- property a_s
Return the computed values for \(a_s\).
Note that here you need to use \(a_s^{n_f+1}\)
eko.evolution_operator.physical module
Contains the PhysicalOperator class.
- class eko.evolution_operator.physical.PhysicalOperator(op_members, q2_final)[source]
Bases:
OperatorBaseJoin several fixed flavor scheme operators together.
provides the connection between the 7-dimensional anomalous dimension basis and the 15-dimensional evolution basis
provides the connection between the 15-dimensional evolution basis and the 169-dimensional flavor basis
eko.evolution_operator.quad_ker module
Integration kernels.
- eko.evolution_operator.quad_ker.select_singlet_element(ker, mode0, mode1)[source]
Select element of the singlet matrix.
- Parameters:
ker (numpy.ndarray) – singlet integration kernel
mode0 (int) – id for first sector element
mode1 (int) – id for second sector element
- Returns:
singlet integration kernel element
- Return type:
- eko.evolution_operator.quad_ker.build_ome(A, matching_order, a_s, backward_method)[source]
Construct the matching expansion in \(a_s\) with the appropriate method.
- Parameters:
A (numpy.ndarray) – list of OME
matching_order (tuple(int,int)) – perturbation matching order
a_s (float) – strong coupling, needed only for the exact inverse
backward_method (InversionMethod or None) – empty or method for inverting the matching condition (exact or expanded)
- Returns:
ome – matching operator matrix
- Return type:
- eko.evolution_operator.quad_ker.select_QEDsinglet_element(ker, mode0, mode1)[source]
Select element of the QEDsinglet matrix.
- Parameters:
ker (numpy.ndarray) – QEDsinglet integration kernel
mode0 (int) – id for first sector element
mode1 (int) – id for second sector element
- Returns:
ker – QEDsinglet integration kernel element
- Return type:
- eko.evolution_operator.quad_ker.select_QEDvalence_element(ker, mode0, mode1)[source]
Select element of the QEDvalence matrix.
- Parameters:
ker (numpy.ndarray) – QEDvalence integration kernel
mode0 (int) – id for first sector element
mode1 (int) – id for second sector element
- Returns:
ker – QEDvalence integration kernel element
- Return type: