Skip to content

Releases: xsuite/xcoll

Xcoll release 0.4.0

29 May 01:52
f67379d
Compare
Choose a tag to compare

What's Changed

  • CollimatorManager has been deprecated. This is a profound change; all its functionalities have been ported as independent functions in Xcoll:
    • Collimators can be installed in a line by using xcoll.install_elements() though they can also be managed by (a simplified version of) the CollimatorDatabase (which can be initialised manually or from a *.yaml file)
    • Optics need to be attached to the individual collimator BeamElements (using xcoll.assign_optics_to_collimators()). This ensures an easy syncing between gap and jaw. Other useful functions are xcoll.open_collimators() and xcoll.send_to_parking() to fully open / send to parking all collimators (or a subset), and xcoll.enable_scattering() and xcoll.disable_scattering() to activate Everest scattering for all relevant elements in the line
    • Initial conditions can be generated by xcoll.generate_pencil_on_collimator() and xcoll.generate_delta_from_dispersion() (InitialPart by @simoneotelie in #53; Test for initial_distribution.py by @simoneotelie in #62). This is still rather slow and needs to be optimised.
    • New LossMap class to analyse losses on collimators and the aperture (Loss map by @simoneotelie in #41). The next step is to port plotting from the lossmaps package
    • No more manager! by @freddieknets in #73
  • Collimator gaps ( in sigma) are centred around the closed orbit, while the jaws (in meters) are centred around the reference frame:
  • Scattering code has been split between geometry and material interaction. This allows for much easier code maintenance and development, and new features have been added.
    • Geometry is defined at the C level in a very generic way (and collected in an XcollGeometry object). Collimators are represented as 2D objects, consisting of a set of Segments. So far, three Segment types exist: a LineSegment, a HalfOpenLineSegment, and a CircularSegment. It is rather trivial to extend these. Concerning objects, we have a collimator jaw, a generic polygon, and a crystal layout (First crystal geometry by @freddieknets in #71). Different methods are provided to find the crossings of a particle trajectory with these objects, potentially including a height restriction. It is rather trivial to add new objects (hence this is a step closer to adding the jaw flatness).
    • The exact same geometry code is used for the BlackAbsorber as for the EverestCollimator. So the tests of the former represent tests of the geometry code as well.
    • Added casting to unsigned int to ensure positive value for malloc by @simoneotelie in #72
  • The Everest material interaction code has been completely rewritten, for readability, maintability, and bugfixes; though a few open points / questions / TODOs remain
  • In particular for the crystal, this release accumulates almost one year of work on the crystal material interaction routine. Several bugfixes have been deployed, and the structural logic flow has been updated to allow for long crystals. A few open points / questions / TODOs remain
  • The API of the crystal has changed: the attributes no longer have the _L / _R distinction (gap instead of gap_L, jaw_U instead of jaw_LU, etc)
  • Final implementation of an impact table: InteractionRecord which keeps track of all touches and all interactions inside (both can be activated and deactivated independently). This is missing some dedicated tests and examples.
  • Release 0.4.0 by @freddieknets in #74

Develop Updates

  • BaseCrystal is the new abstract parent for all crystals (and it does not inherit from BaseCollimator due to the different API)
  • BlackCrystal is the crystal variant of the BlackAbsorber. This is useful for testing and debugging (to find which particles hit the crystal and where)
  • Lots of improvements on all tests (both in execution speed and reliability)
  • All examples are updated to the new API
  • Removed inactive front and back, and renamed active_length as length
  • Adapted code to be compatible with latest Xtrack releases

New Contributors

Full Changelog: v0.3.6...v0.4.0

Xcoll release 0.3.6

02 May 14:28
93babd3
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.5...v0.3.6

Xcoll release 0.3.5

04 Apr 14:07
51c0fc8
Compare
Choose a tag to compare

What's Changed

  • Fixed a bug in CollimatorDatabase w.r.t. collimator length and add test for CollimatorDatabase.to_yaml() (PR #65)
  • Release 0.3.5 by @freddieknets in #66
  • Added progress indicator to RFSweep

Develop Updates

  • Whitespace character for pandas is raw string
  • Adapted test__regenerate_kernels.py to new xtrack API
  • Enable and disable scattering at the element itself

Full Changelog: v0.3.4...v0.3.5

Xcoll release 0.3.4

07 Mar 12:34
dff2aa6
Compare
Choose a tag to compare

What's Changed

  • Add crystal loading from Sixtrack colldbs by @chiaramaccani in #61
  • Updated examples

Develop Updates

  • Adapted kernel attachments following Xtrack release 0.54.1
  • Added transfer line test

New Contributors

Full Changelog: v0.3.3...v0.3.4

Xcoll release 0.3.3

29 Feb 10:25
71065af
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.2...v0.3.3

Xcoll release 0.3.2

23 Feb 08:34
ed4a595
Compare
Choose a tag to compare

What's Changed

  • Important bugfix: s-coordinate was not updating correctly in Everest
  • Another small bugfix that was overwritten by the merge to v0.3.0: dumping the lossmap to json needs xobjects.JEncoder
  • Bugfix to make BlackAbsorber work on GPU (fflush can only be used on CPU_serial)

Develop Updates

  • Some small preparations to be able to use prebuilt kernels (will be available once PRs xsuite/xobjects#127, xsuite/xtrack#448, and xsuite/xpart#104 are implemented)
  • Moved only_mcs to GeneralMaterial
  • Changed the material setter in the Everest elements from a per-particle kernel to a regular kernel

Full Changelog: v0.3.1...v0.3.2

Xcoll release 0.3.1

16 Feb 10:03
ebbc428
Compare
Choose a tag to compare

What's Changed

  • Quick bugfix: issue with aperture when installing collimators. This was fixed in v0.2.7 but got lost in the merge to v0.3.0.

Full Changelog: v0.3.0...v0.3.1

Xcoll release 0.3.0

14 Feb 12:39
7bbd4c7
Compare
Choose a tag to compare

What's Changed

Develop Updates

  • install_protection_hook.sh: run this bash script to install hooks to your local xcoll repository that will halt commits that contain changes in protected files (like version.sh)
  • InvalidCollimator has been renamed into InvalidXcoll
  • The lost particle state codes have been reshuffled to make room for XC_LOST_ON_EVEREST_BLOCK
  • Internal workings of the Everest code have been updated (using a struct EverestData): this is the first step towards a full rewrite.
  • Multiple coulomb scattering inside Everest has been updated: correcting for edge effects is optional (because not needed for EverestBlock)
  • First steps towards impact registration have been made: table is linked correctly, but not yet implemented inside Everest.
  • Bugfix in the jaw field
  • Update manager.py by @phermes in #34

New Contributors

Full Changelog: v0.2.7...v0.3.0

Xcoll release 0.2.7

19 Oct 17:52
805cef3
Compare
Choose a tag to compare

What's Changed

  • Quick fix of v0.2.6: aperture installation now also correct for patched apertures
  • Creating Line from MADX now works (hack in Line comparison at the end to avoid issue with compounds)

Full Changelog: v0.2.6...v0.2.7

Xcoll release 0.2.6

18 Oct 01:14
Compare
Choose a tag to compare

What's Changed

  • Quick fix to install collimators with transformations on the aperture (tilt / offset)

Full Changelog: v0.2.5...v0.2.6