From 659a6def5dc0539be95c2df5c59e983d9489a30f Mon Sep 17 00:00:00 2001 From: Jacob Zettlemoyer Date: Thu, 13 Aug 2026 17:32:59 +0000 Subject: [PATCH 1/9] Adding modifiers for SPINEOsc detector systematics for production --- .../mod_backward_scemap_260813.yaml | 25 +++++++++++++++++++ .../chargescale/mod_chargescale_260813.yaml | 21 ++++++++++++++++ .../mod_forward_scemap_260813.yaml | 25 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml create mode 100644 config/infer/sbnd/modifier/chargescale/mod_chargescale_260813.yaml create mode 100644 config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml diff --git a/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml b/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml new file mode 100644 index 0000000..8ac7f7c --- /dev/null +++ b/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml @@ -0,0 +1,25 @@ +# SBND backward SCE map variation +# Revision date: August 13, 2026 + +__meta__: + kind: mod + name: "backward_scemap" + version: "260813" + date: "2026-08-13" + description: "Apply backward SCE map variation" + applies_to: [mc] + compatible_with: + post: ">=240720" + +override: + model.network_input.meta: meta + + model.modules.chain.calibration: apply + model.modules.calibration: + stage: segmentation + field: + map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_SBND_E500_dualmap_voxelTH3.root + map_prefix: TrueBkwd_Displacement + map_suffixes: [_E, _W] + map_selection_axis: 0 + map_selection_boundaries: [0.0] \ No newline at end of file diff --git a/config/infer/sbnd/modifier/chargescale/mod_chargescale_260813.yaml b/config/infer/sbnd/modifier/chargescale/mod_chargescale_260813.yaml new file mode 100644 index 0000000..dc2a7dd --- /dev/null +++ b/config/infer/sbnd/modifier/chargescale/mod_chargescale_260813.yaml @@ -0,0 +1,21 @@ +#SBND Charge Scale Function Variation +#Revision Date: August 13, 2026 + +__meta__: + kind: mod + name: "chargescale" + version: "260813" + date: "2026-08-13" + description: "Charge Scale Function Variation" + applies_to: [mc] + compatible_with: + post: ">=240720" + +override: + model.network_input.meta: meta + + model.modules.chain.calibration: apply + model.modules.calibration: + stage: segmentation + response: + response_func: 1.00582*x - 0.0001188*x*x - 4.4164e-8*x*x*x + 1.04071e-11*x*x*x*x \ No newline at end of file diff --git a/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml b/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml new file mode 100644 index 0000000..2e17f5f --- /dev/null +++ b/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml @@ -0,0 +1,25 @@ +# SBND forward SCE map variation +# Revision date: August 13, 2026 + +__meta__: + kind: mod + name: "forward_scemap" + version: "260813" + date: "2026-08-13" + description: "Apply forward SCE map variation" + applies_to: [mc] + compatible_with: + post: ">=240720" + +override: + model.network_input.meta: meta + + model.modules.chain.calibration: apply + model.modules.calibration: + stage: segmentation + field: + map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_SBND_E500_dualmap_voxelTH3.root + map_prefix: TrueFwd_Displacement + map_suffixes: [_E, _W] + map_selection_axis: 0 + map_selection_boundaries: [0.0] \ No newline at end of file From 92c811a0c1580b25e12270581fadc77523453e72 Mon Sep 17 00:00:00 2001 From: Jacob Zettlemoyer Date: Thu, 13 Aug 2026 17:43:24 +0000 Subject: [PATCH 2/9] Adding ICARUS SCE configs --- .../mod_backward_scemap_260813.yaml | 20 +++++++++++++++++++ .../mod_forward_scemap_260813.yaml | 20 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml create mode 100644 config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml diff --git a/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml b/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml new file mode 100644 index 0000000..c76190d --- /dev/null +++ b/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml @@ -0,0 +1,20 @@ +# ICARUS 0x SCE detector variation modifier +# Revision date: August 13, 2026 + +__meta__: + kind: mod + name: "backward_scemap" + version: "260813" + date: "2026-08-13" + description: "Backward SCE map variation" + applies_to: [mc] + compatible_with: + model: ">=250303" + +override: + model.network_input.meta: meta + + model.modules.calibration.field: + priority: 10 + map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_ICARUS_E500_voxelTH3.root + map_prefix: TrueBkwd_Displacement \ No newline at end of file diff --git a/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml b/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml new file mode 100644 index 0000000..5ed5c3e --- /dev/null +++ b/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml @@ -0,0 +1,20 @@ +# ICARUS 2x SCE detector variation modifier +# Revision date: August 13, 2026 + +__meta__: + kind: mod + name: "forward_scemap" + version: "260813" + date: "2026-08-13" + description: "Forward SCE map variation" + applies_to: [mc] + compatible_with: + model: ">=250303" + +override: + model.network_input.meta: meta + + model.modules.calibration.field: + priority: 10 + map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_ICARUS_E500_voxelTH3.root + map_prefix: TrueFwd_Displacement \ No newline at end of file From 9cf180fea599958b092072663bd0b29bfd19a4fa Mon Sep 17 00:00:00 2001 From: Jacob Zettlemoyer Date: Thu, 13 Aug 2026 18:08:32 +0000 Subject: [PATCH 3/9] Removing fixed paths from SCE map files --- .../modifier/backward_scemap/mod_backward_scemap_260813.yaml | 2 +- .../modifier/forward_scemap/mod_forward_scemap_260813.yaml | 2 +- .../modifier/backward_scemap/mod_backward_scemap_260813.yaml | 2 +- .../sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml b/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml index c76190d..891b883 100644 --- a/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml +++ b/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml @@ -16,5 +16,5 @@ override: model.modules.calibration.field: priority: 10 - map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_ICARUS_E500_voxelTH3.root + map_file: $ICARUS_DATA_DIR/v10_06_06/icarus_data/SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root map_prefix: TrueBkwd_Displacement \ No newline at end of file diff --git a/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml b/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml index 5ed5c3e..000c5c0 100644 --- a/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml +++ b/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml @@ -16,5 +16,5 @@ override: model.modules.calibration.field: priority: 10 - map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_ICARUS_E500_voxelTH3.root + map_file: $ICARUS_DATA_DIR/v10_06_06/icarus_data/SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root map_prefix: TrueFwd_Displacement \ No newline at end of file diff --git a/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml b/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml index 8ac7f7c..f88a2f2 100644 --- a/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml +++ b/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml @@ -18,7 +18,7 @@ override: model.modules.calibration: stage: segmentation field: - map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_SBND_E500_dualmap_voxelTH3.root + map_file: $SBND_DATA/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root map_prefix: TrueBkwd_Displacement map_suffixes: [_E, _W] map_selection_axis: 0 diff --git a/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml b/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml index 2e17f5f..a13a280 100644 --- a/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml +++ b/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml @@ -18,7 +18,7 @@ override: model.modules.calibration: stage: segmentation field: - map_file: /lus/eagle/projects/neutrinoGPU/jzettle/databases/SCE/SCEoffsets_SBND_E500_dualmap_voxelTH3.root + map_file: $SBND_DATA/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root map_prefix: TrueFwd_Displacement map_suffixes: [_E, _W] map_selection_axis: 0 From 0c3c0990b9ac01c91d6b80e4d6a907ad2899cbea Mon Sep 17 00:00:00 2001 From: Jacob Zettlemoyer Date: Thu, 13 Aug 2026 18:11:36 +0000 Subject: [PATCH 4/9] Forgot the last DIR in SBND_DATA_DIR, adding --- .../modifier/backward_scemap/mod_backward_scemap_260813.yaml | 2 +- .../sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml b/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml index f88a2f2..ab85ff8 100644 --- a/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml +++ b/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml @@ -18,7 +18,7 @@ override: model.modules.calibration: stage: segmentation field: - map_file: $SBND_DATA/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root + map_file: $SBND_DATA_DIR/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root map_prefix: TrueBkwd_Displacement map_suffixes: [_E, _W] map_selection_axis: 0 diff --git a/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml b/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml index a13a280..ee441de 100644 --- a/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml +++ b/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml @@ -18,7 +18,7 @@ override: model.modules.calibration: stage: segmentation field: - map_file: $SBND_DATA/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root + map_file: $SBND_DATA_DIR/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root map_prefix: TrueFwd_Displacement map_suffixes: [_E, _W] map_selection_axis: 0 From db390a9278a1d124762c54287fbe083320bdefa3 Mon Sep 17 00:00:00 2001 From: Francois Drielsma Date: Thu, 13 Aug 2026 12:00:37 -0700 Subject: [PATCH 5/9] Refine detector variation modifiers --- .../mod_sce_backward_260813.yaml} | 14 +++++++------- .../mod_sce_forward_260813.yaml} | 14 +++++++------- .../mod_charge_scale_260813.yaml} | 16 +++++++++------- .../mod_sce_backward_260813.yaml} | 13 ++++++++----- .../mod_sce_forward_260813.yaml} | 13 ++++++++----- 5 files changed, 39 insertions(+), 31 deletions(-) rename config/infer/icarus/modifier/{forward_scemap/mod_forward_scemap_260813.yaml => sce_backward/mod_sce_backward_260813.yaml} (56%) rename config/infer/icarus/modifier/{backward_scemap/mod_backward_scemap_260813.yaml => sce_forward/mod_sce_forward_260813.yaml} (56%) rename config/infer/sbnd/modifier/{chargescale/mod_chargescale_260813.yaml => charge_scale/mod_charge_scale_260813.yaml} (53%) rename config/infer/sbnd/modifier/{backward_scemap/mod_backward_scemap_260813.yaml => sce_backward/mod_sce_backward_260813.yaml} (67%) rename config/infer/sbnd/modifier/{forward_scemap/mod_forward_scemap_260813.yaml => sce_forward/mod_sce_forward_260813.yaml} (67%) diff --git a/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml b/config/infer/icarus/modifier/sce_backward/mod_sce_backward_260813.yaml similarity index 56% rename from config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml rename to config/infer/icarus/modifier/sce_backward/mod_sce_backward_260813.yaml index 000c5c0..6609420 100644 --- a/config/infer/icarus/modifier/forward_scemap/mod_forward_scemap_260813.yaml +++ b/config/infer/icarus/modifier/sce_backward/mod_sce_backward_260813.yaml @@ -1,20 +1,20 @@ -# ICARUS 2x SCE detector variation modifier +# ICARUS backward SCE detector variation modifier # Revision date: August 13, 2026 __meta__: kind: mod - name: "forward_scemap" + name: "sce_backward" version: "260813" date: "2026-08-13" - description: "Forward SCE map variation" + description: "Backward SCE detector variation" applies_to: [mc] compatible_with: model: ">=250303" - -override: - model.network_input.meta: meta + conflicts_with: [sce_forward] +override: + # Apply the displacement before charge calibrations. model.modules.calibration.field: priority: 10 map_file: $ICARUS_DATA_DIR/v10_06_06/icarus_data/SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root - map_prefix: TrueFwd_Displacement \ No newline at end of file + map_prefix: TrueBkwd_Displacement diff --git a/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml b/config/infer/icarus/modifier/sce_forward/mod_sce_forward_260813.yaml similarity index 56% rename from config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml rename to config/infer/icarus/modifier/sce_forward/mod_sce_forward_260813.yaml index 891b883..7e68ce9 100644 --- a/config/infer/icarus/modifier/backward_scemap/mod_backward_scemap_260813.yaml +++ b/config/infer/icarus/modifier/sce_forward/mod_sce_forward_260813.yaml @@ -1,20 +1,20 @@ -# ICARUS 0x SCE detector variation modifier +# ICARUS forward SCE detector variation modifier # Revision date: August 13, 2026 __meta__: kind: mod - name: "backward_scemap" + name: "sce_forward" version: "260813" date: "2026-08-13" - description: "Backward SCE map variation" + description: "Forward SCE detector variation" applies_to: [mc] compatible_with: model: ">=250303" - -override: - model.network_input.meta: meta + conflicts_with: [sce_backward] +override: + # Apply the displacement before charge calibrations. model.modules.calibration.field: priority: 10 map_file: $ICARUS_DATA_DIR/v10_06_06/icarus_data/SCEoffsets/SCEoffsets_ICARUS_E500_voxelTH3.root - map_prefix: TrueBkwd_Displacement \ No newline at end of file + map_prefix: TrueFwd_Displacement diff --git a/config/infer/sbnd/modifier/chargescale/mod_chargescale_260813.yaml b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml similarity index 53% rename from config/infer/sbnd/modifier/chargescale/mod_chargescale_260813.yaml rename to config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml index dc2a7dd..33cb13e 100644 --- a/config/infer/sbnd/modifier/chargescale/mod_chargescale_260813.yaml +++ b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml @@ -1,21 +1,23 @@ -#SBND Charge Scale Function Variation -#Revision Date: August 13, 2026 +# SBND charge-scale detector variation +# Revision date: August 13, 2026 __meta__: kind: mod - name: "chargescale" + name: "charge_scale" version: "260813" date: "2026-08-13" - description: "Charge Scale Function Variation" + description: "Charge-scale detector variation" applies_to: [mc] compatible_with: - post: ">=240720" + model: "<260501" override: model.network_input.meta: meta - + model.modules.chain.calibration: apply model.modules.calibration: stage: segmentation response: - response_func: 1.00582*x - 0.0001188*x*x - 4.4164e-8*x*x*x + 1.04071e-11*x*x*x*x \ No newline at end of file + # Apply the response variation before charge calibrations. + priority: 10 + response_func: 1.00582*x - 0.0001188*x*x - 4.4164e-8*x*x*x + 1.04071e-11*x*x*x*x diff --git a/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml b/config/infer/sbnd/modifier/sce_backward/mod_sce_backward_260813.yaml similarity index 67% rename from config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml rename to config/infer/sbnd/modifier/sce_backward/mod_sce_backward_260813.yaml index ab85ff8..30bdfb3 100644 --- a/config/infer/sbnd/modifier/backward_scemap/mod_backward_scemap_260813.yaml +++ b/config/infer/sbnd/modifier/sce_backward/mod_sce_backward_260813.yaml @@ -3,23 +3,26 @@ __meta__: kind: mod - name: "backward_scemap" + name: "sce_backward" version: "260813" date: "2026-08-13" - description: "Apply backward SCE map variation" + description: "Backward SCE detector variation" applies_to: [mc] compatible_with: - post: ">=240720" + model: "<260501" + conflicts_with: [sce_forward] override: model.network_input.meta: meta - + model.modules.chain.calibration: apply model.modules.calibration: stage: segmentation field: + # Apply the displacement before charge calibrations. + priority: 10 map_file: $SBND_DATA_DIR/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root map_prefix: TrueBkwd_Displacement map_suffixes: [_E, _W] map_selection_axis: 0 - map_selection_boundaries: [0.0] \ No newline at end of file + map_selection_boundaries: [0.0] diff --git a/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml b/config/infer/sbnd/modifier/sce_forward/mod_sce_forward_260813.yaml similarity index 67% rename from config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml rename to config/infer/sbnd/modifier/sce_forward/mod_sce_forward_260813.yaml index ee441de..24a25db 100644 --- a/config/infer/sbnd/modifier/forward_scemap/mod_forward_scemap_260813.yaml +++ b/config/infer/sbnd/modifier/sce_forward/mod_sce_forward_260813.yaml @@ -3,23 +3,26 @@ __meta__: kind: mod - name: "forward_scemap" + name: "sce_forward" version: "260813" date: "2026-08-13" - description: "Apply forward SCE map variation" + description: "Forward SCE detector variation" applies_to: [mc] compatible_with: - post: ">=240720" + model: "<260501" + conflicts_with: [sce_backward] override: model.network_input.meta: meta - + model.modules.chain.calibration: apply model.modules.calibration: stage: segmentation field: + # Apply the displacement before charge calibrations. + priority: 10 map_file: $SBND_DATA_DIR/v01_42_00/SCEoffsets/SCEoffsets_SBND_E500_dualmap_voxelTH3.root map_prefix: TrueFwd_Displacement map_suffixes: [_E, _W] map_selection_axis: 0 - map_selection_boundaries: [0.0] \ No newline at end of file + map_selection_boundaries: [0.0] From f8f4c89632181427914bb601217fc77c920207b9 Mon Sep 17 00:00:00 2001 From: Jacob Zettlemoyer Date: Sat, 15 Aug 2026 16:27:53 +0000 Subject: [PATCH 6/9] Updated charge scale response parameters and introducing smearing function --- .../charge_scale/mod_charge_scale_260813.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml index 33cb13e..5f60b61 100644 --- a/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml +++ b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml @@ -20,4 +20,13 @@ override: response: # Apply the response variation before charge calibrations. priority: 10 - response_func: 1.00582*x - 0.0001188*x*x - 4.4164e-8*x*x*x + 1.04071e-11*x*x*x*x + response_func: 0.9894425*x + 7.6032e-7*x*x - 2.552e-7*x*x*x + 6.74704e-11*x*x*x*x + smearing: + # Apply the smearing after the response function + priority: 9 + distribution: normal + mode: multiplicative + mean: 1.0 + scale: 0.0511 + + post.apply_calibrations.depositions_source: depositions \ No newline at end of file From 8ef72c39c433735daf849eb600ac72fd36c357a1 Mon Sep 17 00:00:00 2001 From: Jacob Zettlemoyer Date: Sat, 15 Aug 2026 17:00:06 +0000 Subject: [PATCH 7/9] Placeholder ICARUS charge scale modifier --- .../charge_scale/mod_charge_scale_260813.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml diff --git a/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml b/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml new file mode 100644 index 0000000..7d93603 --- /dev/null +++ b/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml @@ -0,0 +1,35 @@ +# ICARUS charge-scale detector variation +# Revision date: August 13, 2026 + +__meta__: + kind: mod + name: "charge_scale" + version: "260813" + date: "2026-08-13" + description: "Charge-scale detector variation" + applies_to: [mc] + +override: + model.network_input.meta: meta + + model.modules.calibration: + stage: segmentation + response: + response_func: 1.04*x - 0.000599*x*x + 2.08372e-7*x*x*x - 1.7506e-11*x*x*x*x + smearing: + # Apply the smearing after the response function + distribution: normal + mode: multiplicative + mean: 1.0 + scale: 0.0511 + gain: + gain: 79.9169 # e-/ADC + recombination: + model: mbox + efield: 0.4938 # kV/cm + mip_dedx: 2.105168 # MeV/cm + lifetime: + lifetime_db: $ICARUS_DATA_DIR/v10_06_03/icarus_data/database/tpc_elifetime_data.db + driftv_db: $ICARUS_DATA_DIR/v10_06_03/icarus_data/database/tpc_edriftvelocity_data.db + transparency: + transparency_db: $ICARUS_DATA_DIR/v10_06_03/icarus_data/database/tpc_yz_correction_data.db From fe311878890b09397369f540005e88d3a3d62b19 Mon Sep 17 00:00:00 2001 From: Jacob Zettlemoyer Date: Sat, 15 Aug 2026 22:12:18 +0000 Subject: [PATCH 8/9] Updating ICARUS and SBND charge scale function parameters --- .../icarus/modifier/charge_scale/mod_charge_scale_260813.yaml | 4 ++-- .../sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml b/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml index 7d93603..0b4ac4b 100644 --- a/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml +++ b/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml @@ -15,13 +15,13 @@ override: model.modules.calibration: stage: segmentation response: - response_func: 1.04*x - 0.000599*x*x + 2.08372e-7*x*x*x - 1.7506e-11*x*x*x*x + response_func: 1.0279*x - 0.000287*x*x + 2.4915e-7*x*x*x - 4.522989e-11*x*x*x*x smearing: # Apply the smearing after the response function distribution: normal mode: multiplicative mean: 1.0 - scale: 0.0511 + scale: 0.14953 gain: gain: 79.9169 # e-/ADC recombination: diff --git a/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml index ac5f3bd..9d6d318 100644 --- a/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml +++ b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml @@ -27,6 +27,6 @@ override: distribution: normal mode: multiplicative mean: 1.0 - scale: 0.0511 + scale: 0.0 post.apply_calibrations.depositions_source: depositions From 014f8ffe3630719889d7dc859f819b8e5f7f18aa Mon Sep 17 00:00:00 2001 From: Francois Drielsma Date: Sat, 15 Aug 2026 15:26:40 -0700 Subject: [PATCH 9/9] Refine charge-scale calibration modifiers --- .../charge_scale/mod_charge_scale_260813.yaml | 38 +++++------- .../charge_scale/mod_charge_scale_260813.yaml | 2 +- tests/test_config_validation.py | 61 +++++++++++++++++++ 3 files changed, 76 insertions(+), 25 deletions(-) diff --git a/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml b/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml index 0b4ac4b..bd79adb 100644 --- a/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml +++ b/config/infer/icarus/modifier/charge_scale/mod_charge_scale_260813.yaml @@ -8,28 +8,18 @@ __meta__: date: "2026-08-13" description: "Charge-scale detector variation" applies_to: [mc] - -override: - model.network_input.meta: meta + compatible_with: + model: ">=250303" - model.modules.calibration: - stage: segmentation - response: - response_func: 1.0279*x - 0.000287*x*x + 2.4915e-7*x*x*x - 4.522989e-11*x*x*x*x - smearing: - # Apply the smearing after the response function - distribution: normal - mode: multiplicative - mean: 1.0 - scale: 0.14953 - gain: - gain: 79.9169 # e-/ADC - recombination: - model: mbox - efield: 0.4938 # kV/cm - mip_dedx: 2.105168 # MeV/cm - lifetime: - lifetime_db: $ICARUS_DATA_DIR/v10_06_03/icarus_data/database/tpc_elifetime_data.db - driftv_db: $ICARUS_DATA_DIR/v10_06_03/icarus_data/database/tpc_edriftvelocity_data.db - transparency: - transparency_db: $ICARUS_DATA_DIR/v10_06_03/icarus_data/database/tpc_yz_correction_data.db +override: + model.modules.calibration.response: + # Apply the response variation before charge calibrations. + priority: 10 + response_func: 1.0279*x - 0.000287*x*x + 2.4915e-7*x*x*x - 4.522989e-11*x*x*x*x + model.modules.calibration.smearing: + # Apply the smearing after the response function + priority: 9 + distribution: normal + mode: multiplicative + mean: 1.0 + scale: 0.14953 diff --git a/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml index ac5f3bd..5531419 100644 --- a/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml +++ b/config/infer/sbnd/modifier/charge_scale/mod_charge_scale_260813.yaml @@ -28,5 +28,5 @@ override: mode: multiplicative mean: 1.0 scale: 0.0511 - + post.apply_calibrations.depositions_source: depositions diff --git a/tests/test_config_validation.py b/tests/test_config_validation.py index 0c4b513..39b1aff 100644 --- a/tests/test_config_validation.py +++ b/tests/test_config_validation.py @@ -393,3 +393,64 @@ def test_sbnd_charge_scale_continues_from_varied_depositions( assert ( config["post"]["apply_calibrations"]["depositions_source"] == "depositions" ) + + def test_icarus_charge_scale_only_adds_response_and_smearing( + self, config_infer_root, tmp_path + ): + """The ICARUS variation preserves calibration supplied by the base model.""" + icarus_root = config_infer_root / "icarus" + modifier = ( + icarus_root / "modifier" / "charge_scale" / "mod_charge_scale_260813.yaml" + ) + modifier_config = yaml.safe_load(modifier.read_text(encoding="utf-8")) + assert modifier_config["__meta__"]["compatible_with"] == {"model": ">=250303"} + assert set(modifier_config["override"]) == { + "model.modules.calibration.response", + "model.modules.calibration.smearing", + } + + composite = tmp_path / "composite.yaml" + composite.write_text( + yaml.safe_dump( + { + "include": [ + str(icarus_root / "full_chain_co_260501.yaml"), + str(modifier), + ] + } + ), + encoding="utf-8", + ) + config = load_config_with_includes(composite) + calibration = config["model"]["modules"]["calibration"] + assert calibration["stage"] == "segmentation" + assert calibration["gain"]["gain"] == 79.9169 + assert "recombination" in calibration + assert "lifetime" in calibration + assert "transparency" in calibration + assert calibration["response"]["priority"] == 10 + assert calibration["smearing"]["priority"] == 9 + + def test_icarus_charge_scale_accepts_first_in_chain_calibration( + self, config_infer_root, tmp_path + ): + """The first ICARUS model with in-chain calibration supports the modifier.""" + icarus_root = config_infer_root / "icarus" + modifier = ( + icarus_root / "modifier" / "charge_scale" / "mod_charge_scale_260813.yaml" + ) + composite = tmp_path / "composite.yaml" + composite.write_text( + yaml.safe_dump( + { + "include": [ + str(icarus_root / "full_chain_co_250303.yaml"), + str(modifier), + ] + } + ), + encoding="utf-8", + ) + + config = load_config_with_includes(composite) + assert "response" in config["model"]["modules"]["calibration"]