diff --git a/azimuthal_integration_2d_detector_images.py b/azimuthal_integration_2d_detector_images.py
new file mode 100644
index 0000000000000000000000000000000000000000..2f9dff2a6b8c3df03c4f07c3d1a9f2ef338a499e
--- /dev/null
+++ b/azimuthal_integration_2d_detector_images.py
@@ -0,0 +1,39 @@
+import pyFAI
+import fabio
+import os
+import glob
+
+def integrate_ims_in_dir(path, dtype_im=".tif", dtype_int=".dat"):
+    """
+    Azimuthally integrate all images in directory <path> with ending <dtype_im>
+    to patterns of ending <dtype_int> if not already integrated.
+    :param 'str' path: path to directory where to apply the azimuthal integration
+    :param 'str' dtype_im: data type/filename ending of image file
+    :param 'str' dtype_int: data type/filename ending of pattern file
+    """
+    fnames_ims = glob(os.path.join(path, "*" + dtype_im))
+    for fname_im in fnames_ims:
+        im = fabio.open(fname_im).data
+        fname_int = fname_im[:-len(dtype_im)] + dtype_int
+        if os.path.isfile(fname_int):
+            print(f"already integrated: {fname_im}")
+            continue
+        else:
+            ai.integrate1d(data=im,
+                           npt=1000,
+                           filename=fname_int,
+                           mask=mask,
+                           polarization_factor=0.95,
+                           unit="q_A^-1")
+            print(f"integrate: {fname_im}")
+
+if __name__ == "__main__":
+    # define directories, filenames and initiate pyFAI object for azimuthal integration
+    path = "/Users/admin/data/20_Pt_tf/watchdog_test"
+    fname_poni = "/Users/admin/data/20_Pt_tf/alaci/poni_avg_phiscan.poni"
+    fname_mask = "/Users/admin/data/20_Pt_tf/alaci/mask_20200413.edf" # empty string/None/False if no mask available
+    ai = pyFAI.load(fname_poni)
+    mask = fabio.open(fname_mask).data if fname_mask else None
+
+    # integrate all images in directory if not already integrated
+    integrate_ims_in_dir(path)
\ No newline at end of file