Package: cheetah-accelerator
CheetahCheetah is a particle tracking accelerator we built specifically to speed up the training of reinforcement learning models.InstallationSimply installCheetahfrom PyPI by running the following command.pipinstallcheetah-acceleratorHow To UseA sequence of accelerator elements (or a lattice) is called aSegmentinCheetah. You can create aSegmentas followssegment=Segment(elements=[BPM(name="BPM1SMATCH"),Drift(length=torch.tensor(1.0)),BPM(name="BPM6SMATCH"),Drift(length=torch.tensor(1.0)),VerticalCorrector(length=torch.tensor(0.3),name="V7SMATCH"),Drift(length=torch.tensor(0.2)),HorizontalCorrector(length=torch.tensor(0.3),name="H10SMATCH"),Drift(length=torch.tensor(7.0)),HorizontalCorrector(length=torch.tensor(0.3),name="H12SMATCH"),Drift(length=torch.tensor(0.05)),BPM(name="BPM13SMATCH"),])Alternatively you can create a segment from an Ocelot cell by runningsegment=Segment.from_ocelot(cell)All elements can be accesses as a property of the segment via their name. The strength of a quadrupole namedAREAMQZM2for example, may be set by runningsegment.AREAMQZM2.k1=torch.tensor(4.2)In order to track a beam through the segment, simply call the segment like sooutgoing_beam=segment.track(incoming_beam)You can choose to track either a beam defined by its parameters (fast) or by its particles (precise).Cheetahdefines two different beam classes for this purpose and beams may be created bybeam1=ParameterBeam.from_parameters()beam2=ParticleBeam.from_parameters()It is also possible to load beams from OcelotParticleArrayor Astra particle distribution files for both types of beamocelot_beam=ParticleBeam.from_ocelot(parray)astra_beam=ParticleBeam.from_astra(filepath)You may plot a segment with reference particle traces bay callingsegment.plot_overview(beam=beam)where the optional keyword argumentbeamis the incoming beam represented by the reference particles. Cheetah will use a default incoming beam, if no beam is passed.Cite CheetahIf you use Cheetah, please cite the following two papers:@misc{kaiser2024cheetah,title={Cheetah: Bridging the Gap Between Machine Learning and Particle Accelerator Physics with High-Speed, Differentiable Simulations},author={Kaiser, Jan and Xu, Chenran and Eichler, Annika and {Santamaria Garcia}, Andrea},year={2024},eprint={2401.05815},archiveprefix={arXiv},primaryclass={physics.acc-ph}}@inproceedings{stein2022accelerating,title={Accelerating Linear Beam Dynamics Simulations for Machine Learning Applications},author={Stein, Oliver and Kaiser, Jan and Eichler, Annika},year={2022},booktitle={Proceedings of the 13th International Particle Accelerator Conference}}For DevelopersActivate your virtual environment. (Optional)Install the cheetah package as editablepipinstall-e.We suggest installing pre-commit hooks to automatically conform with the code formatting in commits:pipinstallpre-commit
pre-commitinstallAcknowledgementsWe acknowledge the contributions of the following people to the development of Cheetah: Jan Kaiser, Chenran Xu, Oliver Stein, Annika Eichler, Andrea Santamaria Garcia and others.The work to develop Cheetah has in part been funded by the IVF project InternLabs-0011 (HIR3X) and the Initiative and Networking Fund by the Helmholtz Association (Autonomous Accelerator, ZT-I-PF-5-6).
In addition, we acknowledge support from DESY (Hamburg, Germany) and KIT (Karlsruhe, Germany), members of the Helmholtz Association HGF.