Papers
Topics
Authors
Recent
Search
2000 character limit reached

PyORBIT: Accelerator & Exoplanet Analysis

Updated 14 July 2026
  • PyORBIT is a dual-purpose toolkit that offers a Python-based simulator for accelerator beam-dynamics and a Bayesian analysis tool for exoplanet time-series data.
  • In accelerator physics, it extends legacy ORBIT algorithms to perform full-cycle 6D simulations with space charge, RF acceleration, and collective effects.
  • For exoplanet studies, it integrates multi-instrument radial velocity, activity indicators, and light curves using Bayesian inference and model comparison techniques.

PyORBIT is a name used in contemporary literature for two distinct research software lineages. In accelerator physics, it denotes a Python-based format that reimplements and extends algorithms from the original ORBIT code for beam-dynamics simulations in high-intensity synchrotrons and related machines; in exoplanetary science, it denotes a Bayesian analysis tool for radial velocities, activity indicators, and light curves. The two are unrelated in purpose, data model, and methodology, and domain context is therefore essential when interpreting references to “PyORBIT” in the literature (Zhang et al., 2021, Ruggieri et al., 2024).

1. Names, domains, and disambiguation

In published usage, “PyORBIT” most prominently refers either to accelerator beam-dynamics software descended from ORBIT or to an exoplanet time-series inference package. The accelerator lineage is tied to high-intensity hadron synchrotrons, space charge, transition crossing, collective effects, and lattice-based tracking. The exoplanet lineage is tied to Bayesian modeling of multi-instrument radial-velocity data, stellar-activity signals, and, in some studies, joint RV-photometric fits (Zhang et al., 2021, Ruggieri et al., 10 Jul 2026).

A concise disambiguation is useful because software searches can also return unrelated orbit packages.

Name in literature Domain Characterization
PyORBIT / pyORBIT Accelerator physics Python-based format extending ORBIT for beam-dynamics simulations
PyORBIT Exoplanet science Bayesian tool for RVs, activity indicators, and light curves
gr-orbit-toolkit Relativistic celestial mechanics Python package for Newtonian and post-Newtonian two-body orbit simulation

The unrelated “gr-orbit-toolkit” is a Python package for simulating and visualizing classical and relativistic orbital motion in a 2D two-body setting; it is neither an accelerator beam-dynamics code nor the exoplanet-analysis package that also appears under the PyORBIT name (Delgado et al., 13 Nov 2025).

2. Accelerator-physics PyORBIT: origin, scope, and computational role

In accelerator applications, ORBIT is described as the original particle-tracking code written in C++ and built on the SuperCode shell, widely used for beam-dynamics simulations including injection and acceleration in high-intensity hadron synchrotrons. PyORBIT is described as a newer Python-based format that reimplements and extends algorithms from the original ORBIT, and in the context of longitudinal tracking it inherited the same formulation as ORBIT (Zhang et al., 2021).

That accelerator lineage is used for integrated machine studies rather than isolated optics calculations. In the Fermilab Booster, for example, PyORBIT is the main engine for full-cycle 6D simulations through the entire acceleration ramp, including RF acceleration, transition crossing, space charge, and wall impedance. A typical full cycle corresponds to a 25 ms ramp, about 15,000 turns, from 0.8 to 8 GeV. The choice of PyORBIT in that study is explicitly justified by the limited number of space-charge-capable tracking codes suitable for rapid-cycling synchrotrons, the poor parallelization of many legacy tools, and practical considerations such as an active user community and source availability (Ostiguy et al., 2024).

Published accelerator work also shows that PyORBIT is not a monolithic single-physics tracker. In the CLIC damping-ring studies, lattice tracking is performed with PTC within PyORBIT, while collective effects are added through PyORBIT space-charge models and newly implemented intrabeam-scattering and synchrotron-radiation modules. The same body of work emphasizes that PyORBIT already had several space-charge models, including a fully self-consistent 2.5D PIC solver, a slice-by-slice solver, and an analytical frozen-potential solver (Zampetakis et al., 2023).

3. Longitudinal tracking defect inherited from ORBIT

