Skip to content

ColliderBit: CBS standalone, analysis naming migration, Run-2 analysis wave, Rivet 4.1/Contur 3.0 - #608

Open
Pengxuan-Zhu-Phys wants to merge 642 commits into
masterfrom
ColliderBit_solo_development
Open

ColliderBit: CBS standalone, analysis naming migration, Run-2 analysis wave, Rivet 4.1/Contur 3.0#608
Pengxuan-Zhu-Phys wants to merge 642 commits into
masterfrom
ColliderBit_solo_development

Conversation

@Pengxuan-Zhu-Phys

@Pengxuan-Zhu-Phys Pengxuan-Zhu-Phys commented Jun 19, 2026

Copy link
Copy Markdown

Headline numbers: 328 files changed, +313k/−14.9k lines — of which ~266k added lines
are data assets (two ATLAS pyhf background JSONs, MET-significance resolution tables,
a vendored nlohmann::json header); the code change is ~+47.6k/−14.9k.
Registered analyses grow from 100 to 135 names.

Breaking changes
Analysis names: 72 analyses renamed; the legacy names are gone from
AnalysisContainer.cpp, so existing user YAML files must be updated. The shipped
yaml_files/*.yaml are already migrated. Mapping table: doc/analysis_rename_map.md
(also in each .info as OldName:).
Rivet/Contur: support for Rivet 3.1.5 / Contur 2.1.1 is replaced by
Rivet 4.1.0 / Contur 3.0.0 (frontends, BOSS configs and patches renamed/regenerated;
CI now installs pathos joblib for Contur 3).
HEPUtils (contrib/heputils): Event gains named variable-R jet collections
(vrjets(key), add_vrjet, …) alongside the existing named jet collections; analyses
and event converters use them when the run YAML declares VRJet_collections.
FastJet: ColliderBit now builds against FastJet 3.5.1 + fjcontrib 1.101 under
contrib/ (with an object library for Nsubjettiness); the old fjcore fallback is
removed (jet clustering always requires the full FastJet contrib build), and
deprecated FastJet API usages in Py8EventConversions were fixed.
No physics behaviour of existing, unrenamed analyses is intentionally changed except
where listed under "Bug fixes".

1. ColliderBit Solo (CBS)

CBS_Documentation.md

2. Analysis naming migration

rename-map.md

3. New and rewritten analyses

Brand-new implementations (no predecessor in master):

Analysis Notes
ATLAS_EXOT_2016_013 large-R jets, histograms
ATLAS_EXOT_2016_014 large-R jets
ATLAS_EXOT_2016_017 jet reclustering
ATLAS_EXOT_2019_04 large-R + variable-R jets, histogram-backed SRs
ATLAS_EXOT_2019_07 large-R + variable-R jets
ATLAS_EXOT_2021_35 large-R jets, histograms
ATLAS_SUSY_2012_10, ATLAS_SUSY_2018_07, ATLAS_SUSY_2018_12_RJR Run-1/Run-2 gap fills
CMS_EXO_12_048, CMS_SUS_13_006, CMS_SUS_20_003 Run-1/Run-2 gap fills
Baselines, Dummy validation / no-op utility analyses

Major rewrites carried over from legacy names (selection):
ATLAS_SUSY_2018_05(+_RJR) (2L+jets EW, object-based MET significance, FullLikes JSON),
ATLAS_SUSY_2018_16 (soft 2L, FullLikes), ATLAS_SUSY_2018_30 (3b, ONNX NN),
ATLAS_SUSY_2019_02 (2L0J EW, BDT), ATLAS_SUSY_2018_41, ATLAS_SUSY_2019_09,
ATLAS_SUSY_2019_18, ATLAS_SUSY_2019_22, ATLAS_SUSY_2020_16, ATLAS_CONF_2019_008
(chargino, FullLikes JSON), CMS_SUS_16_039, CMS_SUS_18_004, CMS_SUS_19_010,
CMS_SUS_20_001, CMS_SUS_20_004, CMS_SUS_21_002(+_OLD), CMS_SUS_21_009.

Many analyses register multiple variants (inclusive/binned/per-channel), hence
135 registered names from 91 source files.

4. Backends, build system, support code

  • Rivet 4.1.0 + Contur 3.0.0: new frontends and regenerated BOSS wrappers
    (Backends/include/gambit/Backends/backend_types/Rivet_4_1_0/, patches, BOSS config);
    Pythia 8.312 wrapper/patch refresh; ATLAS_FullLikes frontend updates;
    new config/gambit_backend_interfaces.yaml.
  • FastJet 3.5.1 + fjcontrib 1.101: built under contrib/ with rpath wiring
    (cmake/contrib.cmake) and Nsubjettiness compiled as an object library. Built once
    and shared with the Rivet 4 backend via fastjet_DIR; the old fjcore fallback is gone,
    so ColliderBit always links the full FastJet + contrib toolset.
  • Standalone/CBS build (cmake/utilities.cmake, executables.cmake, standalones.cmake):
    standalone functor generation (standalone_facilitator.py), LDFLAGS normalisation to
    silence duplicate-library warnings, and CBS target registration.
  • Vendored support code: Utils/json.hpp (single-header nlohmann/json, MIT) drives CBS
    output and batch merge; Utils/util_functions adds small helpers.
  • DecayBit: refactored off-shell-W chargino width integration, used by the new
    MSSMEW Run-2 scan configs (yaml_files/SUSYRun2_MSSMEW*.yaml).
  • .gitignore: CBS artefacts, contrib fastjet/fjcontrib, BOSS castxml, and the
    generated functors_for_CBS.cpp.

FastJet_Code_Changes.md

6. Variable-R Jet implementation.

VariableR_Jet_Changes.md

7. Histogram support based on SignalRegion class.

Histogram_SR_Design.md

Thank you for such massive merge PR request.

Pengxuan-Zhu-Phys and others added 30 commits January 16, 2025 15:32
Pengxuan-Zhu-Phys and others added 3 commits August 20, 2026 21:24
Add public cbs and cbs-llvm presets that configure a Release CBS build
in GAMBIT's default build/ directory. Optional CBS features (MPI, ROOT,
RestFrames, ONNX, Rivet/Contur) are requested by default and skipped
when their prerequisites are missing. Ordinary cmake .. is unchanged,
including FastJet 3.4.2 for non-preset ColliderBit builds.
  - Reimplements a fix in the SUSY Run 2 branch, along with some other small improvements.
  - many analyses have lots of unused variable warnings, so these should be addressed.
@ChrisJChang
ChrisJChang self-requested a review August 20, 2026 14:51

@ChrisJChang ChrisJChang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am now able to build both gambit and CBS. My next step will be going more carefully through all the different lines of code. I left one requested change comment. This is not something too serious, just resolving undefined variable warnings in ColliderBit analyses.

Comment thread ColliderBit/src/analyses/Analysis_ATLAS_SUSY_2018_07.cpp Outdated
Pengxuan-Zhu-Phys and others added 9 commits August 21, 2026 02:02
Scan ColliderBit/src/analyses/*.info at runtime instead of a hardcoded
catalogue. Copy YAML fields into strings immediately; yaml-cpp 0.6.2
Node assignment merges documents, so sorting stored nodes mixed
metadata across analyses.

CBS -h/-l skip RestFrames' load-time banner and the uninitialised
logger dump. RestFrames is patched at configure/link time to honour
RESTFRAMES_QUIET.
Emit Mach-O linker options as single -Wl, tokens in MacOSX.cmake so
AppleClang and LLVM clang both accept them and rivet-build cannot
split them. Drop CBS_RIVET_USE_LLVM_LINKER_DRIVER.

Build FastJet 3.5.1, fjcontrib 1.101, and Contur 3.0.0 for ordinary
GAMBIT cmake .. as well as CBS, matching the Contur_3_0_0 frontend.
Strip OpenMP from YODA's private libtool flags on AppleClang.
Drop the unused fjcore include branches from ATLAS EXOT/SUSY analyses
that already require FastJet tools. Do not compile the fjcore object
library when ColliderBit builds full FastJet.
METSignificance includes HEPUtils::Jet and must not be declared when
ColliderBit is off. Drop the leftover FastJet 3.4.2 include from the
Rivet 4.1.0 BOSS config so CastXML matches the 3.5.1 contrib build.
@ChrisJChang

Copy link
Copy Markdown
Collaborator

Your latest changes have made CBS now require boost filesystem. This is not a problem, we do this for GUM to. We will just need to remember or document this somewhere so we can mention it in the paper for what the requirements are for CBS.

@Pengxuan-Zhu-Phys

Copy link
Copy Markdown
Author

Your latest changes have made CBS now require boost filesystem. This is not a problem, we do this for GUM to. We will just need to remember or document this somewhere so we can mention it in the paper for what the requirements are for CBS.

Thanks, the standalone 'boost.system' is removed in Boost 1.9. So I remove it.

@ChrisJChang ChrisJChang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still Reviewing, but leaving another "requested change" to discuss what we want to do wrt the CBS preset stuff.

Comment thread cmake/presets/CBSCompilerDiscovery.cmake Outdated
Comment thread cmake/presets/CBSCompilerDiscovery.cmake Outdated
Comment thread cmake/presets/CBSRootDiscovery.cmake Outdated
Comment thread cmake/backends.cmake Outdated
Comment thread cmake/CBSValidation.cmake Outdated
Comment thread cmake/contrib.cmake
@@ -287,27 +425,207 @@ if(NOT EXCLUDE_YODA)
else()
set(YODA_CONFIG_LDFLAGS "")
endif()
if(GAMBIT_MACOS_HOMEBREW_LLVM_OPENMP)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few times through this PR, I have seen changes specifically for LLVM. Can you remember what some of the issues you had were? I'm unaware of what they are.

@ChrisJChang ChrisJChang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've left a few more comments. The main one is the I would love some more commenting on your CBS code (I flagged some particular files). This will help me understand it greatly when doing this review.

I moved the mvautils code to the contrib folder, and added its LICENSE file.

}

const std::string yaml_filename = yaml_file.string();
const pid_t pid = fork();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like you do your batch mode with fork(). This will work well on local machines, but is likely to cause problems on batch HPC systems (messing with job accounting). Do we think we want CBS to be running on HPC systems in batch mode? If so, then it might be worth thinking about whether we can move to another system.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Documentation: This files needs many more comments (e.. at the start of functions/structs) to briefly explain what they do.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as solo_batch.cpp. I feel like this needs more commenting to aid understanding.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as solo_batch.cpp: This needs more commenting to aid understanding.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as solo_batch.cpp: Needs more commenting to aid understanding.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this file be named wrappertopness.h, not warppertopness.h?


// Renamed from:
// Analysis_ATLAS_8TeV_1LEPbb_20invfb
// :D unrenamed, can not find original exp report

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is probably not necessary. Eventually people will forget that they were ever renamed, and it might be confusing.

Comment thread .gitignore
GAMBIT.tex

# Pengxuan related files and folders
P.Zhu/*

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably should remove the gitignore entries specifically for files that exist on your machine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backends Relates to GAMBIT interaction with external codes. ColliderBit

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants