Releases: ShipSoft/FairShip
Release list
26.06
Added
- Add experimental script to import Muons and Matter pkl files
- Add
TTreeGeneratorto read events from ROOT TTrees (including the converted M&M ntuples) - Add
--ttreeoption torun_simScript.pyfor ROOT TTree input - Add
--target_compositionoption tomakeDecay, defaulting to Tungsten and mirroring themakeCascade.pyflag - Add
--validationflag torun_simScript.pyandShipReco.pythat prints generator, output, pattern-recognition, and fit counters - Add
--remote-inputflag torun_simScript.pyfor directroot://…input without local download - Add
--reproduciblemode and explicit, reusable run IDs inrun_simScript.py/run_fixedTarget.py, with consistent metadata written into output headers - Add pixi environment (
pixi.toml) and pixi-based CI build workflow as the new primary build path - Add CI sim-chain tasks driven by pixi
- Add CI workflow to build and publish pixi-based container images on release
- Add REUSE compliance badge to README
- Add pixi installation instructions to README
Changed
- Change A scaling in makeDecay
- Rewrite README to be pixi-first
- Derive project version from git tags via
git describeinstead of hardcoded0.0.0 - Migrate CI to shared
ShipSoft/.githubreusable workflows
Fixed
- Validate
-Achoice for--DarkPhotonruns; previously silently misconfigured (#1166) - Always allocate
validation_statsdict and fixGetHitIDtypo inshipDigiReco - Harden generator input handling: fail-fast on missing files, trees, branches, and out-of-range start events, and switch to
TFile::Openfor remote-input compatibility - Prevent MuonBack post-processing double-free of output
TFileat interpreter shutdown (#1226) - Null-init
MuonBackGeneratorpointers and drop deadCloseFilepath - Keep
BranchListTObjStringsalive under ROOT 6.40 PyROOT ownership changes - Load
libEGPythia6inshipRoot_conf - Remove unnecessary
libG4clheploads - Chain
Initializethrough immediate parent inexitHadronAbsorber - Address real bugs surfaced by
pyreflystatic type-checking - Remove throwing static initializers
- Initialise variables before conditional branches
- Replace
atof/atoiwithstd::stod/std::stoifor proper error handling - Replace floating-point loop counters with integers
- Use
size_tforShipMuonShieldcorner-index loop - Use
git rev-parseinretrieveGitTagsfor Python 3 compatibility - Correct DOI badge link in README
- Fix help-message text in
makeDecay
Removed
- Drop unused HepMC dependency
- Retire aliBuild-driven
build-run.yml; replaced bypixi-build.yml
New Contributors
- @kholoimov made their first contribution in #1165
Full Changelog: 26.05...26.06
26.05
Added
- Added ParticleGunGenerator #1183
- Add time window event overlay script (
macro/make_time_window.py) for constructing realistic pileup from MC truth events - Add
SetStartTandGetEventIDaccessors toShipMCTrack - Add beam smearing and painting support to
DPPythia8Generator
Changed
- Update default spectrometer field map to 2025 MgB2 map (
2025_02_12_SHiP_SpectrometerField_ECN3_MgB2.root) - Replace incorrectly oriented spectrometer field maps with corrected versions (2026_05_07)
Fixed
- Import EGPythia6 library from basiclibs in makeMuonDIS
- Remove deprecated attribute syntax in the GST TTree copy within GENIE run_simScript option
- Keep FixedTargetGenerator retrying if Pythia fails to generate an event, until a max number of retries is reached
- Recompute the two-track DOCA at the chi^2-optimal vertex (
HNLPosFit) instead of the iterative geometric one. The geometric DOCA was evaluated with tangent-line linearisations at the geometric iteration's converged z and overestimated the line-to-line distance wherever Migrad shifted the vertex; re-extrapolating the genfit states the small residual dz toHNLPosFit.Z()recovers a substantial fraction of signal at the standard DOCA preselection cut on HNL signal MC. - Anchor
Chamber1.zto the decay vessel geometry so the HNL minimum decay length and the muon-DIS start position track the upstream end of the decay vessel; the legacy formula ingeometry_config.pyleft both ~1.8 m too far downstream after the March 2025 coordinate-system change, reducing HNL generation acceptance by about 3.6 % of the decay vessel volume. - Work around ROOT 6.40 GIL bug that crashes on
TH1::Fit()warnings by guarding withGetEntries() > 0 - Prevent double-delete segfaults with ROOT 6.40 PyROOT ownership changes by transferring ownership to C++ for objects managed by FairRoot, genfit, and Geant4
- Guard meson-production chain export for proton-bremsstrahlung mode in
DPPythia8Generator, fixing duplicated dark photon and spurious Pythia system entry - Support both old (2018) and new MuonBack production files by detecting
PlaneHAPointbranch and setting correct z-offset (#1181) - Guard vertex fit against unconverged Migrad and failed HESSE to prevent unreliable vertex positions
- Restore chi2 assignment in vertex fit TMinuit callback (
f.valueinstead of local rebind) - Keep ROOT streamers (
+LinkDef flag) forMTCDetectorandstrawtubes, needed for dynamic downcasting viarun.GetListOfModules() - Remove unused ROOT streamers from other detector classes
- Check if
inputfileis a list or single string inrun_simScript.py - Show full path format in
--field_maphelp text - Make sumw cache unique per file and fail fast on unknown Point class in time window overlay script
Removed
- Remove duplicate
makeMuonDIS.pyfrommuonShieldOptimization/(canonical version is inmuonDIS/) - Remove incorrectly oriented field maps added in 26.04
New Contributors
- @constanzaval made their first contribution in #1154
Full Changelog: 26.04...26.05
26.04
Added
- Add angular acceptance cut in HNL and DP generators to skip events outside the decay vessel
- Add FileSummary to run_fixedTarget.py to save all the options for reference (#1140)
- Add new 2026_04_01_SHiP_MainSpectrometerField_V13.root fieldmap
- Add GenFit unbiased hit residuals and pulls to tracking benchmark
- Add type stubs for ROOT, XRootD, acts, and genfit
- Add CI workflow to publish plots to GitHub Pages and embed in PR comments
Changed
- Make artificial retina the baseline option for pattern recognition
nrOfRetries()in HNL and DP generators now counts only production failures; geometric acceptance rejections are tracked separately vianrOfGeoRejections()- Read vessel end dimensions from veto YAML config instead of hardcoding in
geometry_config.py - Replace uproot with PyROOT in compare_histograms
Fixed
- Fix vertex finding for upstream vertices by using stepwise extrapolation
- Derive track fit seed from pattern recognition and first hit position instead of hard-coded coordinate (#763)
- Replace obsolete elliptical acceptance cut with rectangular acceptance in track pattern recognition
- Fix CI build warnings: add missing
overridespecifiers, fixPrint()andInit()virtual hiding, remove unusedFairShipFieldsLinkDef entry - Remove no-effect statements (unused object creation, bare index accesses) from Python scripts
- Determine track charge from pattern recognition slope bending and fit both charge hypotheses
- Skip inconsistent track hypothesis after fit
- Improve track fitting loop robustness and add convergence check
- Replace
from ROOT importwith namespace-qualified access - Update references to removed muon shield configurations
Removed
- Remove fake pattern recognition fallback
Full Changelog: 26.03...26.04
26.03
Added
- Tracking performance benchmark for straw tube spectrometer (
python/tracking_benchmark.py,macro/run_tracking_benchmark.py): measures efficiency, clone rate, ghost rate, and momentum/position/angular resolution using particle gun events with template matching pattern recognition - Add Findgenfit2.cmake module to support both upstream GenFit and the fork
- New warm MS option TRY_2025 (Stellatryon v.2) and its field map
- Add GENIE configs for Pythia8 instead of Pythia6 (#1054)
- Add
SHiP::DetectorPointbase class with EventID for all detector points (#1059, #1075) - Add file glob and
nEvents=-1support torun_simScript.pyinput files (#1041) - Store coordinates of MTC hits (#1026)
Changed
- Implement
SHiP::Detectorbase class; veto detector now uses doubles (#1079) - Migrate SND detectors (MTCDetector, SiliconTarget, Target, TargetTracker) and exitHadronAbsorber to
SHiP::Detectorbase class - Rename
ShipHittoSHiP::DetectorHitand clean up subclass hierarchy - Extract duplicated
InitMediumintoShipGeo::InitMediumfree function - Make
SHiP::Generatorbase class for all generators (#1047); changeconst char*tooptional<string>(#1053) - Input file reading uses TChain;
run_simScript.pyaccepts list of files (#1027) - Make MTC scintillating tile size configurable; change default field (-1.2 T to -1.7 T) and tile size (1 cm to 5 cm) (#1091)
- Remove setting of FairMC links (#1109)
- Change passive SiliconTarget material from tungstenalloySND to pure tungsten
- Change naming convention for simulation files to
{sim,geo,params}_{uuid4}.root, with optional--tagparameter - Change ShipMuonShield to accept new magnet configuration: no fixed number of magnets and variable z-gap between them
- Disable magnetic field in the MS and remove field map upload in
run_fixedTarget.py - Update
run_fixedTargetto save tracks for hits in post-target sensitive plane - Change function SND in
shipDet_conf.py - UseGeneralProcess only set to false when cross-sections need changing
makeGenieEvents: automatically set GXMLPATH to genie_config folder; remove--nudetoption- Only get evtNo in ShipStack if there are tracks (#1051)
- Turn warning to debug in MuonBackGenerator (#1036)
- Bump minimum ROOT to 6.36, CMake to 3.20, C++ standard to C++20
- Remove outdated dependency version gates for Pythia8 < 8.300, ROOT < 6.32, and old Geant4VMC
- Modernise C++: use C++20 features (
map::contains,ranges, structured bindings),std::span, nullptr, override,= delete - Expand ruff lint rules and fix Python code quality issues; replace bare
except:with specific exception types
Fixed
- Fix pattern recognition producing far fewer tracks than expected after geometry change from 2 planes to 1 plane per view (#580)
- Fix
StrawDecodePython indexing: change return type fromstd::tupletostd::arrayso cppyy mapsoperator[]to__getitem__ - Fix EventDisplay "Branch not found" errors for MC point branches after
std::vectormigration (#1126) - Fix EventDisplay errors for nonexistent MC point branches (#900)
- Fix EventDisplay initialisation order for FairRunAna/FairEventManager
- Fix EventDisplay handling of reco files using native
AddFriend - Fix GenFit 02-03-00 compatibility: replace removed
genfit::BellFieldwithShipBellField; explicitly parse genfit2 headers for 26.03 stack - Fix generator Python bindings by removing
//!directives from public method declarations - Fix
MuonBackGeneratoroff-by-one at last event; gracefully stop viagMC->StopRun()instead of FairRoot'sexit(0) - Fix
MuonBackGeneratorto support both TClonesArray and std::vector input formats - Fix duplicate
SHiP::Detector<vetoPoint>rootmap entry warning - Fix TStreamerInfo warnings for
SHiP::Detectorinstantiations, generators, and ISTLPointContainer - Fix uninitialised
fDetPointspointer inSHiP::Detectorbase class - Fix NaN mass/energy for photons in ShipMCTrack due to floating-point rounding (#384)
- Move TimeDetHit v_drift and par[] to static constexpr, saving 40 bytes per serialised hit (#685)
- Fix digitisation crash when optional detector branches are missing (#738)
- Fix splitcalHit dropping MC point arrival time in digitisation (#925)
- Fix argparse -f/subparser conflict in run_simScript.py (#1044)
- Fix duplicated events in digitisation output (#1028)
- Fix file-filtering logic to support STL branches
- Fix
SetPhiRandomtoSetPhiRandomizein run_simScript.py - Clamp random seed to PYTHIA8's maximum allowed value (900000000)
- Set correct trackIDs for exitHadronAbsorber class
- Disable multi-threading explicitly, as it is not supported in FairShip
- Fix pickle serialisation file modes in ShipGeoConfig (text to binary)
- Fix type annotations for physics quantities from int to float
- Fix null dereferences in ShipFieldMaker, FairShipFields, and FixedTargetGenerator
- Fix uninitialised members in vetoHit, strawtubesHit, ShipMuonShield; change flag from Float_t to Bool_t
- Fix off-by-one in FixedTargetGenerator target node access
- Fix
errorSummary/reportErrorlogging issues in rootUtils - Fix closure variable binding bug in event display toggle callbacks
- Fix unclosed file handles in readDecayTable, pythia8_conf, and pythia8darkphoton_conf
- Fix mutable default arguments in
rootUtils.readHists()andgeomGeant4.printWeightsandFields()
Removed
- Remove g4Ex scripts
- Remove old (CDR) target configuration; Jun25 is now the only supported target
- Remove unused ShipStyle, run_simEcal.py, and flux_map.py
- Remove unused functions and dead code from rootUtils
- Remove unused rootUtils imports from
dumpEvent.pyandextractMuonsAndUpdateWeight.py - Remove TDirectory pythonisation backport (now provided by ROOT >= 6.32)
- Remove unused legacy ShipGeo.py and create_field_perturbation.py
- Remove SND@LHC leftover code from event display (#900)
- New_HA_Design and warm_opt muon shield configurations no longer supported
Full Changelog: 25.12...26.03
25.12
Added
Physics and Simulation
- Add EvtGenDecayer for decaying J/psi (and other particles in future) when specifying the --EvtGenDecayer option
- Corrections in MuonDIS simulation
The DIS interactions are now time-shifted to be consistent with the original incoming muon. Additionally, tracks from soft interactions of the original muon along with the muon's veto response are preserved (in muonDis.root) and included up to the DIS interaction point. To be noted that the muon veto points are manually added using add_muonresponse.py, which modifies the simulation file. This replaces the old method of "backward-travelling muon" to generate the incoming muon's veto response. All MuonDIS simulation scripts have been updated and consolidated within FairShip/muonDIS, ensuring consistency for new productions. - Added a custom CrossSection branch to the simulation file to save the DIS cross sections from muonDIS.
- Unified beam smearing implementation across all generators
- Updated
HNLPythia8Generatorto use consistent Gaussian beam smearing and circular beam painting, replacing the previous uniform square implementation - Added beam smearing and painting support to
FixedTargetGenerator - All generators (
MuonBackGenerator,HNLPythia8Generator,FixedTargetGenerator) now use the same beam smearing algorithm: Gaussian smearing with--SmearBeamparameter and uniform circular painting with--PaintRadiusparameter - The
--SmearBeamand--PaintBeamcommand-line options inrun_simScript.pynow apply to all generators, not just muon background simulation - Implemented shared
BeamSmearingUtilsutility using modern C++17 features (std::pair return and structured bindings) to eliminate code duplication
- Updated
- Big update of genie generation scripts
macro/makeGenieEvents.pyandpython/genie_interface.py:- Universal choice of neutrino flavor to simulate
- Handy way to enable/disable charm and tau decays of the products
- Rewriting the code with modern pythonic style preserving backward compatibility
- Adding new keys specifically for genie regime in
macro/run_simScript.pyand copyinggstTTree from the genie input file to the output file of themacro/run_simScript.py:- Adjust the z range where to simulate the neutrino interactions via
--z_start_nuand--z_end_nukeys - Replacing the
--Geniekey withGenieas a subparser - Copying
gstTTree is similar tosndsw
- Adjust the z range where to simulate the neutrino interactions via
- Add support for Pythia 8.3xx. 8.2xx is still supported via preprocessor macros for the time being.
- Support using TPythia6 provided by ROOTEGPythia6 for ROOT ≥ 6.32
SND Detector System
- Folder
SNDis added for new versions of SND integrated to the Muon Shield - First version of
MTC(SND/MTC) is introduced. Scint part is fully implemented, the Sci-Fi part is implemented in simplified version. Geometrical parameters ofMTCare stored ingeometry/MTC_config.yamlfile - Added fibre structure for MTC and digitization. Fibre <-> SiPM mapping is done in
SND/MTC/MTCDetector.cxx, can be extracted and tested inpython/SciFiMapping.py, that is subsequently used inpython/shipDigiReco.py - Add visualization methods to SciFiMapping.py to visualize Sci-Fi in MTC, including draw_channel(), draw_channel_XY(), and draw_combined_scifi_views()
- First version of SND/SiliconTarget, this layout for this iteration consists of 120 3.5mm W planes with pairs of silicon planes placed 1mm from the surface of the tungsten. As a temporary solution, the detector is placed within the second last magnet of the muon shield. Configuration of detector in simScript is coupled to the SND_design == 2 along with the MTC.
- SND/EmulsionTarget folder, with the Target and TargetTracker classes from nutaudet
- New key for
macro/run_simScript.pyfor choosing SND options is added:--SND_design - Support for multiple SND designs in simulation setup
- The
--SND_designoption inmacro/run_simScript.pynow accepts multiple values and an 'all' option to enable all available SND designs. - The geometry configuration and detector setup (
geometry/geometry_config.py,python/shipDet_conf.py) have been updated to instantiate all requested SND detectors. - This enables running with multiple SND subdetectors simultaneously and is future-proof for additional SND designs.
- The
- Added the hole for SND in the Muon Shield, that is created automatically if SND key is enabled (works so far for SND_design == 2)
Geometry and Target Station
- Add June 2025 target configuration
- Geometry: Make the tungsten target the default (Jun25 config)
- Definition of Pressured Helium for the target, two version 200 Celsius degree and 90 Celsius degree.
- Implement vacuum in target facility
- Implement target helium vessel
- Enclose target in steel (316L) cylinder
- Add option for an additional sensitive plane around the target in run_fixedTarget
- Implement proximity shielding design from 26/06/2025 by G. Humphreys
- Added new warm muon shield
warm_optin geometry_config - Added new parameters to muon shield to support configurations from current optimisation campaign
- Geometry_config.py: Added MS design
New_HA_Designbased on the MSwarm_optwith new version of HA - Add (optional) MgB2 field map
Data Classes and I/O
- Data classes now support ROOT RNtuple I/O
All FairShip data classes (Hits, Points, Tracks, Particles) have been refactored for ROOT RNtuple compatibility. Changes include: public copy constructors, const-correct getter methods, replacement of TVector3 storage with std::array, and complete refactoring of ShipParticle to remove TParticle inheritance. Comprehensive RNtuple I/O tests verify all 20 data classes can be written to and read from RNtuple format. - Add RNtuple conversion and inspection utilities (
macro/convertTreeToRNTuple.py,macro/inspect_tree_branches.py) for testing and validation. Note that FairRoot I/O currently uses TClonesArray which is not supported by RNtuple. - Add EventId and TrackID for MCTrack and HAPoint #944
- Add ISTLPointContainer interface for STL-based detector track index updating
Introduces ISTLPointContainer interface enabling polymorphic track index updating for detectors using std::vector storage. ShipStack now automatically detects and handles both STL-based and TClonesArray-based detectors, ensuring MC points maintain correct track references after track filtering. Also adds missing parameterised constructors to simpleTarget and exitHadronAbsorber.
Tools and Utilities
- Add dedicated --print-fields and --check-overlaps flags to run_simScript.py to use these debug tools.
- Add experimental script to compare histograms
- Add experimental script to check overlaps quickly
- Add CI job to run fixed target simulation (run_fixedTarget.py)
- Added event_inspector class to experimental analysis_toolkit to streamline usage of helper functions; Added dump_event() as a start.
- ShipBFieldMap: Added LOG info and fatal
- Add backport for new TFile/TDirectory
__get_item__pythonisation
Detector Improvements
- Add access to decoded numbers (stations, views etc.) of strawtubes hits
- Add enough straws to cover aperture entirely
- Add SST frame option (4 = aluminium, 10 = steel [default])
- Add z-offset to FixedTargetGenerator
- Add missing --FixedTarget option to run_simScript.py
Reconstruction
- Added initial implementation for ACTS based track reconstruction. This iteration includes independent tracking geometries for SiliconTarget, MTC, and Strawtubes.
Changed
Data Structure Modernization
- Migrate detector MC point storage from TClonesArray to std::vector
Ten detector classes now usestd::vector<PointType>instead ofTClonesArrayfor storing MC simulation points. This modernises the codebase with standard C++ containers, improves type safety, and leveragesFairRootManager::RegisterAny()for ROOT I/O. Affected detectors: TimeDet, UpstreamTagger, strawtubes, splitcal, veto, Target, TargetTracker, SiliconTarget, MTCDetector, and simpleTarget. - Migrate ShipStack MC track storage from TClonesArray to std::vector
ShipStack now usesstd::vector<ShipMCTrack>instead ofTClonesArrayfor storing MC tracks written to output. This completes the migration of MC data storage to modern C++ containers and enablesRegisterAny()for MCTrack I/O. Includes bounds checking in ShipAna.py for all MCTrack vector accesses to handle the stricter indexing behaviour of std::vector compared to TClonesArray. - Migrate Tracklet container in shipDigiReco from TClonesArray to std::vector
- Complete migration from TClonesArrays to STL vectors for all detectors (timeDetector, muonDetector, vetoHitOnTrack, strawtubes, splitcal)
- Modernise data classes by removing obsolete BOOST serialisation (Tracklet, vetoHitOnTrack, ShipHit, TrackInfo)
- Replace BOOST serialisation with native ROOT 6 serialisation
- Modernise Tracklet constructor to accept
std::vector<unsigned int>indices - Update vetoHitOnTrack to use parameterised constructor in Python code
- Add const correctness to TrackInfo accessor methods
- Update Python code in shipDigiReco.py to use modern constructors
- Bump ClassDef versions to 2 for schema evolution
- Add TrackInfo to RNTuple I/O test suite
Physics and Simulation
- Change GEANT4 Physics list from QGSP_BERT_HP_PEN to FTFP_BERT_HP_EMZ following GEANT4 team recommendation and studies by Hanae Tilquin presented at Nov. 2025 collaboration meeting and following software meetings.
- J/psi are no longer decayed using Geant4 when using the --EvtGenDecayer option
Target Station Geometry
- Target station geometry updated with nested volume approach
Implemented tantalum cladding (1.5mm) around tungsten target layers using nested volumes instead of s...
25.01
Added
- New analysis toolkit prototype added as part of the 'experimental' package.
- Simple analysis example script now available in 'examples/'
Fixed
- Use ConstructedAt + std::swap to replace removed pythonization for TCA
- Octant symmetry was incorrect for B_z when using field maps (reported and fixed by M. Ferro-Luzzi)
- Tof calculation corrected in GenieGenerator.cxx, wrong units previously used.
- Genfit measurements now give the correct detector ID
- Fix TEvePointSetPrintOut
- Event Display: Fix drawing of MC and Geo tracks
Changed
-
Changed the dimension of the cave (ref. https://indico.cern.ch/event/1507466/contributions/6345273/attachments/3003438/5293503/Quick%20Update%20on%20FAIRSHIP%20geometry-1.pdf):
- Updated dimensions of TCC8 and ECN3.
- Added a step in ECN3.
- Removed the coat of the absorber.
- Modified the dimensions of the HA and absorber.
-
Set Decay Volume Medium as helium (previously vacuums),can be explicitly switched to vacuum with --vacuums.
-
Medium of SST boxes will be the same as DecayVolumeMedium (previously, always vacuum)
-
Don't prune tracks (before we were using the CFL option to Track::prune, see https://github.com/GenFit/GenFit/blob/e81adeb07c8643301a1d9f7ae25048557cc72dff/core/include/Track.h#L298)
-
EventCalc LLP event generator
This modification to the EventCalc interface accommodates for generic N-body LLP decays.
Removed
- Remove Millepede
- Remove outdated example shipEvent_ex.py
- Remove ALPACA generator
New Contributors
- @eduard322 made their first contribution in #556
- @Gfrisella made their first contribution in #592
Full Changelog: 24.11...25.01
24.11
Release after first round of breaking changes. Requires CVMFS release ≥ 24.10.
Tagged for launch of background simulations.
Added
- EventCalc LLP event generator
This modification introduces a first implementation of the EventCalc decay
event sampler in FairShip for inclusive final states. For further details,
consult the dedicated presentation at the 30th SHiP CM
here. See also #528. - Add a conversion script
FairShip/macro/convertEvtCalc.pyto convert the
EventCalc output sampled kinematics (.dat) as input to the simulation script
(.root). Remark: This will eventually become unnecessary when this
conversion is implemented within the EventCalc tool itself.
Fixed
- Fix missing includes in ecalMatch and ecalReco
- Fix compilation warnings due to unused or uninitiliazed variables #481
Changed
- shipStrawTracking: Move to argparse
- CMake: Use external genfit2
- shipStrawTracking, shipDigiReco, shipVertex: Make compatible with current genfit
Removed
- Remove obsolete renaming scripts
- Remove online, please see charmdet and muflux branches for respective versions
- Remove charmdet, please see charmdet branch for latest version
- Remove preshower and CaloDesign 1 (TP+Preshower)
- Remove bundled genfit
- Remove conditions DB, will almost certainly look different, copy in git
history for reference
Full Changelog: 24.10...24.11
24.10 - Freiburg
Tag release to prepare for breaking changes. Last release to include charm
cross-section measurement code, and obsolete detector configurations.
Added
- Add option for helium-filled decay volume
- Add pre-commit config: This will be phased in to improve code quality and
spot issues as early as possible. Status visible in README and CI enabled for
new pull requests. - Add CHANGELOG.md
- Add
.git-blame-ignore-revsto allow automatic reformatting etc. without
polluting git blame - Automatically built documentation using Doxygen
- Add CODEOWNERS file to automatically trigger reviews by the relevant experts
- Add different configuration files for vacuum /helium for the Decay Vessel
- Add option to enable/disable SND
Fixed
- Remove trailing whitespace and fix line endings
- Fix compilation warnings due to deprecations #469
- Fix issue with SST parameters #489
- Cleaned up Veto Implementation
- Fix crash of event display, PID when no entrance lid present
- Close ShipReco.py output file
- Remove unused (silently ignored!) argument for MuDISGenerator::SetPositions
Changed
- Update getGeoInformation command line interface
- Update SST geometry constants #483
- Housekeeping: Use same clang-format and clang-tidy config as FairRoot
- Decay Vessel configuration now imported from a yaml file
- Geometry of Decay Vessel updated to new design
- Housekeeping: Bump minimum CMake version to 3.12
- Housekeeping: Use FairRoot's
find_package2to find ROOT, VMC, fmt - Housekeeping: Bump minimum ROOT version to 6.26
- Housekeeping: Use find_package to find BOOST
- Housekeeping: Set FairLogger dep instead of manual includes
Removed
- Remove obsolete files related to old ways of installing or testing FairShip
- Remove uses of future and past modules #473
- Remove Geant3 dependency
- Remove unimplemented event display functions (see #497)
- Disable SND by default
- Housekeeping: Don't use CMake commands no longer provided by FairRoot 19
- Housekeeping: Remove old CMake for ROOT 5
- Remove old, outdated tracking script
Pull requests predating CHANGELOG
- Fix missing branchlist for MuonBack generator by @olantwin in #441
- fixing overlap/extrusions in volMuFilter by @antonioiuliano2 in #442
- Update number of Target Tracker tstations by @antonioiuliano2 in #443
- Add header include guard to ShipGlobals.h by @olantwin in #444
- Use consistent size variables for wall container volumes by @antonioiuliano2 in #445
- README: Add link to cvmfs_release and specify correct default by @olantwin in #447
- eventDisplay: No need to commit suicide if you can disown by @olantwin in #450
- create_field_perturbation: no argument group needed by @olantwin in #449
- Bump pymongo from 3.10.1 to 4.6.3 in /conditionsDatabase by @dependabot in #451
New Contributors
- @yabezsh made their first contribution in #463
- @egamberini made their first contribution in #469
- @wcmartylee made their first contribution in #483
- @anupama-reghunath made their first contribution in #468
- @lfpc made their first contribution in #511
Full Changelog: ECN3_2023...24.10
ECN3 2023
ECN3 geometry with 2023 updates, ready for new background productions for the proposal.
What's Changed
- SND Geometry for Muon Magnetic Spectrometer studies in SHiP by @antonioiuliano2 in #421
- Update Dockerfile for new shipdist by @olantwin in #410
- Reducing transverse size magnetic spectrometer by @antonioiuliano2 in #425
- Fix out of date shebang by @olantwin in #426
- Fix typos in shipVertex error messages. by @olantwin in #427
- Change of magnetic field and SND wall numbers in geometry options by @antonioiuliano2 in #432
- Remove obsolete code by @olantwin in #27
- Update README and add TOC by @olantwin in #434
- Remove unused variable by @olantwin in #440
- ECN3 v2023 by @olantwin in #420
Full Changelog: ECN3_2022...ECN3_2023
ECN3 2022
Final ECN3 2022 version. Tagging so that we can work towards 2023 release.
Release notes (automatically generated by GitHub) very long since we haven't tagged a release in a few years.
What's Changed
- B fields using the VMC interface by @jback08 in #49
- Small changes to support lxplus7 by @olantwin in #52
- Implement the new beam smearing scheme by @olantwin in #47
- Fix issues in travis build by @olantwin in #53
- Give non-zero exit code if run_simScript doesn't get expected arguments by @olantwin in #57
- Allow field maps to work as local B fields in volumes. by @jback08 in #55
- Comment clang-format 5 option by @olantwin in #58
- Random seed support by @sashabaranov in #60
- Add script to generate hit maps to FairShip. by @olantwin in #61
- Update readme and some cosmetic changes by @olantwin in #62
- Fix code blocks by @olantwin in #63
- Fix new code blocks by @olantwin in #64
- Add ShipRpcPoint to flux_map.py by @olantwin in #65
- Separate liquid and plastic SBT by @olantwin in #67
- Remove superfluous UVTs by @olantwin in #66
- Track Pattern Recognition by @hushchyn-mikhail in #37
- Remove out-dates setup script by @olantwin in #68
- Timing Detector class is introduced by @korzenev in #69
- Use named temporary file for event display file by @olantwin in #70
- Fix getopt options by @olantwin in #71
- Set TimeDet dimensions from the geometry config by @olantwin in #72
- Fix phi randomisation (discovered by Tatiana) by @olantwin in #73
- [WiP] Upstream new muon shield by @olantwin in #74
- Fix interpolation of gaps for the split magnet by @olantwin in #34
- Give fastMuon default value by @olantwin in #76
- Fix filenames in README by @olantwin in #75
- Use floating-point precision for field maps. by @jback08 in #77
- Add QCD ffbar to Dark Photon production by @amagnan in #79
- Straighten coil gaps to simplify shapes by @olantwin in #78
- Add elastic interactions by @marteff in #80
- Fixing overlapping of detectorIDs by @antonioiuliano2 in #82
- Typo in GenieGenerator.cxx by @antonioiuliano2 in #83
- Adjustable material frames around views for 2018 strawtubes geometry by @DaniilSu in #84
- Fixing overlap with pillars in nudet muon detector by @antonioiuliano2 in #86
- Correct relative floor height definition by @olantwin in #88
- Fix for backward compatibility issue by @DaniilSu in #85
- Fixing relative position of the two nutaudet components by @antonioiuliano2 in #89
- Bug fixes for using VMC B fields. by @jback08 in #90
- strip structure in splitcal geometry and reconstruction by @simoniel in #91
- Add Dockerfile (for Skygrid, Condor & continuous integration) by @olantwin in #92
- FairShip changes to make things easier for muflux and charm by @evanherwijnen in #93
- Latest muflux changes by @evanherwijnen in #94
- Add field definition functions to ShipFieldMaker by @jback08 in #95
- Update shielding and hadron absorber by @olantwin in #99
- Fix missing header import by @olantwin in #100
- Fix issues with new shielding by @olantwin in #101
- Fix final overlap by @olantwin in #102
- [WiP] Update flux_map for new MuonBack weights by @olantwin in #104
- Fixing bug in ProcessHits, pointed by Thomas by @antonioiuliano2 in #105
- Place tShield in origin of SHiP coordinate frame explicitly by @olantwin in #106
- Updating emulsion structure by @antonioiuliano2 in #107
- Fix bug and refactor getGeoinfo macro by @shir994 in #108
- Fixing total y dim computation by @antonioiuliano2 in #109
- Add changes for muon flux measurement and its online software by @olantwin in #110
- Fix missing change T3<->T4 by @olantwin in #111
- Fix detector ID parsing for T3 and T4 by @olantwin in #112
- Remove excessive printout in MufluxSpectrometerHit by @olantwin in #113
- Update with latest muon flux online changes by @olantwin in #114
- Update for muon flux online: Updated channel map, EB & scaler unpacking by @olantwin in #115
- Update muon flux online code: final(?) channel mapping and all scalers by @olantwin in #117
- Update HNL production branching ratios & refactor Pythia configuration by @JLTastet in #98
- Fix for reading old simulations by @antonioiuliano2 in #118
- [WiP] Extended Goliath fieldmap; hardcoded geometry after detector installation. by @evanherwijnen in #119
- Removing one RPC chamber upstream by @antonioiuliano2 in #120
- Add --CharmdetSetup option to run_sumScript by @antonioiuliano2 in #121
- Updating charm cross section geometry by @antonioiuliano2 in #122
- New muon flux pattern recognition by @hushchyn-mikhail in #123
- Implement RPC endpoints by @nwojcicka in #124
- Flip x for muon tagger segmentation by @olantwin in #125
- Fixing a bug in DetectorID (again) by @antonioiuliano2 in #126
- Muon tagger hits in Muflux PatRec by @hushchyn-mikhail in #127
- Fix strip pitch, use centre of strip instead of corners by @olantwin in #128
- Fix typos in #128 by @olantwin in #129
- Remove rules for files that don't exist (fix CMake warning) by @olantwin in #130
- TDC -> distance; Alignment corrections; PatRec with/without dist2wire by @hushchyn-mikhail in #131
- Setting pixel positions after measurements by @antonioiuliano2 in #132
- New goliath fields; exposed alignment variables to python by @evanherwijnen in #135
- Changing number of lead target volumes to 1 by @antonioiuliano2 in #136
- Fix localBuild to not assume $SOURCEDIR name by @olantwin in #137
- Fix option parsing by @olantwin in #138
- Fix bug in TimeDetHit::Dist by @olantwin in #141
- Remove superfluous import; fix --test to work from anywhere by @olantwin in #142
- Update broken external link by @raux in #133
- expose x y z drifttube translations to python by @evanherwijnen in #143
- Don't write to 'dummy' files, just write to memory by @olantwin in #144
- rpc dimensions fixed by @nwojcicka in #146
- rpc digitisation by @nwojcicka in #145
- P precalculation by @hushchyn-mikhail in #148
- Fix rpc digitisation verbosity, skip invalid strips instead of erroring out; some cosmetics. by @olantwin in #149
- Fix more indentation issues, make fake clustering optional, fix imports by @olantwin in #150
- P.O.T. simulation for charm geometry by @antonioiuliano2 in #147
- Fix field map file opening b...