A major technical result in the accelerator literature is that PyORBIT inherited a specific defect from ORBIT in 1D longitudinal tracking during acceleration. The case study is the CSNS/RCS, where protons are accelerated from 80 MeV to 1.6 GeV in 20 ms. In that machine, measured bunch-length evolution disagreed with ORBIT’s 1D longitudinal simulations because ORBIT predicted a substantial decrease of longitudinal emittance in eV-s during acceleration, despite operation in the adiabatic regime. The adiabatic coefficient was written as

αad=∣1ωs2dωsdt∣≪1,\alpha_{\mathrm{ad}}=\left|\frac{1}{\omega_s^2}\frac{d\omega_s}{dt}\right| \ll 1,

and for CSNS/RCS it remained almost always below 0.05, so the observed numerical emittance shrinkage was inconsistent with Liouville’s theorem (Zhang et al., 2021).

The central symptom was severe: the simulated longitudinal emittance shrank from about 0.263 eV-s to 0.106 eV-s during the cycle. Source-code inspection traced the problem to an inconsistent pair of finite-difference longitudinal update equations used during acceleration. PyORBIT and ORBIT used a phase update compatible with changing synchronous conditions, but an energy update that omitted the acceleration-dependent factor βn+1/βn\beta_{n+1}/\beta_n. The corrected energy update is

δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),

whereas the erroneous update effectively used only δEn\delta E_n plus the RF term. In the authors’ interpretation, the omission excludes the RF-frequency swing during acceleration and therefore misses the betatron effect in the discrete update (Zhang et al., 2021).

The physical consequence is that the longitudinal map ceases to be area-preserving during acceleration. Machine measurements at CSNS/RCS, analytical expectations based on conserved emittance, and a self-written 1D tracking code all showed nearly invariant longitudinal emittance, whereas the inconsistent ORBIT/PyORBIT map produced artificial damping. After replacing the erroneous finite-difference energy equation with the corrected form, ORBIT and PyORBIT yielded nearly conserved longitudinal emittance and realistic rms bunch-length evolution, including in simulations “including injection” rather than only in idealized matched-bunch tests (Zhang et al., 2021).

4. Collective effects, machine-specific extensions, and representative accelerator studies

Accelerator PyORBIT has been used as a platform for realistic collective-effects studies in several machine classes. In the Fermilab Booster, the simulations include space charge, wall impedance effects, and transition crossing. Because the bunch longitudinal-to-transverse size ratio is high, ≫10\gg 10, the authors use a 2.5D space-charge approximation: longitudinal force from the derivative of the line density, and transverse force from a beam-frame Poisson solve using FFTs, weighted by local line density. Practical throughput is reported explicitly: a typical full 25 ms Booster acceleration cycle with 50k to 100k macroparticles on 20 CPU cores takes about 6 hours. The same study also shows PyORBIT’s extensibility at the Python level, where a quadrupole damper and a turn-by-turn phase-lock-like transition treatment were implemented because such functionality was not readily available as native support (Ostiguy et al., 2024).

That Booster study also illustrates PyORBIT’s use in scenario evaluation. Starting from a painted longitudinal distribution with 95% emittance 0.052 eV-s at the start of acceleration, a simple phase-jump treatment produced a final 95% longitudinal emittance of 0.197 eV-s at extraction. Activating the quadrupole damper reduced this to 0.137 eV-s, and an emulated Δγt∼0.6\Delta\gamma_t \sim 0.6 jump over about 100 μs\mu\mathrm{s} reduced it further to 0.103 eV-s, essentially meeting the stated 0.1 eV-s requirement (Ostiguy et al., 2024).

In electron damping-ring work, PyORBIT has been extended in a different direction. For the CLIC damping rings, new Python modules for synchrotron radiation and intrabeam scattering were integrated with PyORBIT’s existing 3D space-charge capability so that SC, IBS, and SR could be studied together over the full damping-ring cycle. The selected space-charge model there is the analytical frozen-potential solver based on the Bassetti-Erskine formula, longitudinally modulated by sliced line density. The frozen potential is recomputed every 100 turns, while IBS and SR kicks are applied in an adiabatically updated, quasi self-consistent workflow. That work used PTC tracking through the full ring, about 14100 turns over the 20 ms cycle (Zampetakis et al., 2023).

