All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Grid::evolve_with_slice_iter
, AlphasTable
and OperatorSliceInfo
,
which define a new interface supporting very large evolution kernels that
have been introduced in EKO v0.13. This interface will replace Grid::evolve
--dont-sort
switch to pineappl channels
, which displays the channel
sizes orderd by channel index (instead of channel size)convolute
to convolve
,
because the latter is the proper verb of ‘convolution’. The old name
convolute
is now an alias of convolve
, which means both can be used. The
methods Grid::convolute*
are left unchanged and will be renamed in later
version--silence-lhapdf
to --lhapdf-banner
and suppress LHAPDF’s
banners by default, unless --lhapdf-banner
is givenGrid::evolve
has now been marked deprecatedlhapdf
to managed-lhapdf
crate which automatically
downloads PDF sets when they are needed--allow-extrapolation
, which, when present,
allows LHAPDF to extrapolate PDF values outside its valid region in x
.
If this option is not present the PDFs are set to zero, which remains the
default behaviorBinRemapper::new
, the limits are now checked for overlaps, in
which case a new error is returnedParseBinRemapperError
to allow capturing errors from
BinRemapper::new
SubGrid
that was exported in the CAPI as the type
pineappl_subgrid
. This type was not used anymore and was a left-over of the
changes in the previous version.Grid::dedup_channels
, the C function pineappl_grid_dedup_channels
and the new switch --dedup-channels
to the CLI that detect equal subgrids
and reduce the space requirements of a griddouble_ratio_pdf
to the pineappl plot
toolGrid::merge
methodpineappl_grid_export_mu2_slice
,
pineappl_grid_nonzero_mu2_slices
, pineappl_subgrid_delete
,
pineappl_grid_replace_and_delete
, pineappl_subgrid_import_mu2_slice
and
pineappl_subgrid_new2
, which were only used in the C++ programs that were
the predecessors of the export
and import
functionality now implemented
in the CLIlumi_id_types=pdg_mc_ids
was not present. Now when
this metadata is not present it is assumed PDG MC IDs are usedGrid::optimize_using
and its corresponding C function
pineappl_grid_optimize_using
, which optimize a Grid
like
Grid::optimize
, but allow for more fine-grained selection of optimization
options, which are listed in the new bitflags GridOptFlags
pineappl plot
now produces a more cleaned-up matplotlib script, in which
the most important information, which a user may whish to change, is at the
top of the filepineappl pdfunc
was renamed into pineappl uncert
, which is now also able
to calculate scale uncertainties, which in turn have been removed from
pineappl convolute
pineappl help
now relies on installed man pagesGrid::evolve
to require more x-grid values than needed;
this result in errors similar to the following: ‘no operator for x =
0.0018585113621881083 found’ where this x-grid value is a point that is used
in a masked order--no-pdf-unc
to plot
subcommand to skip the time-consuming
computation of PDF uncertaintiespineappl_grid_merge_bins
to the CAPI. This function
corresponds to Grid::merge_bins
and merges a range of bins together into a
new bin.Grid::split_lumi
, which splits the luminosity such that
it contains a single combination per partonic channel. This function is
available through the CAPI via pineappl_grid_split_lumi
and via the CLI
through pineappl write --split-lumi
--orders
switch to pull to allow the selection of a subset of
perturbative ordershelp
to show manpages of for each subcommand of
pineappl
--limit
in pull
now allows the value 0
for faster pull
computationpineappl plot
export
, which is able to convert some PineAPPL grids
into the APPLgrid formatpineappl evolve
pineappl import
now also imports fastNLO’s metadata:
fastNLOTable::GetDimLabels()
is stored as the value of the key
x{1,2,...}_labels
fastNLOTable::GetXSDescr()
is stored as the value of the key y_label
fastNLOTable::GetScDescr()
is stored as the value of the key
fastnlo_scenario
--silence-libraries
which did not work properly and relied
on non-portable code--force-positive
must be given at the same level as
--silence-lhapdf
delete
, optimize
, set
and update
were merged into
the new write
subcommand. Also the options --merge-bins
, --scale
and
--scale-by-order
were merged into write
remap
was merged into write
as the option --remap
,
which expects as a single argument the remapping string. The option --norm
was renamed to --remap-norm
, and --ignore-obs-norm
was renamed to
--remap-norm-ignore
. Note that the latter now counts dimensions from zero
onward, instead from one (old behavior)info
and obl
were merged into the new subcommand
read
pineappl convolute
to not show
results for more than two PDF setspineappl convolute
to ignore a possible --order
parameter for additionally given PDF setspineappl plot
to show wrong pulls if the central
PDF set had asymmetric uncertaintiespineappl sum --integrated
. This subcommand did not always work as
expected, use pineappl obs --merge-bins
insteadpineappl_grid_scale_by_bin
to the CAPI that corresponds
to Grid::scale_by_bin
analyze
, which performs various analyses. For time
being only one analysis is available: ckf
. This calculates the per-channel
K factors which can be compared against the per-bin K factors--orders
to evolve
to allow evolving a subset of orders of
the full grid--fktable
to the CLI subcommand pineappl obl
to detect
whether a grid is also an FK tableGrid::evolve_info
which extracts the information need to
generate EKOs. This function is less restrictive than Grid::axes
, which it
will replacepineappl import
now converts also scale-variation log-grids from
flexible-scale fastNLO tablesGrid::evolve
, which will succeed Grid::convolute_eko
and
is more robust, faster and easier to understandLumiCache::setup
, which caused wrong results returned by
Grid::convolute
, if lumi_cache
is reused for a second grid with different
Q2/x1/x2 parameterspineappl_applgrid
and
pineappl_fastnlo
--dis-pid
switch to import
subcommand--no-optimize
switch to import
subcommand--silence-fastnlo
to --silence-libraries
, which now silences also
APPLgridimport
converter, which now is able to convert most APPLgrids and
fastNLO tables on ploughshareREMAPPING
string that were handled incorrectlypineappl
integration tests, which resolves that problem
that cargo build
had to be called beforeGrid::convolute_eko
that lead to wrong result when
subgrids had different x-gridspdfunc
, plot
and pull
subcommands. For instance, pineappl pdfunc ... NNPDF40_nnlo_as_01180
calculates the central value using the average over all replicas, whereas
pineappl pdfunc ... NNPDF40_nnlo_as_01180/0
uses the zeroth member. The
calculated uncertainties are the same for bothimport
pineappl plot
pineappl_grid_clone
, which clones a given
grid--silence-fastnlo
to --silence-libraries
, which also
covers APPLgrid. For backwards compatibility the previous name still works--force-positive
to CLI to cut out negative PDF valuespineappl_grid_key_value
to read out metadata and
pineappl_string_delete
to delete string allocated from the previous
function--ignore-bin-limits
to diff
that ignores possibly
different bin limits. However, the number of total bins must still be the
same between both gridsimport
--digits-abs
, --digits-rel
and --digits
to various
subcommand to influence the number of (fractional) digits printedpdfset=label
, where pdfset
must
be an LHAPDF identifier, and results using this set are displayed using
label
instead of pdfset
.pineappl
ops --scale-by-bin=
o
, b
and l
import
, which at this stage converts fastNLO tables to
PineAPPL grids. This program was previously an example and written in C++ and
now has been removed.--bins
option to the CLI subcommand sum
, which allows to sum
bins together--fk-table
option to the CLI subcommand optimize
, which allows
the optmization of FK tables based on assumptions of heavy-flavor PDFsops
which collects various modifying operations on
grids. The switches --cc1
and --cc2
charge conjugate the first and second
PDF, respectively, and charge conjugates the luminosity function
correspondingly such that the convolutions are unchangedpineappl convolute ... -s 1
the scale-variation columns are no
longer shown. The output would be zero, but this doesn’t make sense. All
other values of -s
are unaffected.Grid::optimize
that strips empty orderspineappl obl --bins
, which had the wrong column headers if there were
more than one observablepineappl_grid_set_remapper
sum
to sum over bins of a gridpull
to view where the differences between two PDF
sets are coming fromfastNLOCoeffAddFix
). Tables of type fastNLOCoeffAddFlex
are not supported
yet--subgrid-pull
to the plot
subcommand; this generates
several plots showing the where the pull between two PDFs comes from in x1
and x2
, and also in rapidity y
and invariant mass M
optimize
method such that it removes all entries of a
luminosity function that are empty across orders and bins. This required a
change in merge
, which now allows the merge of grids with different
luminosities and ordersLHAPDF-set-name=label
, which uses the set LHAPDF-set-name
to load it from
LHAPDF, but label
is the name that appears in the plot legendsubgrids
command: --muf
, --mur
, --x1
and
--x2
to print the corresponding grid values and --stats
to print
information about the space requirements of the subgrid type--delete
, which allows to delete bins from a gridobl
, which stands for orders (o), bins (b) and lumis
(l), that shows information about the all contained subgrids in a grid;
pineappl obl -l
will replace pineappl lumis
in the future--orders1
, --orders2
, --scale1
and --scale2
to the
subcommand pineappl diff
, which allow the selection of orders and scaling
of grids that should be comparedpineappl
no longer prints both the differential
and integrated cross sections. Instead it either prints the differential
cross sections, or, if the switch -i
or --integrated
is given, the
integrated cross sections (without bin limits and/or normalizations) are
printedpineappl_subgrid_q2_slice
,
pineappl_subgrid_filled_q2_slices
and pineappl_subgrid_replace_and_delete
have been replaced by pineappl_grid_export_q2_slice
,
pineappl_grid_nonzero_q2_slices
and pineappl_grid_replace_and_delete
,
respectively.pineappl_subgrid_fill_q2_slice
has been replaced by
function pineappl_subgrid_import_q2_slice
pineappl_subgrid_new
has been replaced by a function
with the similar name but different argumentspineappl
subcommand channels
, convolute
and
pdf_uncertainty
. By default only the differential cross sections are shown
(integrated numbers divided by bin widths), but the flag -i
or
--integrated
can be given to switch to the integrated numbers, which are
not divided by bin widths.EmptySubgridV1
plot
subcommand: bounding boxes are
properly calculated now, added support for higher-dimensional distributionsplot
subcommand such that the legend is put in between panels,
thereby producing less overlapping elementspineappl_subgrid_new
and
pineappl_subgrid_import_q2_slice
with pineappl_subgrid_new2
and
pineappl_subgrid_import_mu2_slice
, respectively. The latter support
independent renormalization and factorization scalespineappl_grid_export_q2_slice
and
pineappl_grid_nonzero_q2_slices
to pineappl_grid_export_mu2_slice
and
pineappl_grid_nonzero_mu2_slices
, respectivelysubgrids
now does not print empty grids; the old behavior
can be restored with the new switch --show-empty
pineappl diff
now behaves differently whenever luminities are different and
errors out when this is the case. This can be adjusted using
--ignore-lumis
git_version
that prevented uploading
pineappl_capi
and pineappl_cli
to crates.iopineappl_grid_bin_limits
,
pineappl_grid_lumi
, pineappl_lumi_combinations
, pineappl_lumi_count
,
pineappl_lumi_entry
remap
subcommand which allows to change the binning and dimensions of
a distribution--silence_lhapdf
switch to suppress the output of LHAPDFLagrangeSparseGrid
, which can be generated using
the new subcommand optimize
from existing grids; this data structure uses
less memory and is a bit fasteroptimize
, which optimizes the size for each grid, both
in memory and when written as a fileLagrangeSubgridV2
, which allows for different x1
and x2
limits, for example for DIS processesinfo
: --get
, --keys
, --show
,
which lets one read a single or all key-values pairs of each grid file.set
which allows to modify the key-value storagepineappl_grid_set_key_value
and
pineappl_grid_optimize
--ignore_orders
to the diff subcommand, which sums over
all orders and is therefore useful if two grids are compared that should have
the same contents in principle, but in practice have different ordersplot
, which allows to plot the information contained
in a griddiff
are now properly sorted and do not
change randomly.diff
now shows the differential cross sections of both grids
with the same number of digits as the subcommands convolute
and similar.Grid::bin_limit
and replaced it with Grid::bin_info
uintptr_t
has been changed to the more common type
size_t
LagrangeSubgrid
type from V1
to V2
. This subgrid
type supports DIS and allows to reconstruct static scales. If a static scale
has been detected, optimize
can remove the interpolation in the Q^2
dimension.diff
did not show differences in per cent, although it
printed a per cent sign. Now it shows relative differences, which is always
useful, even when the differences are smaller than sub-per mille.--absolute
, --orders
, and --lumis
to the subcommand
channels
wrappers/python
and the
example in examples/python-dy-aa
--normalize
to the subcommand orders
, which can be used
to specify the orders that should be used to normalize to.pdf_uncertainty
pineappl
has a new subcommand pdf_uncertainty
to calculate PDF
uncertaintiesexamples/capi-dy-aa
one can find an example how to use the C APIGrid::with_subgrid_type
that allows the selection of a custom
Subgrid type--absolute
switch to the subcommand convolute
of pineappl
, which
shows all values of the scale variation as absolute numbersGrid::convolute
to speed up convolutions--orders
switch to the subcommand pdf_uncertainty
, to caclulate the
PDF uncertainty only with the specified perturbative ordersinfo
which shows the highest orders in alphas and
alphadiff
which compares two grids with each otherreweight
of SubgridParams
is set to true
by default now
(was false
before)pineappl
, bin widths are printed noworders
of pineappl
to normalise each leading order to
the sum of all leading orders, not only the firstpdf_uncertainty
of pineappl
to show the correct
integrated results (bin width was missing)