Index: /trunk/Mars/manalysis/MSoftwareTriggerCalc.cc
===================================================================
--- /trunk/Mars/manalysis/MSoftwareTriggerCalc.cc	(revision 18481)
+++ /trunk/Mars/manalysis/MSoftwareTriggerCalc.cc	(revision 18482)
@@ -25,8 +25,8 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-//   MSoftwareTrigger
+//   MSoftwareTriggerCalc
 //
 //////////////////////////////////////////////////////////////////////////////
-#include "MSoftwareTrigger.h"
+#include "MSoftwareTriggerCalc.h"
 
 #include <algorithm>
@@ -37,9 +37,9 @@
 #include "MParList.h"
 
-#include "MParameters.h"
 #include "MRawEvtData.h"
+#include "MSoftwareTrigger.h"
 #include "MPedestalSubtractedEvt.h"
 
-ClassImp(MSoftwareTrigger);
+ClassImp(MSoftwareTriggerCalc);
 
 using namespace std;
@@ -49,8 +49,8 @@
 // Default constructor. 
 //
-MSoftwareTrigger::MSoftwareTrigger(const char *name, const char *title)
-    : fRawEvt(0), fSignal(0), fTriggerSignal(0), fTriggerBaseline(0)
+MSoftwareTriggerCalc::MSoftwareTriggerCalc(const char *name, const char *title)
+    : fRawEvt(0), fSignal(0), fTrigger(0)
 {
-    fName  = name  ? name  : "MSoftwareTrigger";
+    fName  = name  ? name  : "MSoftwareTriggerCalc";
     fTitle = title ? title : "Calculate the FACT trigger in software";
 }
@@ -58,5 +58,5 @@
 // --------------------------------------------------------------------------
 //
-Int_t MSoftwareTrigger::PreProcess(MParList *pList)
+Int_t MSoftwareTriggerCalc::PreProcess(MParList *pList)
 {
     fRawEvt = (MRawEvtData*)pList->FindObject("MRawEvtData");//, AddSerialNumber(fNamePedestalSubtractedEvt));
@@ -74,13 +74,8 @@
     }
 
-    fTriggerSignal = (MParameterD*)pList->FindCreateObj("MParameterD","SoftwareTriggerSignal");
-    if (!fTriggerSignal)
+    fTrigger = (MSoftwareTrigger*)pList->FindCreateObj("MSoftwareTrigger");
+    if (!fTrigger)
         return kFALSE;
 
-    fTriggerBaseline = (MParameterD*)pList->FindCreateObj("MParameterD","SoftwareTriggerBaseline");
-    if (!fTriggerBaseline)
-        return kFALSE;
-
-    *fLog << flush << inf;
     return kTRUE;
 }
@@ -88,5 +83,5 @@
 // --------------------------------------------------------------------------
 //
-Bool_t MSoftwareTrigger::ReInit(MParList *pList)
+Bool_t MSoftwareTriggerCalc::ReInit(MParList *pList)
 {
     // FIXME: Check number of samples!
@@ -96,5 +91,5 @@
 // --------------------------------------------------------------------------
 //
-Int_t MSoftwareTrigger::Process()
+Int_t MSoftwareTriggerCalc::Process()
 {
     const UShort_t *idx = fRawEvt->GetPixelIds();
@@ -154,12 +149,14 @@
 */
 
-    Float_t max = -50000;
+    Float_t  max = -50000;
+    UShort_t pos = 0;
+    Short_t  patch = -1;
 
-    const UInt_t nsum = buf.GetSize();
-    for (Float_t *sum=buf.GetArray(); sum<buf.GetArray()+nsum; sum+=num)
+    for (int i=0; i<160; i++)
     {
         int idx = 0;
         Float_t v[4] = { 0, 0, 0, 0 };
 
+        Float_t *sum=buf.GetArray() + num*i;
         for (Float_t *ptr=sum+15; ptr<sum+num; ptr++)
         {
@@ -170,6 +167,10 @@
 
             const Float_t min = *std::min_element(v, v+4);
-            if (min>max)
-                max = min;
+            if (min<=max)
+                continue;
+
+            max = min;
+            pos = ptr-sum+beg;
+            patch = i;
         }
     }
@@ -179,9 +180,6 @@
     avg /= (num-15)*(1440-24);
 
-    fTriggerSignal->SetVal(max);
-    fTriggerSignal->SetReadyToSave();
-
-    fTriggerBaseline->SetVal(avg);
-    fTriggerBaseline->SetReadyToSave();
+    fTrigger->SetData(patch, avg, pos, max);
+    fTrigger->SetReadyToSave();
 
     return kTRUE;
@@ -190,5 +188,5 @@
 // --------------------------------------------------------------------------
 //
-Int_t MSoftwareTrigger::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
+Int_t MSoftwareTriggerCalc::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
 {
     return kTRUE;
Index: /trunk/Mars/manalysis/MSoftwareTriggerCalc.h
===================================================================
--- /trunk/Mars/manalysis/MSoftwareTriggerCalc.h	(revision 18481)
+++ /trunk/Mars/manalysis/MSoftwareTriggerCalc.h	(revision 18482)
@@ -1,4 +1,4 @@
-#ifndef MARS_MSoftwareTrigger
-#define MARS_MSoftwareTrigger
+#ifndef MARS_MSoftwareTriggerCalc
+#define MARS_MSoftwareTriggerCalc
 
 #ifndef MARS_MTask
@@ -7,14 +7,13 @@
 
 class MRawEvtData;
-class MParameterD;
+class MSoftwareTrigger;
 class MPedestalSubtractedEvt;
 
-class MSoftwareTrigger : public MTask
+class MSoftwareTriggerCalc : public MTask
 {
 private:
     MRawEvtData *fRawEvt;
     MPedestalSubtractedEvt *fSignal;
-    MParameterD *fTriggerSignal;
-    MParameterD *fTriggerBaseline;
+    MSoftwareTrigger *fTrigger;
 
     Int_t  PreProcess(MParList *pList);
@@ -24,9 +23,9 @@
 
 public:
-    MSoftwareTrigger(const char *name=NULL, const char *title=NULL);
+    MSoftwareTriggerCalc(const char *name=NULL, const char *title=NULL);
 
     virtual Bool_t InitArrays(Int_t) { return kTRUE; }
 
-    ClassDef(MSoftwareTrigger, 0)   // Time And Charge Extractor Base Class
+    ClassDef(MSoftwareTriggerCalc, 0)   // Time And Charge Extractor Base Class
 };
 
