pineappl/
lib.rs

1//! `PineAPPL` is not an extension of `APPLgrid`.
2//!
3//! # Overview
4//!
5//! The main type of this crate is [`Grid`], which represents the interpolation grids that
6//! `PineAPPL` implements. Roughly speaking, a `Grid` is a three-dimensional array of [`Subgrid`]
7//! objects together with metadata. The three dimensions are
8//! 1. bins, whose limits can be accessed by [`Grid::bwfl()`], and
9//! 2. (perturbative) orders, represented by the type [`Order`] and accessible by
10//!    [`Grid::orders()`],
11//! 3. channels, whose definition is returned by [`Grid::channels()`].
12//!
13//! `Subgrid` is a `trait` and objects that implement it are of the type [`SubgridEnum`]. The
14//! latter is an `enum` of different types that are optimized to different scenarios: fast event
15//! filling, small storage profile, etc.
16//!
17//! [`Grid`]: grid::Grid
18//! [`Grid::bwfl()`]: grid::Grid::bwfl
19//! [`Grid::channels()`]: grid::Grid::channels
20//! [`Grid::orders()`]: grid::Grid::orders
21//! [`Subgrid`]: subgrid::Subgrid
22//! [`SubgridEnum`]: subgrid::SubgridEnum
23//! [`Order`]: boc::Order
24//!
25//! ## Metadata
26//!
27//! Metadata is a collection of key--value pairs, in which both keys and values are `String`
28//! objects. In metadata anything a user whishes can be stored. However, there are [special keys],
29//! which have meaning to `PineAPPL` and/or its CLI `pineappl`. This metadata enables the CLI to
30//! automatically generate plots that are correctly labeled, for instance. For more applications
31//! see also the [CLI tutorial].
32//!
33//! [special keys]: https://nnpdf.github.io/pineappl/docs/metadata.html
34//! [CLI tutorial]: https://nnpdf.github.io/pineappl/docs/cli-tutorial.html
35
36mod convert;
37mod v0;
38
39pub mod boc;
40pub mod convolutions;
41pub mod error;
42pub mod evolution;
43pub mod fk_table;
44pub mod grid;
45pub mod interpolation;
46pub mod packed_array;
47pub mod pids;
48pub mod reference;
49pub mod subgrid;