Releases: xsuite/xcoll
Releases · xsuite/xcoll
Xcoll release 0.6.1
Xcoll release 0.6.0
What's Changed
- Important physics changes in Everest:
- Nuclear kick was sampled horizontally and vertically independently, but this distorts the distribution (the correct way is to sample polar)
- This change has a strong impact on the output angle distribution after scattering. Loss map simulations aren't really influenced, but individual particle tracks are!
- For crystals, the transition region from VR to AM is restored, but shorter ([tb, tb + tc]) to be in line with the Geant4 model. The original transition implementation can be activated with a compiler flag
- The ionisation loss calculation has been updated; fixed an issue in the excitation energy, and ionisation loss is now correctly applied stepwise. Also, straggling (with two Gaussians to approximate a Landau distribution) was added
- Crystal channelling output angle is restricted to [-tc, +tc] as expected from physics (though the distribution is still Gaussian)
- Optimised tilt assign logic in BaseCollimator by @lisepauwels in #135
- New elements
TransparentCollimatorandTransparentCrystal: these do not scatter particles, but can be used to log impacts LossMaphas been completely restructured. It can be loaded from json (and multiple jsons can be combined) and/or created fromParticles. Energy variables are now included by default. Ansshift can be introduced if wished, and loss maps without interpolation now work- New class
MultiLossMapthat combines different loss map types (e.g. beam 1 / beam 2 for off-momentum loss maps, or at different timestamps, or ...) LossMapobjects now have built-in plotting functions- The pencil distribution is calculated jaw-by-jaw, also whether or not each jaw individually converges or diverges with respect to the beam divergence
- The
XcollCollimatorAPIandXcollScatteringAPIhave been expanded into accessors. This provides the following new functionalities:line.collimators.namesandline.collimators.familieslist individual collimator names resp. a dict of collimator names per familyline.collimators.gapwill give a dict of all collimator names and their gaps. This can also be used as a setter, and works for any attributeline.collimators['tcp7'].gapwill list the gap of all collimators in the family'tcp7'. As all these have the same gap, only the value will be shown (instead of a dict). Similarly, line.collimators['tcp7'].gap = 8` will set the gap of all collimators in this family to 8 sigma. This too works for any attribute.for coll in line.collimators:will loop over the elementslen(line.collimators)gives the number of collimators in the line, andlen(line.collimators['tcp7')the number of collimators in that familyline.collimators.items(),line.collimators.keys(), andline.collimators.values()give it dict-like behaviour
Develop Updates
- Fix random seeds in non-deterministic tests by @szymonlopaciuk in #125
- Added kwargs to
pencilcalls (such that e.g. method='4d' can be passed) BaseEngineandBaseEnvironmentare adapted to be more robust and generic- Added string attributes to
_noexpr_fields - Use
pcas the base tracking quantity instead of energy in Everest - Correctly handle
record_impactsetc in initialisation RFSweepcan be reset, and automatically resets when initialised (for leftover sweeps from before with lingering values in theZetaShift)- Updated poetry api in pyproject.toml to be ready for its deprecation
- Code that was announced to be deprecated (like the
CollimatorManager) is now removed
New Contributors
- @lisepauwels made their first contribution in #135
Full Changelog: v0.5.12...v0.6.0
Xcoll release 0.5.12
What's Changed
- Important bugfix in dechanneling length calculation
- Pencil on a crystal is now always on the upstream jaw, irrespectively of tilt
Develop Updates
- Homogenised lost particle state code names
- Added BaseEngine for later reference when including Fluka and Geant4
- Added some xaux tools literally in case the xaux dependency cannot be resolved
Full Changelog: v0.5.11...v0.5.12
Xcoll release 0.5.11
What's Changed
- New convergence check in for pencil beam taking collimator tilt into account. Careful, this might not work correctly when both jaws have different tilts (by @gbrogginess in #121)
- Added a gemitt view to
BaseCollimatorandBaseCrystal
Develop Updates
- Restructured lossmap test to allow easy extenstion for FLUKA and Geant4 later
- Fix warning messages for deprecated functions
- Fix typo in assign_optics function in
line_tools.py
Full Changelog: v0.5.10...v0.5.11
Xcoll release 0.5.10
What's Changed
- Bugfix in tilt assignment from
CollimatorDatabase - Changed jaw nested list logic: now it is
jaw=[[LU,LD], [RU,RD]]
Develop Updates
- Small changes in release scripts to be compatible with new
Xaux
Full Changelog: v0.5.9...v0.5.10
Xcoll release 0.5.9
Develop Updates
- Moved release API to
xaux(code centralisation) to ensure version pinning
Full Changelog: v0.5.8...v0.5.9
Xcoll release 0.5.8
Develop Updates
- Bugfix in crystals: the
only_mcsflag was not set for crystals. Hence, when it was being queried it often wrongly evaluated toTrue, skipping the the code that follows where the other material-dependent parameters were defined. The rest of material-dependent parameters hence became garbage, leading to wrong results. This bugfix has been spotted by @chiaramaccani and accidentally fixed by @[email protected] - Adapted
df.groupbyininteraction_recordto be future-proof with pandas
Full Changelog: v0.5.7...v0.5.8
Xcoll release 0.5.7
Xcoll release 0.5.6
What's Changed
- Added
generate_pencil()andgenerate_delta()to collimator elements (and deprecatedxcoll.generate_pencil_on_collimator()andxcoll. generate_delta_from_dispersion())
Develop Updates
- Bugfix in
gh.py - Test reorganisation (to deal with issues with Xsuite automatic testing)
- Bugfix in collimator installation (gave issues with K2)
Full Changelog: v0.5.5...v0.5.6
Xcoll release 0.5.5
What's Changed
- Implemented new API on the line, providing (for now) the following functions:
line.collimators.assign_optics()line.collimators.open()line.collimators.to_parking()line.scattering.enable()line.scattering.enable()
Develop Updates
- Updated tests and examples for new API
- Fixed
test__list_testsby giving it a recognisable path
Full Changelog: v0.5.4...v0.5.5