Skip to content

Releases: xsuite/xcoll

Xcoll release 0.6.1

23 Jun 09:09
c0f419c

Choose a tag to compare

What's Changed

  • Remove hard dependency on matplotlib by @giadarol

Full Changelog: v0.6.0...v0.6.1

Xcoll release 0.6.0

19 Jun 01:17
eef90a3

Choose a tag to compare

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 TransparentCollimator and TransparentCrystal: these do not scatter particles, but can be used to log impacts
  • LossMap has been completely restructured. It can be loaded from json (and multiple jsons can be combined) and/or created from Particles. Energy variables are now included by default. An s shift can be introduced if wished, and loss maps without interpolation now work
  • New class MultiLossMap that combines different loss map types (e.g. beam 1 / beam 2 for off-momentum loss maps, or at different timestamps, or ...)
  • LossMap objects 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 XcollCollimatorAPI and XcollScatteringAPI have been expanded into accessors. This provides the following new functionalities:
    • line.collimators.names and line.collimators.families list individual collimator names resp. a dict of collimator names per family
    • line.collimators.gap will give a dict of all collimator names and their gaps. This can also be used as a setter, and works for any attribute
    • line.collimators['tcp7'].gap will 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 elements
    • len(line.collimators) gives the number of collimators in the line, and len(line.collimators['tcp7') the number of collimators in that family
    • line.collimators.items(), line.collimators.keys(), and line.collimators.values() give it dict-like behaviour

Develop Updates

  • Fix random seeds in non-deterministic tests by @szymonlopaciuk in #125
  • Added kwargs to pencil calls (such that e.g. method='4d' can be passed)
  • BaseEngine and BaseEnvironment are adapted to be more robust and generic
  • Added string attributes to _noexpr_fields
  • Use pc as the base tracking quantity instead of energy in Everest
  • Correctly handle record_impacts etc in initialisation
  • RFSweep can be reset, and automatically resets when initialised (for leftover sweeps from before with lingering values in the ZetaShift)
  • 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

Full Changelog: v0.5.12...v0.6.0

Xcoll release 0.5.12

08 Jan 14:43
3666771

Choose a tag to compare

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

27 Nov 19:41
08a6071

Choose a tag to compare

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 BaseCollimator and BaseCrystal

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

08 Nov 18:27
afe4c9d

Choose a tag to compare

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

28 Oct 16:21
b88c6b0

Choose a tag to compare

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

25 Oct 12:30
d26142b

Choose a tag to compare

Develop Updates

  • Bugfix in crystals: the only_mcs flag was not set for crystals. Hence, when it was being queried it often wrongly evaluated to True, 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.groupby in interaction_record to be future-proof with pandas

Full Changelog: v0.5.7...v0.5.8

Xcoll release 0.5.7

16 Oct 12:35
78e8a6c

Choose a tag to compare

Develop Updates

  • Bugfix in collimator class organisation

Full Changelog: v0.5.6...v0.5.7

Xcoll release 0.5.6

15 Oct 14:40
71869e0

Choose a tag to compare

What's Changed

  • Added generate_pencil() and generate_delta() to collimator elements (and deprecated xcoll.generate_pencil_on_collimator() and xcoll. 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

10 Oct 10:08
09d7e0a

Choose a tag to compare

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_tests by giving it a recognisable path

Full Changelog: v0.5.4...v0.5.5