Skip to content

Releases: ShipSoft/FairShip

25.12

22 Dec 16:32

Choose a tag to compare

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 HNLPythia8Generator to 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 --SmearBeam parameter and uniform circular painting with --PaintRadius parameter
    • The --SmearBeam and --PaintBeam command-line options in run_simScript.py now apply to all generators, not just muon background simulation
    • Implemented shared BeamSmearingUtils utility using modern C++17 features (std::pair return and structured bindings) to eliminate code duplication
  • Big update of genie generation scripts macro/makeGenieEvents.py and python/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.py and copying gst TTree from the genie input file to the output file of the macro/run_simScript.py:
    • Adjust the z range where to simulate the neutrino interactions via --z_start_nu and --z_end_nu keys
    • Replacing the --Genie key with Genie as a subparser
    • Copying gst TTree is similar to sndsw
  • 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 SND is 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 of MTC are stored in geometry/MTC_config.yaml file
  • Added fibre structure for MTC and digitization. Fibre <-> SiPM mapping is done in SND/MTC/MTCDetector.cxx, can be extracted and tested in python/SciFiMapping.py, that is subsequently used in python/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.py for choosing SND options is added: --SND_design
  • Support for multiple SND designs in simulation setup
    • The --SND_design option in macro/run_simScript.py now 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.
  • 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_opt in geometry_config
  • Added new parameters to muon shield to support configurations from current optimisation campaign
  • Geometry_config.py: Added MS design New_HA_Design based on the MS warm_opt with 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 use std::vector<PointType> instead of TClonesArray for storing MC simulation points. This modernises the codebase with standard C++ containers, improves type safety, and leverages FairRootManager::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 uses std::vector<ShipMCTrack> instead of TClonesArray for storing MC tracks written to output. This completes the migration of MC data storage to modern C++ containers and enables RegisterAny() 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...
Read more

25.01

30 Jan 15:06

Choose a tag to compare

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

Removed

  • Remove Millepede
  • Remove outdated example shipEvent_ex.py
  • Remove ALPACA generator

New Contributors

Full Changelog: 24.11...25.01

24.11

04 Nov 11:06

Choose a tag to compare

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.py to 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

03 Oct 22:38

Choose a tag to compare

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-revs to 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_package2 to 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

New Contributors

Full Changelog: ECN3_2023...24.10

ECN3 2023

26 Jun 09:07

Choose a tag to compare

ECN3 geometry with 2023 updates, ready for new background productions for the proposal.

What's Changed

Full Changelog: ECN3_2022...ECN3_2023

ECN3 2022

25 Apr 09:03
482b813

Choose a tag to compare

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

Read more

2017 Summer frozen version

18 Sep 09:16

Choose a tag to compare

This release contains all modifications up to September 17th.
The master branch will continue with updates to the target geometry, non-uniform magnetic fields in the muonshield.

Short Muon Shield, pyramidal frustum

06 Mar 13:01

Choose a tag to compare

Start of optimization with short muon shield, pyramidal frustum shape for Hidden Particle Detector. Tau-neutrino detector slightly too wide.

Tag version 1.10.

14 Oct 05:49

Choose a tag to compare

Version used for TP and TP addendum 2015