Prepare Run3_2024, Run3_2025 and Run3_2026 (shared MC + weight_base_cmb) - #300
Conversation
|
pipeline#15528718 started |
|
pipeline#15528718 failed |
# Conflicts: # docs/ci/integration-pipeline.md
|
pipeline#15534437 started |
|
pipeline#15535232 started |
|
pipeline#15534437 failed |
|
pipeline#15535232 failed |
|
pipeline#15535595 started |
There was a problem hiding this comment.
Pull request overview
This PR enables the Run3_2024, Run3_2025 and Run3_2026 eras in FLAF. Because there is no dedicated 2025/2026 MC campaign, all three years reuse the Summer24 NanoAOD, but since jet/PU/tau corrections differ, AnaTuple production runs once per era. It introduces a shared-MC residue split (a 17:17:4 target over modulus 38, matching the recorded luminosities) so each production can store both weight_base (full-sample denominator, single-year) and weight_base_cmb (in-era denominator, for a combined run). It also adds a memory-bounded histogram-batching path for HistFromNtupleProducerTask, a reuse_mc_from_era mechanism in Setup.py, and supporting docs/tests.
Changes:
- Add shared-MC infrastructure:
Common/shared_mc.py,denominator_cmbcomputation inanaTupleProducer.py, cache merging inMergeAnaTuples.py, andreuse_mc_from_era/shared_mcinheritance inSetup.py. - Enable
Run3_2024/2025/2026end-to-end:Periodenum +HHbTagScoresmaps, new/updated era configs and dataset exceptions, and CI era lists. - Add
hist_from_ntuple_max_histsbatching (Analysis/histFromNtupleBatch.py) plus unit tests for batching and the residue split.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
Common/shared_mc.py |
New residue-split helpers (Python + C++ expr) with range validation. |
AnaProd/anaTupleProducer.py |
Computes denominator_cmb for shared-MC eras via in-era filter. |
AnaProd/MergeAnaTuples.py |
Refactors cache combining into _combine_denominator_map, handles denominator_cmb. |
Common/Setup.py |
Guards empty config; copies MC datasets and shared_mc from reuse_mc_from_era. |
Analysis/histFromNtupleBatch.py |
New histogram-budget batching logic. |
Analysis/HistProducerFromNTuple.py / Analysis/tasks.py |
Wire up --max-hists batching; scope global cache producers; robust uncs_to_exclude lookup. |
include/AnalysisTools.h / include/HHbTagScores.h |
Add Run3_2026 enumerator and HHbTag maps. |
| `config/Run3_2024 | 2025 |
config/dataset_exceptions.yaml |
Extends exceptions for 2026 and new 2024 samples. |
.github/workflows/*.yaml |
Add Run3_2026 to consistency/cross-section checks. |
docs/** |
Documents eras, shared-MC weights, batching, and new-era steps. |
test/test_shared_mc.py, test/test_histtuple_weight_base_branch.py, test/test_hist_from_ntuple_batch.py |
Unit tests for the split and batching. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
pipeline#15535595 passed |
Summary
Enable
Run3_2024,Run3_2025andRun3_2026in FLAF. There is no dedicated 2025 or 2026 MC campaign: all three years use Summer24 NanoAOD, but jet/PU/tau corrections differ, so AnaTuple production runs once per era.Each production stores:
weight_base— all events, this year's luminosity (single-year runs)weight_base_cmb— in-era residue split for a combined 2024+2025+2026 runshared_mclives onRun3_2024only (modulus 38, 17:17:4 target matching recorded lumis).Run3_2025andRun3_2026setreuse_mc_from_era: Run3_2024so Setup copies the 2024 MC list and theshared_mcsplit.Other changes
normCacheProduceruncs_to_excludemissing an era key defaults to[]HistFromNtupleProducerTaskbatches booked histograms when the count (including Up/Down) exceedshist_from_ntuple_max_histsPeriod::Run3_2026and HHbTag mapsshared_mcand histogram batchingTesting
GitLab integration pipeline 15535595 passed for all three analyses and all Run 3 eras (
--test 1000, TestModel).