Releases: xsuite/xcoll
Releases · xsuite/xcoll
Xcoll release 0.4.0
What's Changed
CollimatorManager
has 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*.yaml
file) - Optics need to be attached to the individual collimator
BeamElements
(usingxcoll.assign_optics_to_collimators()
). This ensures an easy syncing betweengap
andjaw
. 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 activateEverest
scattering 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
LossMap
class to analyse losses on collimators and the aperture (Loss map by @simoneotelie in #41). The next step is to port plotting from thelossmaps
package - 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
C
level in a very generic way (and collected in anXcollGeometry
object). Collimators are represented as 2D objects, consisting of a set ofSegment
s. So far, threeSegment
types 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
BlackAbsorber
as 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
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 ofgap_L
,jaw_U
instead ofjaw_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 fromBaseCollimator
due to the different API)BlackCrystal
is 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
Xtrack
releases
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
CollimatorDatabase
w.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.py
to newxtrack
API - 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
Xcoll release 0.3.2
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 onCPU_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
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
What's Changed
- New class:
RFSweep
to perform off-momentum loss maps; was inmanager.py
before (examples/rf_sweep.py
andexamples/lhc_run3_offmomentum_lossmap.py
) - Added a function in
colldb.py
(write_to_yaml
) to by @bjlindst in #40 - New Everest element:
EverestBlock
by @freddieknets in #46 (examples/everest_block.py
andexamples/transfer_line_with_air.py
) - API of
EverestCrystal
changed slightly: the fieldbend
is replaced bybending_radius
. Furthermore, the fieldbending_angle
can be used instead. - Possibility to add weights to particles to rescale the lossmap afterwards
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 (likeversion.sh
)InvalidCollimator
has been renamed intoInvalidXcoll
- 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
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
What's Changed
- Quick fix to install collimators with transformations on the aperture (tilt / offset)
Full Changelog: v0.2.5...v0.2.6