For the CERN ion injector chain, a new IBS kick was implemented in PyORBIT to handle coupled SC+IBS evolution in LEIR and the SPS, particularly below transition. The implementation uses a modified kinetic-theory approach connected to Bjorken-Mtingwa formalism and Nagaitsev’s fast formulation, with Carlson complete symmetric elliptic integrals of the second kind for efficient evaluation. In the reported studies, lattice tracking is again performed with PTC, the frozen SC potential is updated every 500 turns in LEIR and every 1000 turns in SPS, the IBS coefficients are recomputed on the same schedule, and the stochastic IBS kick itself is applied every turn (Zampetakis et al., 2023).

5. Low-energy space charge, IOTA benchmarking, and numerical limitations

The IOTA proton-ring studies provide the most detailed view of accelerator PyORBIT as a PIC code. In “Modeling Transverse Space Charge effects in IOTA with pyORBIT,” the code is benchmarked first against MADX for single-particle dynamics in the linear lattice and in a partially integrable octupole-string lattice. Dynamic-aperture agreement is close: for example, in the octupole lattice the reported 4D minimum dynamic aperture is 3.19 in pyORBIT versus 3.21 in MADX, and the 6D average dynamic aperture is 2.90 versus 2.86. For the actual space-charge studies, the authors use the original linear IOTA lattice, Gaussian transverse distributions, a longitudinal waterbag distribution, open boundary conditions, and a self-consistent PIC solve of Poisson’s equation in the beam frame with only transverse space-charge kicks applied (Li et al., 2021).

Those IOTA papers also document both mitigation strategies and numerical constraints. Abrupt injection of a full-intensity bunch into the bare lattice produces severe mismatch-driven blowup: at 9×10109\times10^{10} particles, horizontal emittance growth reaches about 12 times the initial value, vertical growth about 7 times, with about 1% loss in 1000 turns. A slow charge turn-on over about 40 turns reduces losses dramatically, to about 0.01% over 500 turns and below 0.1% over 1000 turns, while reducing emittance growth from roughly 10 times to about 5 times. Convergence studies at full intensity identify practical thresholds of at least 5×1055\times10^5 macroparticles, at least a 128×128×5128\times128\times5 mesh, and at least 63 space-charge kicks per betatron wavelength (Li et al., 2021).

The same IOTA literature is explicit about a limitation of PIC tracking in pyORBIT: once space charge is enabled, the map is no longer close to symplectic in the single-particle sense used for long-term tracking tests. The authors conclude that PIC methods of this type are not suitable for long-term symplectic tracking, though they can still be reliable for short-term studies over about βn+1/βn\beta_{n+1}/\beta_n0–βn+1/βn\beta_{n+1}/\beta_n1 turns. That conclusion is reinforced by later IOTA work in which pyORBIT is used to study early-time space-charge-driven emittance growth and quasi-integrable octupole mitigation. There, the bulk of growth appears within tens of turns after injection, and octupoles in the studied configuration mainly reduce dynamic aperture rather than mitigating the growth (Feigelson et al., 2021).

More recent cross-code benchmarking places pyORBIT alongside Xsuite and MAD-X for bare-IOTA proton beams at 2.5 MeV with strong transverse space charge. In that benchmark, PyORBIT uses a 2.5D PIC model with βn+1/βn\beta_{n+1}/\beta_n2 macroparticles and a βn+1/βn\beta_{n+1}/\beta_n3 grid. For moderate beam currents, the three codes agree within a factor of 2 in core phase-space density predictions up to 100 synchrotron periods, while tail distributions and beam loss show significant differences. Tune shifts from PyORBIT agree with Xsuite and MAD-X within 10% at high intensities, but once the incoherent tune shift exceeds about 0.3 and core particles cross the integer resonance, emittance, tails, and loss diverge strongly across codes (Banerjee et al., 2024).

