Element Constraints
An EleObservation contains the output of a tao.ele(...) call (ie Twiss parameters, reference energy, floor positions, etc.).
The observation may be evaluted from a single element in a lattice with EleObservable.
The min and max of the values in the element can be evaluated using EleMinObservable and EleMaxObservable.
Observation Classes
flowchart TD
LatticeObservable([LatticeObservable]) --> Observable([Observable])
LiteralObservable([LiteralObservable]) --> Observable
EleObservable[EleObservable] --> LatticeObservable
EleMaxObservable[EleMaxObservable] --> LatticeObservable
EleMinObservable[EleMinObservable] --> LatticeObservable
EleLiteral[EleLiteral] --> LiteralObservable
IsClose([IsClose]) --> Comparison([Comparison])
IsLess([IsLess]) --> Comparison
EleIsClose[EleIsClose] --> IsClose
EleLessThan[EleLessThan] --> IsLess
EleObservable -. creates .-> EleObservation[EleObservation]
EleMaxObservable -. creates .-> EleObservation
EleMinObservable -. creates .-> EleObservation
EleLiteral -. creates .-> EleObservation
EleIsClose -. creates .-> EleIsCloseResult[EleIsCloseResult]
EleLessThan -. creates .-> EleLessThanResult[EleLessThanResult]
pytao.constraints.observables.EleObservation
Bases: Observation
Observation with all of the data available in a Bmad element. Ie, all of the information you get from a pytao
tao.ele(...) call.
Attributes:
| Name | Type | Description |
|---|---|---|
obs_type |
str
|
Discriminator literal. Always |
element |
Element
|
Element data including Twiss parameters, orbit, floor position, and attributes. |
Observables
pytao.constraints.observables.EleObservable
Bases: LatticeObservable[EleObservation]
Observable that fetches element data from the lattice.
Attributes:
| Name | Type | Description |
|---|---|---|
obs_type |
str
|
Discriminator literal. Always |
ele_id |
str or int
|
Element index or name passed to |
ix_uni |
int
|
Universe index. |
ix_branch |
int
|
Branch index. |
pytao.constraints.observables.EleMinObservable
Bases: LatticeObservable[EleObservation]
Observable yielding the per-field minimum across all tracking elements.
Attributes:
| Name | Type | Description |
|---|---|---|
obs_type |
str
|
Discriminator literal. Always |
ix_uni |
int
|
Universe index. |
ix_branch |
int
|
Branch index. |
pytao.constraints.observables.EleMaxObservable
Bases: LatticeObservable[EleObservation]
Observable yielding the per-field maximum across all tracking elements.
Attributes:
| Name | Type | Description |
|---|---|---|
obs_type |
str
|
Discriminator literal. Always |
ix_uni |
int
|
Universe index. |
ix_branch |
int
|
Branch index. |
pytao.constraints.observables.EleLiteral
Bases: LiteralObservable[EleObservation]
Literal element observable with user-specified field values.
Only non-None fields are included in the produced observation.
Attributes:
| Name | Type | Description |
|---|---|---|
obs_type |
str
|
Discriminator literal. Always |
beta_a |
float or None
|
Mode A beta function. |
alpha_a |
float or None
|
Mode A alpha function. |
beta_b |
float or None
|
Mode B beta function. |
alpha_b |
float or None
|
Mode B alpha function. |
eta_x |
float or None
|
Horizontal dispersion. |
etap_x |
float or None
|
Horizontal dispersion slope. |
eta_y |
float or None
|
Vertical dispersion. |
etap_y |
float or None
|
Vertical dispersion slope. |
p0c |
float or None
|
Reference momentum. |
floor_x |
float or None
|
Global floor x coordinate. |
floor_y |
float or None
|
Global floor y coordinate. |
floor_z |
float or None
|
Global floor z coordinate. |
Operators and Results
pytao.constraints.observables.EleIsClose
Bases: IsClose[EleObservation]
IsClose operator comparing two EleObservation instances across all available data.
Set a field to None to skip that comparison.
Attributes:
| Name | Type | Description |
|---|---|---|
twiss_a |
AnyTwissComparison or None
|
Comparison method for mode A Twiss parameters. |
twiss_b |
AnyTwissComparison or None
|
Comparison method for mode B Twiss parameters. |
eta_x |
TolComparison or None
|
Comparison for horizontal dispersion. |
etap_x |
TolComparison or None
|
Comparison for horizontal dispersion slope. |
eta_y |
TolComparison or None
|
Comparison for vertical dispersion. |
etap_y |
TolComparison or None
|
Comparison for vertical dispersion slope. |
ref_energy |
TolComparison or None
|
Comparison for total reference energy. |
p0c |
TolComparison or None
|
Comparison for reference momentum. |
orbit |
TolComparison or None
|
Comparison for orbit, as 6D vector. |
floor_x |
TolComparison or None
|
Comparison for global floor x coordinate. |
floor_y |
TolComparison or None
|
Comparison for global floor y coordinate. |
floor_z |
TolComparison or None
|
Comparison for global floor z coordinate. |
pytao.constraints.observables.EleLessThanResult
Bases: IsLessResult
Result of an EleLessThan comparison with per-field less-than check results.
Each field is None if the corresponding component was not checked.
Attributes:
| Name | Type | Description |
|---|---|---|
result_type |
str
|
Discriminator literal. Always |
beta_a |
CheckResult or None
|
Mode A beta function. |
alpha_a |
CheckResult or None
|
Mode A alpha function. |
beta_b |
CheckResult or None
|
Mode B beta function. |
alpha_b |
CheckResult or None
|
Mode B alpha function. |
eta_x |
CheckResult or None
|
Horizontal dispersion. |
etap_x |
CheckResult or None
|
Horizontal dispersion slope. |
eta_y |
CheckResult or None
|
Vertical dispersion. |
etap_y |
CheckResult or None
|
Vertical dispersion slope. |
ref_energy |
CheckResult or None
|
Total reference energy. |
p0c |
CheckResult or None
|
Reference momentum. |
floor_x |
CheckResult or None
|
Global floor x coordinate. |
floor_y |
CheckResult or None
|
Global floor y coordinate. |
floor_z |
CheckResult or None
|
Global floor z coordinate. |
pytao.constraints.observables.EleLessThan
Bases: IsLess[EleObservation]
Component-wise less-than comparison between two EleObservations.
Set a field to True to enable the less-than check for that component.
Attributes:
| Name | Type | Description |
|---|---|---|
beta_a |
bool
|
Check mode A beta function. |
alpha_a |
bool
|
Check mode A alpha function. |
beta_b |
bool
|
Check mode B beta function. |
alpha_b |
bool
|
Check mode B alpha function. |
eta_x |
bool
|
Check horizontal dispersion. |
etap_x |
bool
|
Check horizontal dispersion slope. |
eta_y |
bool
|
Check vertical dispersion. |
etap_y |
bool
|
Check vertical dispersion slope. |
ref_energy |
bool
|
Check total reference energy. |
p0c |
bool
|
Check reference momentum. |
floor_x |
bool
|
Check global floor x coordinate. |
floor_y |
bool
|
Check global floor y coordinate. |
floor_z |
bool
|
Check global floor z coordinate. |
pytao.constraints.observables.EleIsCloseResult
Bases: IsCloseResult
Result of an EleIsClose comparison with per-field check results.
Each field is None if the corresponding comparison was not run.
Attributes:
| Name | Type | Description |
|---|---|---|
result_type |
str
|
Discriminator literal. Always |
twiss_a |
CheckResult or None
|
Mode A Twiss comparison (beta_a, alpha_a). |
twiss_b |
CheckResult or None
|
Mode B Twiss comparison (beta_b, alpha_b). |
eta_x |
CheckResult or None
|
Horizontal dispersion. |
etap_x |
CheckResult or None
|
Horizontal dispersion slope. |
eta_y |
CheckResult or None
|
Vertical dispersion. |
etap_y |
CheckResult or None
|
Vertical dispersion slope. |
ref_energy |
CheckResult or None
|
Total reference energy (e_tot). |
p0c |
CheckResult or None
|
Reference momentum. |
orbit |
CheckResult or None
|
Orbit, as 6D vector. |
floor_x |
CheckResult or None
|
Global floor x coordinate. |
floor_y |
CheckResult or None
|
Global floor y coordinate. |
floor_z |
CheckResult or None
|
Global floor z coordinate. |
Operator Helper Classes
pytao.constraints.observables.TolComparison
Bases: ConstraintsBase
Scalar or array approximate-equality check using np.allclose.
Attributes:
| Name | Type | Description |
|---|---|---|
atol |
float
|
Absolute tolerance. |
rtol |
float
|
Relative tolerance. |
pytao.constraints.observables.BmagTwissComparison
Bases: TwissComparisonMethod
Twiss comparison using the Bmag metric.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
Discriminator literal. Always |
max_bmag |
float
|
Upper bound for an acceptable Bmag value. |
min_bmag |
float
|
Lower bound for an acceptable Bmag value. |
Constraints, and Results
flowchart TD
ComparisonConstraint([ComparisonConstraint]) --> Constraint([Constraint])
RegressionConstraint([RegressionConstraint]) --> Constraint
IsCloseConstraint([IsCloseConstraint]) --> ComparisonConstraint
IsLessConstraint([IsLessConstraint]) --> ComparisonConstraint
EleIsCloseConstraint[EleIsCloseConstraint] --> IsCloseConstraint
EleLessThanConstraint[EleLessThanConstraint] --> IsLessConstraint
EleRegressionConstraint[EleRegressionConstraint] --> RegressionConstraint
EleIsCloseConstraint -. creates .-> EleIsCloseResult[EleIsCloseResult]
EleLessThanConstraint -. creates .-> EleLessThanResult[EleLessThanResult]
EleRegressionConstraint -. creates .-> EleIsCloseResult
pytao.constraints.config.EleIsCloseConstraint
Bases: IsCloseConstraint
Constraint checking that two element observables are approximately equal.
Attributes:
| Name | Type | Description |
|---|---|---|
constraint_type |
str
|
Discriminator literal. Always |
obs_a |
EleObservables
|
First element observable. |
obs_b |
EleObservables
|
Second element observable. |
comparison |
EleIsClose
|
Comparison operator applied to the two observations. |
pytao.constraints.config.EleLessThanConstraint
Bases: IsLessConstraint
Constraint checking that obs_a is component-wise less than obs_b.
Attributes:
| Name | Type | Description |
|---|---|---|
constraint_type |
str
|
Discriminator literal. Always |
obs_a |
EleObservables
|
Left-hand side observable. |
obs_b |
EleObservables
|
Right-hand side observable. |
comparison |
EleLessThan
|
Less-than operator configuration. |
pytao.constraints.config.EleRegressionConstraint
Bases: RegressionConstraint
Constraint comparing current element observations against a saved reference.
Attributes:
| Name | Type | Description |
|---|---|---|
constraint_type |
str
|
Discriminator literal. Always |
obs |
EleObservables
|
Element observable to evaluate and compare. |
comparison |
EleIsClose
|
Comparison operator used to check current against reference. |