Releases: xsuite/xcoll
Releases · xsuite/xcoll
Xcoll release v0.5.4
What's Changed
- Faster initial conditions generation (Twiss by @simoneotelie in #103)
Develop Updates
- Tests and examples for the impact table
- Edge effects in MCS align to edge (for correct exit locations)
- Bugfix in
EverestCrystalwhich would make particle get stuck in an (almost) infinite amount of transition or VR effects - Bugfix in
EverestCrystalthat 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
CollimatorManagerdeprecated (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
Develop Updates
- Bugfix in
BlowUpandEmittanceMonitor(previous version did double install if name of element already present in line), and adapted tests accordingly - Small change in
BlackCrystaltest to catch an edge case that was wrong
Full Changelog: v0.5.2...v0.5.3
Xcoll release 0.5.2
Develop Updates
Full Changelog: v0.5.1...v0.5.2
Xcoll release 0.5.1
Develop Updates
- Small fix in
InteractionRecord:BlowUpandEmittanceMonitorare 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
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), anduse_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 aninstallclassmethod 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 fieldslineandnameneed to be set to have access to the twiss. A methodcalibrate_by_emittanceis provided which sets the blow-up such that the beam gets shifted beyond 5 sigma in roughly 1000 turns. Finally, the fieldamplitudeallows to scale this calibration.EmittanceMonitor: a monitor that works on anyContextby accumulating (usingAtomicAdd) the 6D covariances of the physical coordinates. It provides the fieldsgemitt_x,gemitt_y,gemitt_zeta,nemitt_x,nemitt_y,nemitt_zeta,gemitt_I,gemitt_II,gemitt_III,nemitt_I,nemitt_II, andnemitt_III. The class has aninstallclassmethod 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 fieldlineneeds to be set to have access to the reference particle.- Added examples and test for those elements
- Fixed bug by @simoneotelie in #84:
activeinsideEverestBlockwas ignored - Pencil crystal by @chiaramaccani in #87
- Installing collimators by family is now possible.
- Particle fields in
InteractionRecordhave been renamed (x_before,x_after, etc) - Record flags in
InteractionRecordhave been renamed (record_impacts,record_exits,record_scatterings) - Fixed crystal geometry for right-sided crystals
- Added views to
BaseCollimatorto get thesposition of the jaw corners
Develop Updates
- Renamed
collimators_srcfolder aselements_src - Bugfix when setting
gap_R - Several bugfixes in
InteractionRecord, and made things likeio_buffermore 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
Everestwould fail for a material with the_only_mcsflag. This is fixed now, but the logic should be rethought
Full Changelog: v0.4.0...v0.5.0
Xcoll release 0.4.0
What's Changed
CollimatorManagerhas been deprecated. This is a profound change; all its functionalities have been ported as independent functions inXcoll:- Collimators can be installed in a line by using
xcoll.install_elements()though they can also be managed by (a simplified version of) theCollimatorDatabase(which can be initialised manually or from a*.yamlfile) - Optics need to be attached to the individual collimator
BeamElements(usingxcoll.assign_optics_to_collimators()). This ensures an easy syncing betweengapandjaw. Other useful functions arexcoll.open_collimators()andxcoll.send_to_parking()to fully open / send to parking all collimators (or a subset), andxcoll.enable_scattering()andxcoll.disable_scattering()to activateEverestscattering for all relevant elements in the line - Initial conditions can be generated by
xcoll.generate_pencil_on_collimator()andxcoll.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
LossMapclass to analyse losses on collimators and the aperture (Loss map by @simoneotelie in #41). The next step is to port plotting from thelossmapspackage - No more manager! by @freddieknets in #73
- Collimators can be installed in a line by using
- Collimator gaps ( in sigma) are centred around the closed orbit, while the jaws (in meters) are centred around the reference frame:
- Removal of the reference point by @simoneotelie in #67
- Test for jaws and gaps by @simoneotelie in #70
- 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
Clevel in a very generic way (and collected in anXcollGeometryobject). Collimators are represented as 2D objects, consisting of a set ofSegments. So far, threeSegmenttypes exist: aLineSegment, aHalfOpenLineSegment, and aCircularSegment. 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
BlackAbsorberas for theEverestCollimator. 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
- Geometry is defined at the
- The
Everestmaterial 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/_Rdistinction (gapinstead ofgap_L,jaw_Uinstead ofjaw_LU, etc) - Final implementation of an impact table:
InteractionRecordwhich 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
BaseCrystalis the new abstract parent for all crystals (and it does not inherit fromBaseCollimatordue to the different API)BlackCrystalis the crystal variant of theBlackAbsorber. 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
Xtrackreleases
New Contributors
- @simoneotelie made their first contribution in #41
Full Changelog: v0.3.6...v0.4.0
Xcoll release 0.3.6
What's Changed
- Adapt xcoll to xsuite-kernels package by @szymonlopaciuk in #68
Full Changelog: v0.3.5...v0.3.6
Xcoll release 0.3.5
What's Changed
- Fixed a bug in
CollimatorDatabasew.r.t. collimator length and add test forCollimatorDatabase.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.pyto newxtrackAPI - Enable and disable scattering at the element itself
Full Changelog: v0.3.4...v0.3.5
Xcoll release 0.3.4
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
- @chiaramaccani made their first contribution in #61
Full Changelog: v0.3.3...v0.3.4
Xcoll release 0.3.3
What's Changed
- Changes required for removing ParticlesBase by @szymonlopaciuk in #59
Full Changelog: v0.3.2...v0.3.3