Index: trunk/Mars/msignal/MFilterData.cc
===================================================================
--- trunk/Mars/msignal/MFilterData.cc	(revision 17871)
+++ trunk/Mars/msignal/MFilterData.cc	(revision 17872)
@@ -54,4 +54,21 @@
     fName  = name  ? name  : "MFilterData";
     fTitle = title ? title : "Class to filter the data";
+
+    // Default weights
+    fWeights.resize(14);
+    fWeights[ 0] = -0.217305;
+    fWeights[ 1] = -0.213277;
+    fWeights[ 2] = -0.193537;
+    fWeights[ 3] = -0.181686;
+    fWeights[ 4] = -0.15356;
+    fWeights[ 5] = -0.129926;
+    fWeights[ 6] = -0.0792033;
+    fWeights[ 7] = -0.0219311;
+    fWeights[ 8] =  0.0550301;
+    fWeights[ 9] =  0.127364;
+    fWeights[10] =  0.206711;
+    fWeights[11] =  0.246864;
+    fWeights[12] =  0.271012;
+    fWeights[13] =  0.283444;
 }
 
@@ -71,49 +88,14 @@
         return kFALSE;
 
-    if (fWeights.size()==0)
-    {
-        fWeights.resize(14);
-        fWeights[ 0] = -0.217305;
-        fWeights[ 1] = -0.213277;
-        fWeights[ 2] = -0.193537;
-        fWeights[ 3] = -0.181686;
-        fWeights[ 4] = -0.15356;
-        fWeights[ 5] = -0.129926;
-        fWeights[ 6] = -0.0792033;
-        fWeights[ 7] = -0.0219311;
-        fWeights[ 8] =  0.0550301;
-        fWeights[ 9] =  0.127364;
-        fWeights[10] =  0.206711;
-        fWeights[11] =  0.246864;
-        fWeights[12] =  0.271012;
-        fWeights[13] =  0.283444;
-    }
-
     return kTRUE;
 }
 
-// --------------------------------------------------------------------------
-//
-//
-Int_t MFilterData::Process()
+void MFilterData::Filter(UShort_t npix, UShort_t nroi, const Float_t *beg, Float_t *out) const
 {
-    // FIXME: Implement an alternative: the simple filter
-    // (p[10]+p[11]+p[12]) - (p[0]+p[1]+p[2])
-    // Store first sum in ring-buffer
-
-    const uint16_t nroi = fSignalIn->GetNumSamples();
-    const uint16_t npix = fSignalIn->GetNumPixels();
-    const uint16_t nw   = fWeights.size();
-    //const uint16_t last = nroi-1;
-
-    if (fSignalIn!=fSignalOut)
-        fSignalOut->InitSamples(nroi); // contains setting to 0
+    const uint16_t nw = fWeights.size();
 
     const float *begw = fWeights.data();
     const float *endw = fWeights.data()+nw;
 
-    const Float_t *beg = fSignalIn->GetSamples();
-
-    Float_t *out = fSignalOut->GetSamples();
     for (const Float_t *in=beg; in<beg+nroi*npix; )
     {
@@ -146,4 +128,22 @@
         // }
     }
+}
+
+// --------------------------------------------------------------------------
+//
+//
+Int_t MFilterData::Process()
+{
+    // FIXME: Implement an alternative: the simple filter
+    // (p[10]+p[11]+p[12]) - (p[0]+p[1]+p[2])
+    // Store first sum in ring-buffer
+
+    const uint16_t nroi = fSignalIn->GetNumSamples();
+    const uint16_t npix = fSignalIn->GetNumPixels();
+
+    if (fSignalIn!=fSignalOut)
+        fSignalOut->InitSamples(nroi); // contains setting to 0
+
+    Filter(npix, nroi, fSignalIn->GetSamples(), fSignalOut->GetSamples());
 
     return kTRUE;
Index: trunk/Mars/msignal/MFilterData.h
===================================================================
--- trunk/Mars/msignal/MFilterData.h	(revision 17871)
+++ trunk/Mars/msignal/MFilterData.h	(revision 17872)
@@ -34,4 +34,6 @@
     void SetAverage(const UInt_t n) { fWeights.assign(n, 1./n); }
 
+    void Filter(UShort_t npix, UShort_t nroi, const Float_t *beg, Float_t *out) const;
+
     ClassDef(MFilterData, 0) // Class to filter the calibrated data
 };
