Skip to content

Commit

Permalink
Add missing functionality for multiple-scale grids
Browse files Browse the repository at this point in the history
  • Loading branch information
t7phy committed Jan 29, 2025
1 parent eeb7424 commit a9b51a2
Show file tree
Hide file tree
Showing 9 changed files with 172 additions and 67 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
uses: actions/cache@v4
with:
path: test-data
key: test-data-v16
key: test-data-v17
- name: Download test data
if: steps.cache-test-data.outputs.cache-hit != 'true'
run: |
Expand Down
2 changes: 2 additions & 0 deletions maintainer/download-test-data.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,5 @@ download 'https://ploughshare.web.cern.ch/ploughshare/db/atlas/atlas-atlas-wpm-a
download 'https://data.nnpdf.science/pineappl/test-data/STAR_WMWP_510GEV_WM-AL-POL.pineappl.lz4'
download 'https://data.nnpdf.science/pineappl/test-data/STAR_WMWP_510GEV_WM-AL-POL_PolPDF.tar'
download 'https://data.nnpdf.science/pineappl/test-data/STAR_WMWP_510GEV_WM-AL-POL_UnpolPDF.tar'
download 'https://data.nnpdf.science/pineappl/test-data/ZEUS_2JET_319GEV_374PB-1_DIF_ETQ2_BIN6.pineappl.lz4'
download 'https://data.nnpdf.science/pineappl/test-data/ZEUS_2JET_319GEV_374PB-1_DIF_ETQ2_BIN6.tar'
2 changes: 1 addition & 1 deletion pineappl/src/empty_subgrid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ mod tests {
#[should_panic(expected = "EmptySubgridV1 doesn't support the fill operation")]
fn fill() {
let mut subgrid = EmptySubgridV1;
subgrid.fill(&v0::default_interps(2), &[0.0; 3], 0.0);
subgrid.fill(&v0::default_interps(false, 2), &[0.0; 3], 0.0);
}

#[test]
Expand Down
21 changes: 8 additions & 13 deletions pineappl/src/evolution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -216,16 +216,12 @@ fn ndarray_from_subgrid_orders_slice_many(
) -> Result<X1aX1bOpDTuple, GridError> {
// TODO: remove these assumptions from the following code
assert_eq!(grid.kinematics()[0], Kinematics::Scale(0));
assert_eq!(
grid.kinematics()[1..]
.iter()
.map(|kin| match kin {
&Kinematics::X(idx) => idx,
Kinematics::Scale(_) => unreachable!(),
})
.collect::<Vec<_>>(),
(0..(grid.kinematics().len() - 1)).collect::<Vec<_>>()
);
let x_start = grid
.kinematics()
.iter()
.position(|kin| matches!(kin, Kinematics::X(_)))
// UNWRAP: there is always at least one X
.unwrap();

// create a Vec of all x values for each dimension
let mut x1n: Vec<_> = kinematics
Expand Down Expand Up @@ -350,9 +346,7 @@ fn ndarray_from_subgrid_orders_slice_many(

zero = false;

// TODO: here we assume that all X are consecutive starting from the second element and
// are in ascending order
for (i, &index) in indices.iter().skip(1).enumerate() {
for (i, &index) in indices.iter().skip(x_start).enumerate() {
x1_idx[i] = x1_indices[i][index];
}

Expand Down Expand Up @@ -483,6 +477,7 @@ pub(crate) fn evolve_slice_with_many(

sub_fk_tables.extend(tables.into_iter().map(|table| {
ImportSubgridV1::new(
// TODO: insert one more axis if initial frg scale unequals fac
PackedArray::from(table.insert_axis(Axis(0)).view()),
node_values.clone(),
)
Expand Down
41 changes: 27 additions & 14 deletions pineappl/src/grid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1390,8 +1390,21 @@ impl Grid {
channels,
pid_basis: infos[0].pid_basis,
convolutions: self.convolutions.clone(),
// TODO: the next line is probably wrong for flexible-scale grids
interps: self.interps.clone(),
kinematics: self.kinematics.clone(),
kinematics: iter::once(Kinematics::Scale(0))
.chain(if fac0 < 0.0 && frg0 < 0.0 {
Some(Kinematics::Scale(1))
} else {
None
})
.chain(
self.kinematics
.iter()
.filter(|kin| matches!(kin, Kinematics::X(_)))
.cloned(),
)
.collect(),
scales: Scales {
// FK-tables have their renormalization scales burnt in
ren: ScaleFuncForm::NoScale,
Expand Down Expand Up @@ -1552,7 +1565,7 @@ mod tests {
Conv::new(ConvType::UnpolPDF, 2212),
Conv::new(ConvType::UnpolPDF, 2212),
],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand Down Expand Up @@ -1581,7 +1594,7 @@ mod tests {
Conv::new(ConvType::UnpolPDF, 2212),
Conv::new(ConvType::UnpolPDF, 2212),
],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand All @@ -1605,7 +1618,7 @@ mod tests {
Conv::new(ConvType::UnpolPDF, 2212),
Conv::new(ConvType::UnpolPDF, 2212),
],
v0::default_interps(1),
v0::default_interps(false, 1),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand All @@ -1629,7 +1642,7 @@ mod tests {
Conv::new(ConvType::UnpolPDF, 2212),
Conv::new(ConvType::UnpolPDF, 2212),
],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand Down Expand Up @@ -1660,7 +1673,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand All @@ -1683,7 +1696,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand Down Expand Up @@ -1711,7 +1724,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand All @@ -1737,7 +1750,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand Down Expand Up @@ -1770,7 +1783,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand All @@ -1792,7 +1805,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand Down Expand Up @@ -1822,7 +1835,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand All @@ -1845,7 +1858,7 @@ mod tests {
],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand All @@ -1872,7 +1885,7 @@ mod tests {
vec![channel![1.0 * (21, 21)]],
PidBasis::Pdg,
vec![Conv::new(ConvType::UnpolPDF, 2212); 2],
v0::default_interps(2),
v0::default_interps(false, 2),
vec![Kinematics::Scale(0), Kinematics::X(0), Kinematics::X(1)],
Scales {
ren: ScaleFuncForm::Scale(0),
Expand Down
2 changes: 1 addition & 1 deletion pineappl/src/import_subgrid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ mod tests {
fn fill_packed_q1x2_subgrid_v1() {
let mut subgrid =
ImportSubgridV1::new(PackedArray::new(vec![0, 0, 0]), vec![Vec::new(); 3]);
subgrid.fill(&v0::default_interps(2), &[0.0; 3], 0.0);
subgrid.fill(&v0::default_interps(false, 2), &[0.0; 3], 0.0);
}

#[test]
Expand Down
6 changes: 3 additions & 3 deletions pineappl/src/interp_subgrid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ mod tests {

#[test]
fn fill_zero() {
let interps = v0::default_interps(2);
let interps = v0::default_interps(false, 2);
let mut subgrid = InterpSubgridV1::new(&interps);

subgrid.fill(&interps, &[1000.0, 0.5, 0.5], 0.0);
Expand All @@ -204,7 +204,7 @@ mod tests {

#[test]
fn fill_outside_range() {
let interps = v0::default_interps(2);
let interps = v0::default_interps(false, 2);
let mut subgrid = InterpSubgridV1::new(&interps);

subgrid.fill(&interps, &[1000.0, 1e-10, 0.5], 0.0);
Expand All @@ -225,7 +225,7 @@ mod tests {

#[test]
fn fill() {
let interps = v0::default_interps(2);
let interps = v0::default_interps(false, 2);
let mut subgrid = InterpSubgridV1::new(&interps);

subgrid.fill(&interps, &[1000.0, 0.5, 0.5], 1.0);
Expand Down
Loading

0 comments on commit a9b51a2

Please sign in to comment.