Skip to content

Setup xml2optr to handle fringeQ calls

For discussion on Tuesday. I think we should include the Wollnick integrals in the optr tag of each quad. xml2optr should place a fringeQ call in sy.f only prior to the first quad, and then anytime it changes. Something like this:

  <element id="IOS:Q1" type="eq" s="91.48*mm" l="48.92*mm">
    <layout x="311.80775*mm" y="66377.769*mm" z="7906.9095*mm"/>
    <epics>
      <setpoint pv="IOS:Q1:POS:VOL" pol="pos" unit="V" min="0.0" max="10000.0"/>
    </epics>
    <optr eltrdv="-IOS:Q1:POS:VOL" effl="48.92*mm" aperr="2.540*cm" i_1="0.087" i_2="0.005" i_3="0.033" i_4="-0.234"/>
  </element>

We should also consider one more level of abstraction and putting quad types in a config so they can be changed more easily in future:

  <element id="IOS:Q1" type="eq" s="91.48*mm" l="48.92*mm">
    <layout x="311.80775*mm" y="66377.769*mm" z="7906.9095*mm"/>
    <epics>
      <setpoint pv="IOS:Q1:POS:VOL" pol="pos" unit="V" min="0.0" max="10000.0"/>
    </epics>
    <optr eltrdv="-IOS:Q1:POS:VOL">
      <xi:include href='../quad/eq_isis_type1.xml' />
    </optr>
  </element>
  <!-- Electrostatic quad. Skimmer radius 0.5"
  <quad effl="48.92*mm" aperr="2.540*cm" i_1="0.087" i_2="0.005" i_3="0.033" i_4="-0.234"/>

We should also consider refusing to run xml2optr without fringe field specified.

Edited by Spencer Kiy