diff --git a/src/CalcStats.py b/src/CalcStats.py
index 975968d7ceaf0bb81e3ecf3ca537c89ca5df2812..70d320fe7594f1af191cd465d6605c9c3ee35c66 100755
--- a/src/CalcStats.py
+++ b/src/CalcStats.py
@@ -8,7 +8,7 @@
 from tango import *
 #import matplotlib.pyplot as plt
 import numpy as np
-import scipy as sp
+import scipy.stats as sp
 import time, datetime
 import sys, os
 import math
@@ -252,6 +252,7 @@ class DeviceObj:
 			else:
 				self.acq_state &= ~STATE_ERR
 				self.acq_state &= ~TANGO_ERR
+				self.acq_state &= ~SAMPLES_ERR
 
 			# A=np.array([1,2, 3, 4, 5]) A[2:]=array([3, 4, 5]) B=np.array([6,7]) A=np.append(A[2:],B)
 			# sample_shift recovers the data shift in respect the bunch number
@@ -267,7 +268,7 @@ class DeviceObj:
 			#	plt.pause(0.0001)
 
 			if DATA_DBG:
-				print('Acquired',self.device_name,self.command)
+				print('Acquired',self.device_name,self.command,self.data[0])
 
 			self.bn_start = new_bn_start
 			self.bn_end = new_bn_end
@@ -277,11 +278,14 @@ class DeviceObj:
 			self.last_bn_start = bn_start
 			self.last_bn_end = bn_end
 
+			if DATA_DBG:
+				print("Start Device state", self.acq_state)
+
 		except DevFailed as df:	
 			self.bn_error = new_bn_end
 			self.acq_state |= ACQ_ERR
 			if ERR_DBG:
-				print('Error reading ', self.device_name,'/', self.command, ' bn=', int(bn_start), ' bnend=',int(bn_end))
+				print('TANGO ERROR: error reading ', self.device_name,'/', self.command, ' bn=', int(bn_start), ' bnend=',int(bn_end))
 				print(str(df))
 
 		# recovery data strategy, ask data once at a time, accept at maximum 5 errors
@@ -289,6 +293,9 @@ class DeviceObj:
 		data_tmp = np.array([])
 
 		if self.bn_error == new_bn_end:
+
+			if DATA_DBG:
+				print('Recovering device',self.device_name,self.command,self.data[0])
 			
 			self.acq_state |= RECOV_RUN
 
@@ -312,11 +319,15 @@ class DeviceObj:
 					consec_error = 0
 				except:
 					if ERR_DBG:
-						print('Max recovery error ', self.device_name,'/',self.command)
+						print('ERROR: get_data(), max recovery error ', self.device_name,'/',self.command)
+						
 					tango_error = tango_error + 1
 					consec_error = consec_error + 1
 					tmp = last_valid_val
 				
+				
+				
+				
 				# if more then 10 % of errors, stop recovery
 				if tango_error > (bn_end - bn_start + 1) * 0.1:
 					error_flag = True
@@ -343,6 +354,8 @@ class DeviceObj:
 				self.acq_state &= ~TANGO_ERR
 				self.acq_state &= ~ACQ_ERR					
 
+		if DATA_DBG:
+			print("End Device state", self.acq_state)
 
 
 
@@ -424,11 +437,11 @@ class DeviceObj:
 
 		except DevFailed as df:	
 			if ERR_DBG:
-				print('Configuration reading error ', self.device_name,'/',command)
+				print('TANGO ERROR: get_configuration(), configuration reading error ', self.device_name,'/',command)
 				print(str(df))
 		except:
 			if ERR_DBG:
-				print('Configuration reading error ', self.device_name,'/',command)
+				print('ERROR: get_configuration(), configuration reading error ', self.device_name,'/',command)
 
 
 	#
@@ -589,11 +602,11 @@ class DeviceObj:
 			
 		except DevFailed as df:	
 			if ERR_DBG:
-				print('Setting sequencer error ', self.device_name)
+				print('ERROR: set_sequencer(), setting sequencer error ', self.device_name)
 				print(str(df))
 		except:
 			if ERR_DBG:
-				print('Setting sequencer error ', self.device_name)
+				print('ERROR: set_sequencer(), etting sequencer error ', self.device_name)
 
 
 	#
@@ -610,7 +623,7 @@ class DeviceObj:
 
 			if (self.acq_state & (STATE_ERR | ACQ_ERR | TANGO_ERR | SAMPLES_ERR)) or ((self.acq_state & ACQ_RUN) == 0):
 				if ERR_DBG:
-					print('Skip filtering',self.device_name,self.command,', state',self.acq_state)
+					print('ERROR: filter_data(), Skip filtering',self.device_name,self.command,', state',self.acq_state)
 				return
 
 			# sort the array and get the indexes of the sorted array
@@ -641,6 +654,8 @@ class DeviceObj:
 				# get the indexes of the elements above the maximum threshold
 				self.max_thres_thres_idx = np.nonzero(self.data > self.max_thres_val_tmp)[0]
 
+
+
 			# remove NaN (np.nan)
 			self.nan_idx = np.argwhere(np.isnan(self.sort_data));		
 
@@ -655,14 +670,18 @@ class DeviceObj:
 			self.sort_filt_data = [self.data[index] for index in self.sort_data_idx]
 
 			if len(self.sort_filt_data) <= self.min_process_samples:
+				if ERR_DBG:
+					print('ERROR: filter_data(), number of valid samples under threshold', self.device_name)
 				self.acq_state |= EMPTY_ERR
 			else:
-				self.acq_state &= ~EMPTY_ERR
+				self.acq_state &= ~EMPTY_ERR			
+
 
 		except:
 			if ERR_DBG:
 				print('ERROR: filter_data(),',self.device_name)
 			self.acq_state |= EMPTY_ERR
+			
 			return
 
 	#
@@ -717,15 +736,14 @@ class DeviceObj:
 			#[self.valid_samples,self.minmax,self.avg,self.std,self.skew,self.kurt] = stats.describe(self.sort_filt_data)
 			#self.median = self.sort_filt_data[int(len(self.valid_samplest) / 2) - 1];
 			self.valid_samples = len(self.sort_filt_data)
-
-			self.minmax = np.ptp(self.sort_filt_data)
-			self.mean = np.mean(self.sort_filt_data)
-			self.min = np.min(self.sort_filt_data)
-			self.max = np.max(self.sort_filt_data)
-			self.median = self.sort_filt_data[int(self.valid_samples / 2) - 1];
-			self.std = np.std(self.sort_filt_data)
-			self.skew = sp.stats.skew(self.sort_filt_data)
-			self.kurt = sp.stats.kurtosis(self.sort_filt_data)
+			self.minmax = np.ptp(self.sort_filt_data)		
+			self.mean = np.mean(self.sort_filt_data)		
+			self.min = np.min(self.sort_filt_data)			
+			self.max = np.max(self.sort_filt_data)			
+			self.median = self.sort_filt_data[int(self.valid_samples / 2) - 1];		
+			self.std = np.std(self.sort_filt_data)			
+			self.skew = sp.skew(self.sort_filt_data)		
+			self.kurt = sp.kurtosis(self.sort_filt_data)			
 
 			if DATA_DBG:
 				print(self.device_name,'/',self.command, ' valid samples ', self.valid_samples)
@@ -980,7 +998,6 @@ while 1:
 	# exit from acquisition
 	if abort_flag:
 		break
-
 	# pause acquisition
 	while pause_flag:
 		pause_flag = selfseq_dev.read_attribute('PauseFlag').value