Analytical validation papers use pyORBIT in yet another role: tune-footprint benchmarking. In the IOTA tune-spread study, space-charge footprints simulated with pyORBIT using βn+1/βn\beta_{n+1}/\beta_n4 macroparticles, a βn+1/βn\beta_{n+1}/\beta_n5 grid, and 63 space-charge kicks per betatron wavelength were found to be in good agreement with analytical predictions at βn+1/βn\beta_{n+1}/\beta_n6 particles per bunch, with noticeably broader numerical footprints at βn+1/βn\beta_{n+1}/\beta_n7 where invariant-action assumptions begin to break down (Sen, 2023).

6. Exoplanet PyORBIT: Bayesian inference for RVs, activity indicators, and light curves

A separate software lineage under the same name serves exoplanet data analysis. In that literature, PyORBIT is described as an advanced Python tool for the Bayesian analysis of radial velocities, activity indicators, and light curves, and in one published characterization explicitly as PyORBIT v9.1. It is used with PyDE for optimization and emcee as the affine-invariant MCMC sampler, with representative runs of 200000 steps, burn-in 50000, and 4 walkers for each fitted parameter; convergence checks include integrated autocorrelation analysis, Gelman-Rubin diagnostics, and visual inspection (Ruggieri et al., 2024, Ruggieri et al., 10 Jul 2026).

The standard RV workflow shown in the occurrence-rate study of systems with cold Jupiters is multi-instrument and hierarchical. For each spectrograph, and for upgrade-defined sub-instruments where necessary, PyORBIT fits separate zero-point offsets and jitter terms. Planetary signals are represented with a Keplerian parameterization using the semi-amplitude βn+1/βn\beta_{n+1}/\beta_n8, period βn+1/βn\beta_{n+1}/\beta_n9, mean longitude δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),0, and the variables δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),1 and δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),2. Gaussian-process regression with a quasi-periodic kernel is used in selected systems to model stellar activity, and model selection for additional companions is performed with δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),3 as the threshold for a likely new planetary companion. In that survey, PyORBIT is the common engine used to fit heterogeneous RV archives consistently before residual-based completeness mapping and occurrence-rate estimation are performed by separate codes (Ruggieri et al., 10 Jul 2026).

Published applications show that exoplanet PyORBIT also supports richer inference modes. In K2-111, it is used for a global fit of K2 transit photometry together with HARPS-N and ESPRESSO radial velocities. The transit model uses batman, quadratic limb darkening, and a 1764.944 s exposure-time integration to account for K2 long cadence. The inference engine in that study is MultiNest with 1000 live points rather than emcee, and the adopted model is a two-Keplerian eccentric solution that yields a transiting planet, K2-111b, with δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),4 d and a non-transiting companion, K2-111c, with δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),5 d in near-3:1 mean-motion resonance (Mortier et al., 2020).

The XO-2 system study illustrates the software’s activity-modeling capabilities. There, PyORBIT is used not only for multi-Keplerian RV modeling but also for quasi-periodic GP tests and for a multidimensional GP following Rajpaul et al. (2015), in which a shared latent process δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),6 and its derivative δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),7 couple simultaneously to RVs, δEn+1=βn+1βn δEn+eV0,n+1(sin⁡ϕn+1−sin⁡ϕs),\delta E_{n+1}=\frac{\beta_{n+1}}{\beta_n}\,\delta E_n+eV_{0,n+1}\left(\sin\phi_{n+1}-\sin\phi_s\right),8, and BIS. That framework is used to distinguish between a new long-period planet around XO-2S and a stellar magnetic cycle in XO-2N, leading to evidence for an additional Jovian-analog candidate around XO-2S while interpreting the long-term XO-2N RV trend as activity rather than a second planet (Ruggieri et al., 2024).

Taken together, these exoplanet studies show a package centered on Bayesian model comparison for heterogeneous time-series data: multi-instrument Keplerian fitting, per-instrument offsets and jitters, optional quasi-periodic or multidimensional GP activity models, and, in some applications, joint RV-transit inference or RV-informed photometric transit searches (Ruggieri et al., 2024, Mortier et al., 2020).

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to PyORBIT.