Index: fact/tools/marsmacros/singlepe.C
===================================================================
--- fact/tools/marsmacros/singlepe.C	(revision 14175)
+++ fact/tools/marsmacros/singlepe.C	(revision 14176)
@@ -199,5 +199,5 @@
         MBinning binsx, binsy;
         binsx.SetEdges(fSingles->GetNumPixels(), -0.5, fSingles->GetNumPixels()-0.5);
-        binsy.SetEdges(300, -7.5*w, (60-7.5)*w);
+        binsy.SetEdges(2*150, -2*7.5*w, 2*(60-7.5)*w);
 
         MH::SetBinning(fSignal, binsx, binsy);
@@ -283,5 +283,5 @@
 MSingles *fSingles;
 
-TH1F *fluct1 = new TH1F("", "", 100, -50, 50);
+TH1F *fluct1 = new TH1F("", "", 200, -200, 200);
 TH1F *fluct2 = new TH1F("", "", 100, -50, 50);
 
@@ -322,4 +322,5 @@
     const UInt_t end_skip         = 10;
     const UInt_t integration_size = 10*3;
+    const UInt_t max_search_window = 30;
 
     vector<float> val(roi-navg);//result of first sliding average
@@ -341,5 +342,5 @@
 
         //peak finding via threshold
-        for (UInt_t i=start_skip; i<roi-navg-end_skip-10; i++)
+        for (UInt_t i=start_skip; i<roi-navg-end_skip-30; i++)
         {
             //search for threshold crossings
@@ -352,14 +353,16 @@
 
             //search for maximum after threshold crossing
-            UInt_t k_max = 0;
-            for (UInt_t k=i; k<i+15 && k < roi-navg-end_skip-10; k++)
+            UInt_t k_max = i+5;
+            for (UInt_t k=i+5; k<i+max_search_window; k++)
             {
-                if (val[k+1] > val[k])
+                if (val[k] > val[k_max])
                     k_max = k;
             }
 
+            if (k_max == i+5 || k_max == i + max_search_window-1) continue;
+
             //search for half maximum before maximum
             UInt_t k_half_max = 0;
-            for (UInt_t k=k_max; k>k_max-20; k--)
+            for (UInt_t k=k_max; k>k_max-25; k--)
             {
                 if (val[k-1] < val[k_max]/2 &&
@@ -367,7 +370,15 @@
                 {
                     k_half_max = k;
+                    break;
                 }
             }
-
+            if (k_half_max > roi-navg-end_skip-max_search_window - integration_size)
+                continue;
+            if (k_half_max == 0)
+                continue;
+            if (k_max - k_half_max > 14)
+                continue;
+
+            fluct2->Fill(k_max - k_half_max);
 
             // Evaluate arrival time more precisely!!!
@@ -378,8 +389,8 @@
             single.fTime   = k_half_max;
 
+
             // Crossing of the threshold is at 5
             for (UInt_t j=k_half_max; j<k_half_max+integration_size; j++)
                 single.fSignal += ptr[j];
-
             result.push_back(single);
 
