diff --git a/TZPGcalc.py b/TZPGcalc.py index e934626a323deedacc5457224b61a1bfb138b627..4b0688fd180d8a5e692c7e4a6d426e5e939d6dd8 100644 --- a/TZPGcalc.py +++ b/TZPGcalc.py @@ -31,6 +31,39 @@ KBS_F = f1 - d # KBS focus distance from TZPG # number of membrane to show SampleN = 7 +TZPG_db = { + 'Custom': { + 'design_nrj': 860, + 'TZPGwH': 1, + 'TZPGwV': 1, + 'TZPGoffaxis': 0.75, + 'grating': 3.8}, + 'O': { + 'design_nrj': 530, + 'TZPGwH': 0.8, + 'TZPGwV': 0.8, + 'TZPGoffaxis': 0.55, + 'grating': 3.1}, + 'Fe': { + 'design_nrj': 715, + 'TZPGwH': 0.8, + 'TZPGwV': 0.8, + 'TZPGoffaxis': 0.55, + 'grating': 3.1}, + 'Ni': { + 'design_nrj': 860, + 'TZPGwH': 0.8, + 'TZPGwV': 0.8, + 'TZPGoffaxis': 0.55, + 'grating': 3.1}, + 'Gd': { + 'design_nrj': 1210, + 'TZPGwH': 0.8, + 'TZPGwV': 0.8, + 'TZPGoffaxis': 0.55, + 'grating': 3.1}, +} + class TZPGcalc(): def __init__(self): self.initFig() @@ -374,6 +407,26 @@ class TZPGcalc(): self.UpdateFig() # TZPG part + self.type = widgets.Dropdown( + options=TZPG_db.keys(), + value='Custom', + description='Type:', + disabled=False + ) + + def TZPGtype(change): + v = TZPG_db[change.new] + self.design_nrj_slider.value = v['design_nrj'] + self.TZPGwH_slider.value = v['TZPGwH'] + self.TZPGwV_slider.value = v['TZPGwV'] + self.TZPGoffaxis_slider.value = v['TZPGoffaxis'] + self.grating_slider.value = v['grating'] + # necessary to recompute grating pitch and outer zone plate width + self.UpdateFig() + + self.type.observe(TZPGtype, names='value') + + self.nrj_slider = widgets.FloatRangeSlider( value=[840., 880.], min=450., @@ -418,14 +471,15 @@ class TZPGcalc(): ) self.dr_label = widgets.Label(value='dr') self.d_label = widgets.Label(value='dr') - TZPGTab = VBox(children=[HBox([widgets.Label(value='Energy (eV):'), self.nrj_slider]), - HBox([widgets.Label(value='Design Energy (eV):'), self.design_nrj_slider]), - HBox([widgets.Label(value=r'Grating $\theta$ (mrad):'), self.grating_slider]), - self.d_label, self.dr_label, - HBox([widgets.Label(value='TZPG horiz. width (mm):'), self.TZPGwH_slider]), - HBox(children=[HBox([widgets.Label(value='TZPG vert. width (mm):'), self.TZPGwV_slider]), - HBox([widgets.Label(value='TZPG off axis (mm):'), self.TZPGoffaxis_slider]) - ])]) + TZPGTab = VBox(children=[self.type, + HBox([widgets.Label(value='Energy (eV):'), self.nrj_slider]), + HBox([widgets.Label(value='Design Energy (eV):'), self.design_nrj_slider]), + HBox([widgets.Label(value=r'Grating $\theta$ (mrad):'), self.grating_slider]), + self.d_label, self.dr_label, + HBox([widgets.Label(value='TZPG horiz. width (mm):'), self.TZPGwH_slider]), + HBox(children=[HBox([widgets.Label(value='TZPG vert. width (mm):'), self.TZPGwV_slider]), + HBox([widgets.Label(value='TZPG off axis (mm):'), self.TZPGoffaxis_slider]) + ])]) # sample part self.samz_slider = widgets.FloatSlider(