master sync#7
Open
PlaZMaD wants to merge 1079 commits into
Open
Conversation
Added ownership for UpstreamTaggerDetector.py.
Use ROOT's native TFile, TH1, and KolmogorovTest instead of uproot and scipy, removing the uproot dependency from the project.
updates: - [github.com/astral-sh/ruff-pre-commit: v0.15.8 → v0.15.9](astral-sh/ruff-pre-commit@v0.15.8...v0.15.9) - [github.com/pre-commit/mirrors-mypy: v1.19.1 → v1.20.0](pre-commit/mirrors-mypy@v1.19.1...v1.20.0)
- Add missing Rtypes.h include in ShipUnit.h - Add missing FairGeoMedium.h and FairLogger.h includes in ShipGeoUtil.h - Replace Fatal() with LOG(fatal) in ShipGeoUtil.h
Add .pyi stub files to enable static type checking with pyrefly and mypy for external libraries not shipped with type information. Configure pyproject.toml to use the stubs directory.
updates: - [github.com/astral-sh/ruff-pre-commit: v0.15.9 → v0.15.10](astral-sh/ruff-pre-commit@v0.15.9...v0.15.10) - [github.com/pre-commit/mirrors-clang-format: v22.1.2 → v22.1.3](pre-commit/mirrors-clang-format@v22.1.2...v22.1.3) - [github.com/pre-commit/mirrors-mypy: v1.20.0 → v1.20.1](pre-commit/mirrors-mypy@v1.20.0...v1.20.1) - [github.com/BlankSpruce/gersemi: 0.26.1 → 0.27.0](BlankSpruce/gersemi@0.26.1...0.27.0)
Replace remaining references to "warm_opt" and "New_HA_Design" with "TRY_2025", the only supported muon shield configuration since 26.03.
Use override instead of virtual, ClassDefOverride instead of ClassDef where appropriate, nullptr instead of 0, = default for trivial constructors, and add missing includes.
updates: - [github.com/astral-sh/ruff-pre-commit: v0.15.10 → v0.15.11](astral-sh/ruff-pre-commit@v0.15.10...v0.15.11)
…recognition SHiP now has a rectangular acceptance. Use straw tube aperture (200x300 cm) minus 5 cm margin instead of the obsolete ellipse (245x495 cm).
Replace hardcoded 195.0/295.0 with values computed from ShipGeo.strawtubes_geo.width/height minus an explicit margin, so future geometry config changes are respected.
The iterative vertex finder and precision fit extrapolate tracks from the tracker (Z~8400) backwards to the decay vertex. For upstream vertices (Z~3500-5500), this long backward RK propagation throws exceptions. Use stepwise plane extrapolation (500 cm steps) to avoid this. Recovers 68 additional HNL→µπ vertices, improving vertexing efficiency from 66% to 85% of reconstructible events.
pixi runs tasks through deno_task_shell, which has no control-flow constructs. The for/do/done loop was an unsupported reserved word, so pixi aborted at parse time before prek install ran and the git hooks were never installed. Replace the loop with two explicit sed calls.
The aliBuild/CVMFS builds took ~10 minutes of self-hosted runner time on every pull request. Legacy breakage is still caught within a day by the nightly run, and on every merge to master.
The sim chain writes sim_ci-test{,_rec,_ana}.root (--tag ci-test), but the
metrics config still listed the old ship.conical.Pythia8-TGeant4 names, so
extraction would have found nothing.
generate_pr_comment.py looks for 'No significant differences found', but compare_metrics.py printed 'No differences found', so a clean comparison was misclassified as having differences. Also strip the comparison_ prefix from the fallback config label.
Extract metrics per matrix configuration after the sim chain, store them in git notes (refs/notes/ci/physics-metrics/<config>) on master pushes, and compare PR results against the newest master reference, posting a sticky PR comment. Informational for now: no --fail-on-diff and not part of all-checks until the tolerances have soaked.
The metrics extraction, comparison, plot-rendering and PR-comment tools now come from the ship-ci-metrics conda package (extracted from these scripts); drop the in-repo copies and point the ci tasks at the ship-metrics-* CLIs.
The physics-metrics comparison flagged 3-7 sigma shifts on a PR that changed no physics code: ci-sim ran unseeded (time-based seed), so the reference and PR runs were independent event samples. Seed it so the comparison detects actual regressions instead of sampling noise.
TTPoint, TargetPoint, MTCDetPoint and SiliconTargetPoint each re-implemented the 'FairMCPoint + fPdgCode' pattern that SHiP::DetectorPoint already provides (as vetoPoint/strawtubesPoint/etc. already use). Inherit from SHiP::DetectorPoint instead, keeping a thin 8-arg forwarding constructor so the AddHit call sites, LinkDefs and IO tests are unchanged (eventID stays 0 as before), and preserving the detID-decoder helpers (GetLayer/GetLayerType, GetPlane/GetColumn/...). fPdgCode/PdgCode()/Print are now inherited. ClassDef versions are bumped; the classes gain the base's fLpos/fLmom (defaulted to the entrance pos/mom). Verified via the DataClassIO and RNtupleIO round-trip tests, which construct and read back all four classes.
…lookup - ShipMacros.cmake: copy the generated .pcm to its declared OUTPUT with a plain copy instead of copy_if_different. copy_if_different keeps the source mtime, so an unchanged pcm stayed older than a touched header and re-ran rootcling (and the dependent compile/link) on every build. - CMakeLists.txt: remove the duplicate include(GNUInstallDirs) and the find_path(FAIRBASE ...) branch that can never succeed (there is no in-tree base/steer); FairRoot is located solely via $FAIRROOTPATH.
- Containerfile: remove ~/.cache/rattler in the same RUN layer that pixi install populates it, so the package tarballs are not baked into the image - pixi.toml: add -n 4 to the ci-clang-tidy xargs so files are spread across parallel clang-tidy invocations instead of one giant call
- pixi-build.yml: inline the literal test matrix instead of a dedicated generate-matrix job (saves a runner spin-up and a needs edge); add ccache to the build job via ccache-action + CMAKE_CXX_COMPILER_LAUNCHER - doxygen-gh-pages.yml: join the gh-pages-deploy concurrency group used by the plot push jobs so a docs deploy cannot race a plot push
Match the sibling gh-pages-deploy locks in cleanup-plots.yml and pixi-build.yml, which both set cancel-in-progress: false, instead of relying on the implicit default.
The FAIRROOTPATH guard only rejected an undefined variable, letting an empty value through and producing broken module/check paths. Also, since FAIRROOTPATH is always set from a non-empty env var afterwards, the CheckSrcDir else branch was unreachable, so collapse it.
…on and gates for strawtubes object in the reconstruction flow
cm/m/mm (and kilogauss/tesla) were defined as mutable namespace-scope Double_t with external linkage in three separate shared libraries (veto, exitHadronAbsorber, ShipBellField) — an ODR/symbol-interposition hazard. Make them constexpr (internal linkage). Also drop the global-scope using ShipUnit::cm/m from the public UpstreamTagger.h header and qualify its in-header uses instead.
- ShipFieldMaker: gotField/getField used a linear TString::CompareTo scan over a std::map; use map::find (gotField is now getField(name) != nullptr) - ShipConstField: add a GetFieldValue override that performs the in-region test once, instead of the default path calling GetBx/GetBy/GetBz and repeating the six boundary comparisons three times (verified identical to the per-component getters)
- PyTr1Rng/PyTr3Rng owned their TRandom via a raw pointer with a defaulted destructor; hold it in std::unique_ptr instead - the generator never deleted fPythia (DPPythia8Generator does); delete it in the destructor
The inline comments listed different particles than the pdgnf/pdghq arrays actually configure (the non-flavour list omitted J/psi; the heavy-quark list still described rho/D mesons instead of the configured D0/Lambda/Lambda-bar).
- readDecayTable: raise ValueError instead of quit() for unconfigured channels (library code should not terminate the interpreter) - method_logger: fix the Python 2 'from StringIO import StringIO' doctest - pythia8darkphoton_conf: replace the two pasted make-particles-stable loops with pythia8_conf_utils.make_particles_stable, and close the debug-log ExitStack on the early-return paths that previously leaked the handle - SciFiMapping: fix the swapped SiPM/Fiber labels in mapping_validation (printed output only) - shipVertex: collapse the nine copy-pasted GetParameter stanzas into a loop
The mm length constant is never referenced and static analysis flags it as an unused const variable (clang-diagnostic-unused-const-variable), which breaks builds that treat warnings as errors.
In modern ROOT the rootcling-generated dictionary provides the class registration, so ClassImp only records cosmetic impl-file metadata. Every affected class already has a ClassDefOverride and a LinkDef dictionary entry, making ClassImp redundant. The four header-only point classes had .cxx files that existed solely to host ClassImp; delete them and move their headers to EXTRA_DICT_HEADERS so rootcling still generates their dictionaries.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.