Skip to content

master sync#7

Open
PlaZMaD wants to merge 1079 commits into
PlaZMaD:ecn3_optfrom
ShipSoft:master
Open

master sync#7
PlaZMaD wants to merge 1079 commits into
PlaZMaD:ecn3_optfrom
ShipSoft:master

Conversation

@PlaZMaD

@PlaZMaD PlaZMaD commented Jul 7, 2024

Copy link
Copy Markdown
Owner

No description provided.

olantwin and others added 30 commits March 31, 2026 12:28
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.
olantwin and others added 29 commits July 3, 2026 14:52
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.
@olantwin
olantwin deleted the master branch July 10, 2026 14:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants