Index: trunk/Mars/manalysis/MSoftwareTrigger.cc
===================================================================
--- trunk/Mars/manalysis/MSoftwareTrigger.cc	(revision 18478)
+++ trunk/Mars/manalysis/MSoftwareTrigger.cc	(revision 18479)
@@ -106,4 +106,6 @@
     MArrayF buf(160*num);
 
+    double avg = 0;
+
     for (int hw=0; hw<1440; hw++)
     {
@@ -121,7 +123,5 @@
             continue;
 
-        const UInt_t sw = idx[hw];
-
-        const Float_t *raw = fSignal->GetSamples(sw);
+        const Float_t *raw = fSignal->GetSamples(idx[hw]);
 
         Float_t *sum = buf.GetArray()+(hw/9)*num;
@@ -154,6 +154,5 @@
 */
 
-    Float_t max = 0;
-    double avg = 0;
+    Float_t max = -50000;
 
     const UInt_t nsum = buf.GetSize();
@@ -163,9 +162,10 @@
         Float_t v[4] = { 0, 0, 0, 0 };
 
-        for (Float_t *ptr=sum+20; ptr<sum+num; ptr++)
+        for (Float_t *ptr=sum+15; ptr<sum+num; ptr++)
         {
-            *ptr -= 0.6 * ptr[-20];
-            avg += *ptr;
-            v[idx++%4] = *ptr;
+            ptr[0] -= 0.5*ptr[-15];
+
+            avg += ptr[0];
+            v[idx++%4] = ptr[0];
 
             const Float_t min = *std::min_element(v, v+4);
@@ -175,5 +175,7 @@
     }
 
-    avg /= num*(1440-9);  // excluding the 0's from the broken DRS board
+    // Question: Should we also keep position and patch id?
+
+    avg /= (num-15)*(1440-24);
 
     fTriggerSignal->SetVal(max);
