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(