Skip to content

Releases: xsuite/xcoll

Xcoll release v0.5.4

09 Oct 00:48
a237888

Choose a tag to compare

What's Changed

Develop Updates

  • Tests and examples for the impact table
  • Edge effects in MCS align to edge (for correct exit locations)
  • Bugfix in EverestCrystal which would make particle get stuck in an (almost) infinite amount of transition or VR effects
  • Bugfix in EverestCrystal that would make some jobs fail channeling (Fixed part0 bug by @chiaramaccani in #106)
  • Bugfix in ionisation loss which was calculated at the wrong location (Ionization loss and critical angle by @simoneotelie in #94)
  • Amorphous and mcs by @simoneotelie in #95
  • CollimatorManager deprecated (raises error)
  • New release script, fully in Python (with built-in API to git, github, and poetry)
  • Added boilerplate XcollLineAPI, to allow Xcoll methods on the line (need PR xsuite/xtrack#536 first)

Full Changelog: v0.5.3...v0.5.4

Xcoll release 0.5.3

30 Sep 12:16
99d7076

Choose a tag to compare

Develop Updates

  • Bugfix in BlowUp and EmittanceMonitor (previous version did double install if name of element already present in line), and adapted tests accordingly
  • Small change in BlackCrystal test to catch an edge case that was wrong

Full Changelog: v0.5.2...v0.5.3

Xcoll release 0.5.2

28 Sep 09:51
a932828

Choose a tag to compare

Develop Updates

  • Small adaptations in preparation for Xtrack 0.68.0 by @giadarol in #99

Full Changelog: v0.5.1...v0.5.2

Xcoll release 0.5.1

28 Aug 12:56
ebfb1f5

Choose a tag to compare

Develop Updates

  • Small fix in InteractionRecord: BlowUp and EmittanceMonitor are no scatter elements, so these should not be logged in the table.

Full Changelog: v0.5.0...v0.5.1

Xcoll release 0.5.0

29 Jul 20:52
700204d

Choose a tag to compare

What's Changed

  • Two new elements:
    • BlowUp: to add random kicks to a beam. Two modes of operation are possible; use_individual_kicks=False (default), where each particle gets the same kick (though different turn-by-turn), and use_individual_kicks=True, where each particle gets a different kick. The latter option is not realistic but provides a smoother blow-up (which is sometimes easier to work with in simulation). The class has an install classmethod to instantiate the element and install it in a line in one go (returning the instance). If the element is instantiated and installed manually, the fields line and name need to be set to have access to the twiss. A method calibrate_by_emittance is provided which sets the blow-up such that the beam gets shifted beyond 5 sigma in roughly 1000 turns. Finally, the field amplitude allows to scale this calibration.
    • EmittanceMonitor: a monitor that works on any Context by accumulating (using AtomicAdd) the 6D covariances of the physical coordinates. It provides the fields gemitt_x, gemitt_y, gemitt_zeta, nemitt_x, nemitt_y, nemitt_zeta, gemitt_I, gemitt_II, gemitt_III, nemitt_I, nemitt_II, and nemitt_III. The class has an install classmethod to instantiate the element and install it in a line in one go (returning the instance). If the element is instantiated and installed manually, the field line needs to be set to have access to the reference particle.
    • Added examples and test for those elements
  • Fixed bug by @simoneotelie in #84: active inside EverestBlock was ignored
  • Pencil crystal by @chiaramaccani in #87
  • Installing collimators by family is now possible.
  • Particle fields in InteractionRecord have been renamed (x_before, x_after, etc)
  • Record flags in InteractionRecord have been renamed (record_impacts, record_exits, record_scatterings)
  • Fixed crystal geometry for right-sided crystals
  • Added views to BaseCollimator to get the s position of the jaw corners

Develop Updates

  • Renamed collimators_src folder as elements_src
  • Bugfix when setting gap_R
  • Several bugfixes in InteractionRecord, and made things like io_buffer more robust
  • Two bugfixes in lossmap:
    • particles lost in an aperture directly after a crystal should stay in that aperture (as the crystal is too small to follow the same logic as the regular collimators in this situation)
    • Typo in line_is_reversed
  • Better tests for BlackAbsorber
  • Adapted impacts tests, however, exit tests fail (need to investigate)
  • Materials database in Everest slightly adapted to be more flexible (SixTrack <-> Xcoll)
  • Tracking Everest would fail for a material with the _only_mcs flag. This is fixed now, but the logic should be rethought

Full Changelog: v0.4.0...v0.5.0

Xcoll release 0.4.0

29 May 01:52
f67379d

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

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

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

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

Choose a tag to compare

What's Changed

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