Skip to content

Commit 3775166

Browse files
Address cases of μF collapse with exactly two convolutions
1 parent bf2e907 commit 3775166

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

pineappl/src/convolutions.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,12 @@ impl ConvType {
319319
pub const fn is_pdf(&self) -> bool {
320320
matches!(self, Self::UnpolPDF | Self::PolPDF)
321321
}
322+
323+
/// TODO
324+
#[must_use]
325+
pub const fn is_ff(&self) -> bool {
326+
matches!(self, Self::UnpolFF | Self::PolFF)
327+
}
322328
}
323329

324330
/// Data type that indentifies different types of convolutions.

pineappl/src/grid.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,16 +1529,24 @@ impl Grid {
15291529
let new_channel_pids: Vec<_> = new_channel_map.keys().cloned().collect();
15301530

15311531
let conv_to_fix = &self.convolutions[conv_idx];
1532-
let (new_orders, order_map) = if conv_to_fix.conv_type().is_pdf() {
1533-
(self.orders.clone(), (0..self.orders.len()).collect())
1534-
} else {
1532+
let (new_orders, order_map) = {
15351533
let mut unique_orders = Vec::new();
1534+
let other_conv_idx = 1 - conv_idx;
1535+
15361536
let map: Vec<usize> = self
15371537
.orders
15381538
.iter()
15391539
.map(|o| {
15401540
let mut new_o = o.clone();
1541-
new_o.logxia = 0;
1541+
1542+
if conv_to_fix.conv_type().is_ff() {
1543+
new_o.logxia = 0;
1544+
} else if self.convolutions.len() == 2
1545+
&& self.convolutions[other_conv_idx].conv_type().is_ff()
1546+
{
1547+
new_o.logxif = 0;
1548+
}
1549+
15421550
unique_orders
15431551
.iter()
15441552
.position(|uo| uo == &new_o)

0 commit comments

Comments
 (0)