Skip to content

Modify envelope tracker - #141

Open
austin-hoover wants to merge 13 commits into
PyORBIT-Collaboration:env-trackerfrom
austin-hoover:env-tracker-lattice
Open

Modify envelope tracker#141
austin-hoover wants to merge 13 commits into
PyORBIT-Collaboration:env-trackerfrom
austin-hoover:env-tracker-lattice

Conversation

@austin-hoover

Copy link
Copy Markdown
Contributor
  • Envelope now stores SyncParticle rather than bunch. Added getCharge() method to SyncParticle.
  • Moved transfer matrix definitions (quad, drift, etc.) to orbit.utils.matrix.py.
  • Added method getMatrix(sync_part: SyncParticle, part_index: int) -> np.ndarray to each AccNode subclass.
    • By default this method will raise NotImplementError.
    • If the element does not affect the coordinates, it should return None.
    • Otherwise it will return the exact first-order transfer matrix.
  • Got rid of orbit.envelope.EnvelopeTracker and added envelope tracking routines to orbit.lattice.AccLattice, such as AccLattice.trackEnvelope(envelope: Envelope, index_start: int = 0, index_stop: int = None, history: bool = False). There are additional methods for faster tracking in rings with static elements (by storing transfer matrices rather than recomputing on each turn.
  • Added method Envelope.to_bunch(size: int, dist: str) -> Bunch to generate bunch from envelope. Also added bunch argument to Envelope constructor to construct envelope directly from bunch.
  • Updated tests (/tests/py/orbit/test_env.py) and examples (/examples/Envelope). I think everything is working as before.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant