issues
search
pcdshub
/
solid-attenuator
LCLS Solid Attenuator System IOC
https://pcdshub.github.io/solid-attenuator
Other
1
stars
4
forks
source link
Verify filter calculations in test suite
#58
Closed
klauer
closed
3 years ago
klauer
commented
3 years ago
Add some quick test cases
Use test cases generated from
lcls_beamline_toolbox
-based example
```python def _get_thickness_both(self, transmission, E): """ Calculate silicon thickness in microns to achieve the desired transmission """ diamond_thickness = self.diamond.get_thickness(transmission, E * 1e3) * 1e6 if diamond_thickness > self.max_diamond: diamond_thickness = self.max_diamond Td = self.diamond.transmission(thickness=diamond_thickness * 1e-6) energy = self.diamond.energy Td = np.interp(E * 1e3, energy, Td) Ts = transmission / Td silicon_thickness = self.silicon.get_thickness(Ts, E * 1e3) * 1e6 return diamond_thickness, silicon_thickness def _get_thickness(self, transmission, E): """ Calculate silicon thickness in microns to achieve the desired transmission """ thickness = self.silicon.get_thickness(transmission, E * 1e3) * 1e6 return thickness def blade_insertions(self, transmission, E): d_thickness, s_thickness = self._get_thickness_both(transmission, E) # figure out binary representation of transmission with powers of 2 d_multiplier = d_thickness / 10 d_multiplier = int(d_multiplier) # print(np.binary_repr(int(d_multiplier), width=8)) d_blade_insertions = np.binary_repr(d_multiplier, width=8) # figure out binary representation of transmission with powers of 2 s_multiplier = s_thickness / 20 s_multiplier = int(s_multiplier) # print(s_multiplier) # print(np.binary_repr(int(s_multiplier), width=10)) s_blade_insertions = np.binary_repr(s_multiplier, width=10) return d_blade_insertions, s_blade_insertions ```
lcls_beamline_toolbox
-based example