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
```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 ```