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.