diff --git a/doc/BOZ analysis part I parameters determination.ipynb b/doc/BOZ analysis part I parameters determination.ipynb
index 82f8741b4c106321dbadebfe1404186de0fdafb1..0ccc5807432373fe9ff6c5d60aa996794f337ddc 100644
--- a/doc/BOZ analysis part I parameters determination.ipynb	
+++ b/doc/BOZ analysis part I parameters determination.ipynb	
@@ -48,7 +48,9 @@
     "darkrun = 478\n",
     "run = 477\n",
     "module = 15\n",
-    "gain = 0.5"
+    "gain = 0.5\n",
+    "sat_level = 500\n",
+    "rois_th = 1"
    ]
   },
   {
@@ -174,9 +176,11 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "h, f = boz.inspect_histogram(params.proposal, params.run, params.module,\n",
+    "h, f = boz.inspect_histogram(params.arr,\n",
+    "                             params.arr_dark,\n",
     "                             mask=params.get_mask() #, extra_lines=True\n",
     "                         )\n",
+    "f.suptitle(f'p:{params.proposal} r:{params.run} d:{params.darkrun}')\n",
     "f.savefig(path+f'p{params.proposal}-r{params.run}-d{params.darkrun}-histogram.png', dpi=300)"
    ]
   },
@@ -187,18 +191,6 @@
     "adding guide to the eye"
    ]
   },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "ax = f.gca()\n",
-    "pf = np.polyfit([60, 220], [7, 4], 1)\n",
-    "ax.plot([40, 400], 2*10**np.polyval(pf, [40, 400]))\n",
-    "ax.plot([40, 400], 0.25*2*10**np.polyval(pf, [40, 400]))"
-   ]
-  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -212,7 +204,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "params.rois_th = 4\n",
+    "params.rois_th = rois_th\n",
     "params.rois = boz.find_rois_from_params(params)"
    ]
   },
@@ -265,7 +257,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "params.sat_level = 511\n",
+    "params.sat_level = sat_level\n",
     "res = boz.average_module(params.arr, dark=dark,\n",
     "                         ret='mean', mask=params.get_mask(), sat_roi=params.rois['sat'],\n",
     "                         sat_level=params.sat_level)\n",
diff --git a/scripts/boz_parameters_job.sh b/scripts/boz_parameters_job.sh
index a8c8013f123d31420b0a4f9f3c4d4e3f13d86edc..0d6dbedef745aa4f30c3923fb7d1571852ea2ce5 100644
--- a/scripts/boz_parameters_job.sh
+++ b/scripts/boz_parameters_job.sh
@@ -9,6 +9,7 @@ PROPOSAL=2619
 DARK=$1
 RUN=$2
 GAIN=$3
+ROISTH=${4:-1}
 MODULE=15
 
 source /etc/profile.d/modules.sh
@@ -16,7 +17,7 @@ module load exfel
 module load exfel_anaconda3/1.1
 
 echo processing run $RUN
-mkdir r$RUN
-papermill 'BOZ analysis part I parameters determination.ipynb' r$RUN/output.ipynb \
+mkdir ../../processed_runs/r$RUN
+papermill 'BOZ analysis part I parameters determination.ipynb' ../../processed_runs/r$RUN/output.ipynb \
  -p proposal $PROPOSAL -p darkrun $DARK -p run $RUN -p module $MODULE \
- -p gain $GAIN -k xfel
+ -p gain $GAIN -p rois_th $ROISTH -k xfel
diff --git a/src/toolbox_scs/routines/boz.py b/src/toolbox_scs/routines/boz.py
index 398dc703e9d649359566fad9b4ccc82bc7e3bbab..e208e61347800c610086d1a978d4d7d0c825fe06 100644
--- a/src/toolbox_scs/routines/boz.py
+++ b/src/toolbox_scs/routines/boz.py
@@ -497,29 +497,18 @@ def inspect_rois(data_mean, rois, threshold=None, allrois=False):
     return fig
 
 
-def histogram_module(proposalNB, runNB, moduleNB, mask=None):
+def histogram_module(arr, mask=None):
     """Compute a histogram of the 9 bits raw pixel values over a module.
 
     Inputs
     ------
-    proposalNB: proposal number
-    runNB: run number
-    moduleNB: module number
+    arr: dask array of reshaped dssc data (trainId, pulseId, x, y)
     mask: optional bad pixel mask
 
     Returns
     -------
     histogram
     """
-    run = open_run(proposal=proposalNB, run=runNB)
-
-    # DSSC
-    source = f'SCS_DET_DSSC1M-1/DET/{moduleNB}CH0:xtdf'
-    key = 'image.data'
-
-    arr = run[source, key].dask_array()
-    arr = arr.rechunk((100, -1, -1, -1))
-
     if mask is not None:
         w = da.repeat(da.repeat(da.array(mask[None, None, :, :]),
                 arr.shape[1], axis=1), arr.shape[0], axis=0)
@@ -529,30 +518,37 @@ def histogram_module(proposalNB, runNB, moduleNB, mask=None):
         return da.bincount(arr.ravel(), minlength=512).compute()
 
 
-def inspect_histogram(proposalNB, runNB, moduleNB,
-        mask=None, extra_lines=False):
+def inspect_histogram(arr, arr_dark=None, mask=None, extra_lines=False):
     """Compute and plot a histogram of the 9 bits raw pixel values.
 
     Inputs
     ------
-    proposalNB: proposal number
-    runNB: run number
-    moduleNB: module number
+    arr: dask array of reshaped dssc data (trainId, pulseId, x, y)
+    arr: dask array of reshaped dssc dark data (trainId, pulseId, x, y)
     mask: optional bad pixel mask
     extra_lines: boolean, default False, plot extra lines at period values
 
     Returns
     -------
-    histogram
+    (h, hd): histogram of arr, arr_dark
     figure
     """
-    h = histogram_module(proposalNB, runNB, moduleNB, mask=mask)
     from matplotlib.ticker import MultipleLocator
 
     f = plt.figure(figsize=(6, 3))
-    plt.plot(np.arange(2**9), h, marker='o',
+    h = histogram_module(arr, mask=mask)
+    Sum_h = np.sum(h)
+    plt.plot(np.arange(2**9), h/Sum_h, marker='o',
             ms=3, markerfacecolor='none', lw=1)
 
+    if arr_dark is not None:
+        hd = histogram_module(arr_dark, mask=mask)
+        Sum_hd = np.sum(hd)
+        plt.plot(np.arange(2**9), hd/Sum_hd, marker='o',
+                ms=3, markerfacecolor='none', lw=1, c='k', alpha=.5)
+    else:
+        hd = None
+
     if extra_lines:
         for k in range(50, 271):
             if not (k - 2) % 8:
@@ -563,17 +559,14 @@ def inspect_histogram(proposalNB, runNB, moduleNB,
                 plt.axvline(k, c='r', alpha=0.3, ls='--')
 
     plt.axvline(271, c='C1', alpha=0.5, ls='--')
-    plt.fill_between(np.arange(2**9)[30:51], h[30:51], 1, alpha=0.5)
 
-    plt.ylim([1, None])
     plt.xlim([0, 2**9-1])
     plt.yscale('log')
     plt.axes().xaxis.set_minor_locator(MultipleLocator(10))
     plt.xlabel('DSSC pixel value')
-    plt.ylabel('counts')
-    plt.title(f'p{proposalNB} run {runNB}')
+    plt.ylabel('count frequency')
 
-    return h, f
+    return (h, hd), f
 
 
 def load_dssc_module(proposalNB, runNB, moduleNB=15,