Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 4965)
+++ trunk/MagicSoft/Mars/Changelog	(revision 4966)
@@ -20,4 +20,61 @@
                                                  -*-*- END OF LINE -*-*-
 
+ 2004/09/13: Thomas Bretz
+
+   * merpp.cc:
+     - added MTrigger* containers to output
+
+   * mastro/MAstro.[h,cc]:
+     - added member function GetDistOnPlain
+
+   * mbase/MDirIter.[h,cc]:
+     - renamed Check to CheckEntry
+
+   * mbase/MMath.[h,c]:
+     - added functions for parabolic interpolation
+
+   * mbase/MStatusArray.[h,cc]:
+     - added functions to access contents
+
+   * mhbase/MBinning.[h,cc]:
+     - added RemoveFirstEdge
+     - added RemoveLastEdge
+     - removed some obsolete const-casts
+
+   * mhbase/MH.[h,cc]:
+     - added RemoveFirstBin
+
+   * mhist/MHEffectiveOnTime.[h,cc]:
+     - fixed number of bins
+     - remove first edge when finalizing
+
+   * mjobs/MJStar.cc:
+     - removed a duplicate line
+
+   * mpointing/MPointing.[h,cc]:
+     - added support for TVector3
+     - added ClassDef and ClassImp for AltAz
+     - added ClassDef and ClassImp for ZdAz
+
+   * mpointing/MSrcPosFromModel.[h,cc]:
+     - changed to directly calculate the source position 
+       from a pointing model
+
+   * mpointing/PointingLinkDef.h:
+     - added AltAz
+     - added ZdAz
+     
+   * mreport/MReportTrigger.[h,cc]:
+     - removed '!' from data members
+     - increased ClassDef to 2
+
+   * mstarcam/MStarCamTrans.cc:
+     - added a single line of comment
+
+   * mtrigger/MTrigger*.[h,cc]:
+     - updated class description and title
+
+
+
  2004/09/11: Markus Gaug
  
@@ -58,4 +115,5 @@
    * mbadpixels/BadPixelsLinkDef.h
      - new class for the intensity calibration
+
 
 
@@ -81,4 +139,5 @@
    * mhcalib/MHCalibrationTestTimePix.[h,cc]
      - removed
+
 
 
Index: trunk/MagicSoft/Mars/mastro/MAstro.cc
===================================================================
--- trunk/MagicSoft/Mars/mastro/MAstro.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mastro/MAstro.cc	(revision 4966)
@@ -36,4 +36,6 @@
 
 #include "MTime.h"    // MTime::GetGmst
+
+#include "MAstroCatalog.h" // FIXME: replace by MVector3!
 
 using namespace std;
@@ -540,2 +542,24 @@
     return (Int_t)TMath::Floor(period)-284;
 }
+
+// --------------------------------------------------------------------------
+//
+// Returns the distance in x,y between two polar-vectors (eg. Alt/Az, Ra/Dec)
+// projected on aplain in a distance dist. For Magic this this the distance
+// of the camera plain (1700mm) dist also determins the unit in which
+// the TVector2 is returned.
+//
+// v0 is the reference vector (eg. the vector to the center of the camera)
+// v1 is the vector to which we determin the distance on the plain
+//
+//  (see also MStarCamTrans::Loc0LocToCam())
+//
+TVector2 MAstro::GetDistOnPlain(const TVector3 &v0, TVector3 v1, Double_t dist)
+{
+    v1.RotateZ(-v0.Phi());
+    v1.RotateY(-v0.Theta());
+    v1.RotateZ(-TMath::Pi()/2); // exchange x and y
+    v1 *= dist/v1.Z();
+
+    return v1.XYvector(); //TVector2(v1.Y(), -v1.X());//v1.XYvector();
+}
Index: trunk/MagicSoft/Mars/mastro/MAstro.h
===================================================================
--- trunk/MagicSoft/Mars/mastro/MAstro.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mastro/MAstro.h	(revision 4966)
@@ -5,4 +5,9 @@
 #include <TROOT.h>
 #endif
+#ifndef ROOT_TVector2
+#include <TVector2.h>
+#endif
+
+class TVector3;
 
 class MAstro
@@ -60,4 +65,6 @@
     static Int_t    GetMagicPeriod(Double_t mjd);
 
+    static TVector2 GetDistOnPlain(const TVector3 &v0, TVector3 v1, Double_t dist=1);
+
     ClassDef(MAstro, 0)
 };
Index: trunk/MagicSoft/Mars/mbase/MDirIter.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MDirIter.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mbase/MDirIter.cc	(revision 4966)
@@ -244,5 +244,5 @@
 //  - have read permission
 //
-Bool_t MDirIter::Check(const TString n) const
+Bool_t MDirIter::CheckEntry(const TString n) const
 {
     // Check . and ..
@@ -298,5 +298,5 @@
     const char *n = gSystem->GetDirEntry(fDirPtr);
     if (n)
-        return nocheck || Check(n) ? ConcatFileName(fCurrentPath->GetName(), n) : Next();
+        return nocheck || CheckEntry(n) ? ConcatFileName(fCurrentPath->GetName(), n) : Next();
 
     // Otherwise close directory and try to get next entry
Index: trunk/MagicSoft/Mars/mbase/MDirIter.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MDirIter.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mbase/MDirIter.h	(revision 4966)
@@ -18,5 +18,5 @@
     void   *Open();
     void    Close();
-    Bool_t  Check(const TString n) const;
+    Bool_t  CheckEntry(const TString n) const;
     Int_t   IsDir(const char *dir) const;
     Bool_t  MatchFilter(const TString &name, const TString &filter) const;
Index: trunk/MagicSoft/Mars/mbase/MMath.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MMath.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mbase/MMath.cc	(revision 4966)
@@ -117,2 +117,55 @@
 }
 
+// -------------------------------------------------------------------------
+//
+// Quadratic interpolation
+//
+// calculate the parameters of a parabula such that
+//    y(i) = a + b*x(i) + c*x(i)^2
+//
+// If the determinant==0 an empty TVector3 is returned.
+//
+TVector3 MMath::GetParab(const TVector3 &x, const TVector3 &y)
+{
+    const TVector3 sq(x(0)*x(0), x(1)*x(1), x(2)*x(2));
+
+    const TVector3 ai2 = sq.Cross(sq);
+
+    const Double_t det = x.Dot(ai2);
+    if (det==0)
+        return TVector3();
+
+    const TVector3 ai1 = x.Cross(sq);
+    const TVector3 ai3 = x.Cross(x);
+
+    TVector3 res(y.Dot(ai1), y.Dot(ai2), y.Dot(ai3));
+    res *= 1./det;
+
+    return res;
+}
+
+Double_t MMath::InterpolParabLin(const TVector3 &vx, const TVector3 &vy, Double_t x)
+{
+    const TVector3 c = GetParab(vx, vy);
+    return c(0) + c(1)*x + c(2)*x*x;
+}
+
+Double_t MMath::InterpolParabLog(const TVector3 &vx, const TVector3 &vy, Double_t x)
+{
+    const Double_t l0 = TMath::Log10(vx(0));
+    const Double_t l1 = TMath::Log10(vx(1));
+    const Double_t l2 = TMath::Log10(vx(2));
+
+    const TVector3 vx0(l0, l1, l2);
+    return pow(10, InterpolParabLin(vx0, vy, TMath::Log10(x)));
+}
+
+Double_t MMath::InterpolParabCos(const TVector3 &vx, const TVector3 &vy, Double_t x)
+{
+    const Double_t l0 = TMath::Cos(vx(0));
+    const Double_t l1 = TMath::Cos(vx(1));
+    const Double_t l2 = TMath::Cos(vx(2));
+
+    const TVector3 vx0(l0, l1, l2);
+    return TMath::ACos(InterpolParabLin(vx0, vy, TMath::Cos(x)));
+}
Index: trunk/MagicSoft/Mars/mbase/MMath.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MMath.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mbase/MMath.h	(revision 4966)
@@ -4,4 +4,7 @@
 #ifndef ROOT_TMath
 #include <TMath.h>
+#endif
+#ifndef ROOT_TVector3
+#include <TVector3.h>
 #endif
 
@@ -16,4 +19,9 @@
     static Double_t SignificanceLiMaSigned(Double_t s, Double_t b, Double_t alpha=1);
 
+    static TVector3 GetParab(const TVector3 &x, const TVector3 &y);
+    static Double_t InterpolParabLin(const TVector3 &vx, const TVector3 &vy, Double_t x);
+    static Double_t InterpolParabLog(const TVector3 &vx, const TVector3 &vy, Double_t x);
+    static Double_t InterpolParabCos(const TVector3 &vx, const TVector3 &vy, Double_t x);
+
     ClassDef(MMath, 0)
 };
Index: trunk/MagicSoft/Mars/mbase/MStatusArray.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusArray.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mbase/MStatusArray.cc	(revision 4966)
@@ -32,4 +32,10 @@
 #include "MStatusArray.h"
 
+#include <TClass.h>
+#include <TCanvas.h>
+
+#include "MLog.h"
+#include "MLogManip.h"
+
 #include "MStatusDisplay.h"
 
@@ -56,2 +62,122 @@
     return 0;
 }
+
+TCanvas *MStatusArray::FindCanvas(const char *name) const
+{
+    TObject *o = TObjArray::FindObject(name);
+    return o->InheritsFrom(TCanvas::Class()) ? (TCanvas*)o : 0;
+}
+
+TObject *MStatusArray::FindObjectInPad(TVirtualPad *pad, const char *object, TClass *cls) const
+{
+    TObject *o = pad->FindObject(object);
+    if (o && o->InheritsFrom(cls))
+        return o;
+
+    TIter Next(pad->GetListOfPrimitives());
+    while ((o=Next()))
+    {
+        if (o==pad || !o->InheritsFrom(TVirtualPad::Class()))
+            continue;
+
+        if ((o = FindObjectInPad((TVirtualPad*)o, object, cls)))
+            if (o->InheritsFrom(cls))
+                return o;
+    }
+    return 0;
+}
+
+// FIXME: Move to a general class MMARS (TROOT) and unify with MParContainer
+TClass *MStatusArray::GetClass(const char *name) const
+{
+    TClass *cls = gROOT->GetClass(name);
+    Int_t rc = 0;
+    if (!cls)
+        rc =1;
+    else
+    {
+        if (!cls->Property())
+            rc = 5;
+        if (!cls->Size())
+            rc = 4;
+        if (!cls->IsLoaded())
+            rc = 3;
+        if (!cls->HasDefaultConstructor())
+            rc = 2;
+    }
+
+    if (rc==0)
+        return cls;
+
+    gLog << err << dbginf << "Class '" << name << "' not in dictionary: ";
+    switch (rc)
+    {
+    case 1:
+        gLog << "gROOT->GetClass() returned NULL." << endl;
+        return NULL;
+    case 2:
+        gLog << "no default constructor." << endl;
+        return NULL;
+    case 3:
+        gLog << "not loaded." << endl;
+        return NULL;
+    case 4:
+        gLog << "zero size." << endl;
+        return NULL;
+    case 5:
+        gLog << "no property." << endl;
+        return NULL;
+    }
+
+    gLog << "THIS SHOULD NEVER HAPPEN!" << endl;
+
+    return 0;
+}
+
+TObject *MStatusArray::FindObjectInCanvas(const char *object, const char *base, const char *canvas) const
+{
+    TClass *cls = GetClass(base);
+    if (!cls)
+        return 0;
+
+    TCanvas *c = canvas ? FindCanvas(canvas) : 0;
+    if (canvas)
+    {
+        if (!c)
+            return 0;
+
+        TObject *o = FindObjectInPad(c, object, cls);
+        if (!o)
+            return 0;
+
+        return o->InheritsFrom(cls) ? o : 0;
+    }
+
+    TObject *o=0;
+    TIter Next(this);
+    while ((o=Next()))
+    {
+        if (!o->InheritsFrom(TVirtualPad::Class()))
+            continue;
+
+        if ((o=FindObjectInPad((TVirtualPad*)c, object, cls)))
+            return o;
+    }
+
+    return NULL;
+}
+
+TObject *MStatusArray::FindObjectInCanvas(const char *object, const char *canvas) const
+{
+    return FindObjectInCanvas(object, object, canvas);
+}
+
+TObject *MStatusArray::FindObject(const char *object, const char *base) const
+{
+    return FindObjectInCanvas(object, base, 0);
+}
+
+TObject *MStatusArray::FindObject(const char *object) const
+{
+    return FindObjectInCanvas(object, object, 0);
+}
Index: trunk/MagicSoft/Mars/mbase/MStatusArray.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusArray.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mbase/MStatusArray.h	(revision 4966)
@@ -6,9 +6,26 @@
 #endif
 
+class TClass;
+class TCanvas;
+class TVirtualPad;
+
 class MStatusArray : public TObjArray
 {
+private:
+    TObject *FindObjectInPad(TVirtualPad *pad, const char *object, TClass *base) const;
+    TClass  *GetClass(const char *name) const;
+
 public:
     TObject *DisplayIn(Option_t *o=0) const;         // *MENU*
     TObject *Display() const { return DisplayIn(); } // *MENU*
+
+    TCanvas *FindCanvas(const char *name) const;
+
+    TObject *FindObjectInCanvas(const char *object, const char *base, const char *canvas) const;
+    TObject *FindObjectInCanvas(const char *object, const char *canvas) const;
+
+    TObject *FindObject(const char *object, const char *base) const;
+    TObject *FindObject(const char *object) const;
+    TObject *FindObject(const TObject *o) const { return 0; }
 
     ClassDef(MStatusArray, 0) // Helper class for status display
Index: trunk/MagicSoft/Mars/merpp.cc
===================================================================
--- trunk/MagicSoft/Mars/merpp.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/merpp.cc	(revision 4966)
@@ -330,4 +330,9 @@
             w->AddContainer("MReportTrigger",     "Trigger");
             w->AddContainer("MTimeTrigger",       "Trigger");
+            w->AddContainer("MTriggerBit",        "Trigger");
+            w->AddContainer("MTriggerIPR",        "Trigger");
+            w->AddContainer("MTriggerCell",       "Trigger");
+            w->AddContainer("MTriggerPrescFact",  "Trigger");
+            w->AddContainer("MTriggerLiveTime",   "Trigger");
             w->AddContainer("MReportDrive",       "Drive");
             w->AddContainer("MTimeDrive",         "Drive");
Index: trunk/MagicSoft/Mars/mhbase/MBinning.cc
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MBinning.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mhbase/MBinning.cc	(revision 4966)
@@ -18,5 +18,5 @@
 !   Author(s): Thomas Bretz, 01/2002 <mailto:tbretz@astro.uni-wuerzburg.de>
 !
-!   Copyright: MAGIC Software Development, 2000-2003
+!   Copyright: MAGIC Software Development, 2000-2004
 !
 !
@@ -24,7 +24,17 @@
 
 //////////////////////////////////////////////////////////////////////////////
-//                                                                          //
-//  MBinning                                                                //
-//                                                                          //
+//
+//  MBinning
+//
+// This is a MParCOntainer storing a binning for a histogram. Doing this
+// you are able to distribute a single binning to several histograms
+// in your parameter list.
+//
+// In some classes the title of the container is used to set the
+// axis-title of the corresponding axis in your histogram.
+//
+// For all the features supported see the function descriptions in
+//  MBinning and MH
+//
 //////////////////////////////////////////////////////////////////////////////
 #include "MBinning.h"
@@ -64,4 +74,9 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// Instantiate MBinning with nbins number of bins between lo (lower edge)
+// and hi (upper edge), name name and title title.
+//
 MBinning::MBinning(Int_t nbins, Axis_t lo, Axis_t hi, const char *name, const char *opt, const char *title)
 {
@@ -70,7 +85,10 @@
 
     SetEdges(nbins, lo, hi, opt);
-
-}
-
+}
+
+// --------------------------------------------------------------------------
+//
+// Setup the edges stored in MBinning from the TAxis axe
+//
 void MBinning::SetEdges(const TAxis &axe)
 {
@@ -85,4 +103,18 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// Add a new upper edge to the edges stored in MBinning. The new upper
+// edge must be greater than the current greatest. Using this you can
+// enhance a histogram bin-by-bin, eg:
+//   TH1F h("", "", 2, 0, 1);
+//   MBinning b;
+//   b.SetEdges(h);
+//   b.AddEdge(2);
+//   b.Apply(h);
+//   b.AddEdge(3);
+//   b.Apply(h);
+//   [...]
+//
 void MBinning::AddEdge(Axis_t up)
 {
@@ -101,21 +133,38 @@
 }
 
+void MBinning::RemoveFirstEdge()
+{
+    const Int_t n = fEdges.GetSize();
+    for (int i=0; i<n-1; i++)
+        fEdges[i] = fEdges[i+1];
+    fEdges.Set(n-1);
+}
+
+void MBinning::RemoveLastEdge()
+{
+    fEdges.Set(fEdges.GetSize()-1);
+}
+
+// --------------------------------------------------------------------------
+//
+// Set the edges in MBinning from a histogram-axis. Which axis is
+// specified by axis ('x', 'y', 'z')
+//
 void MBinning::SetEdges(const TH1 &h, const Char_t axis)
 {
-    TH1 &hist = (TH1&)h; // get rid of const qualifier
     switch (tolower(axis))
     {
     case 'x':
-        SetEdges(*hist.GetXaxis());
+        SetEdges(*h.GetXaxis());
         return;
     case 'y':
-        SetEdges(*hist.GetYaxis());
+        SetEdges(*h.GetYaxis());
         return;
     case 'z':
-        SetEdges(*hist.GetZaxis());
+        SetEdges(*h.GetZaxis());
         return;
     default:
         *fLog << warn << "MBinning::SetEdges: Axis '" << axis << "' unknown... using x." << endl;
-        SetEdges(*hist.GetXaxis());
+        SetEdges(*h.GetXaxis());
     }
 }
Index: trunk/MagicSoft/Mars/mhbase/MBinning.h
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MBinning.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mhbase/MBinning.h	(revision 4966)
@@ -46,4 +46,5 @@
 
     void SetEdges(const TAxis &axe);
+    void SetEdges(const MBinning &bins) { SetEdges(fEdges); }
     void SetEdges(const TH1 &h, const Char_t axis='x');
     void SetEdges(const Int_t nbins, const Axis_t lo, Axis_t up);
@@ -59,5 +60,5 @@
 	for (int i=1; i<fEdges.GetSize(); i++)
         {
-            if (((TArrayD)fEdges)[i] >= val)
+            if (fEdges[i] >= val)
                 return i-1;
         }
@@ -70,22 +71,24 @@
     }
 
-    // FIXME: ROOT workaround: "operator[] const" missing
-    Double_t GetEdgeLo() const { return ((TArrayD)fEdges)[0]; }
-    Double_t GetEdgeHi() const { return ((TArrayD)fEdges)[fEdges.GetSize()-1]; }
+    Double_t GetEdgeLo() const { return fEdges[0]; }
+    Double_t GetEdgeHi() const { return fEdges[fEdges.GetSize()-1]; }
 
-    Int_t GetNumEdges() const { return fEdges.GetSize(); }
-    Int_t GetNumBins() const { return fEdges.GetSize()-1; }
+    Int_t GetNumEdges() const  { return fEdges.GetSize(); }
+    Int_t GetNumBins() const   { return fEdges.GetSize()-1; }
 
     Double_t *GetEdges() const { return (Double_t*)fEdges.GetArray(); }
+    const TArrayD &GetEdgesD() const { return fEdges; }
 
     void AddEdge(Axis_t up);
+    void RemoveFirstEdge();
+    void RemoveLastEdge();
 
-    Bool_t IsLinear() const { return fType==kIsLinear; }
+    Bool_t IsLinear() const      { return fType==kIsLinear; }
     Bool_t IsLogarithmic() const { return fType==kIsLogarithmic; }
-    Bool_t IsCosinic() const { return fType==kIsCosinic; }
-    Bool_t IsDefault() const { return fType==kIsDefault; }
-    Bool_t IsUserArray() const { return fType==kIsUserArray; }
+    Bool_t IsCosinic() const     { return fType==kIsCosinic; }
+    Bool_t IsDefault() const     { return fType==kIsDefault; }
+    Bool_t IsUserArray() const   { return fType==kIsUserArray; }
 
-    Bool_t HasTitle() const { return gsDefTitle!=fTitle; }
+    Bool_t HasTitle() const      { return gsDefTitle!=fTitle; }
 
     void Apply(TH1 &) const;
@@ -95,3 +98,2 @@
 
 #endif
-
Index: trunk/MagicSoft/Mars/mhbase/MH.cc
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MH.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mhbase/MH.cc	(revision 4966)
@@ -478,4 +478,35 @@
 }
 
+void MH::RemoveFirstBin(TH1 &h)
+{
+    if (h.InheritsFrom(TH2::Class()) || h.InheritsFrom(TH3::Class()))
+        return;
+
+    const Int_t n0 = h.GetNbinsX();
+    if (n0<2)
+        return;
+
+    TArrayD val(n0-1);
+    TArrayD err(n0-1);
+    for (int i=1; i<n0; i++)
+    {
+        val[i-1] = h.GetBinContent(i+1);
+        err[i-1] = h.GetBinError(i+1);
+    }
+
+    MBinning bins;
+    bins.SetEdges(h, 'x');
+    bins.RemoveFirstEdge();
+    bins.Apply(h);
+
+    h.Reset();
+
+    for (int i=1; i<n0; i++)
+    {
+        h.SetBinContent(i, val[i-1]);
+        h.SetBinError(i, err[i-1]);
+    }
+}
+
 // --------------------------------------------------------------------------
 //
Index: trunk/MagicSoft/Mars/mhbase/MH.h
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MH.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mhbase/MH.h	(revision 4966)
@@ -69,4 +69,6 @@
     static void SetBinning(TH1 *h, const TH1 *x);
 
+    static void RemoveFirstBin(TH1 &h);
+
     static Bool_t ApplyBinning(const MParList &plist, TString name, TH1 *h);
 
Index: trunk/MagicSoft/Mars/mhist/MHEffectiveOnTime.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHEffectiveOnTime.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mhist/MHEffectiveOnTime.cc	(revision 4966)
@@ -208,5 +208,5 @@
     // setup binning
     MBinning btheta("BinningTheta");
-    btheta.SetEdgesCos(101, 0, 60);
+    btheta.SetEdgesCos(100, 0, 60);
 
     MBinning btime("BinningDeltaT");
@@ -448,13 +448,10 @@
     //
 
-    // Get x-axis
-    TAxis &x = *fHEffOnTime.GetXaxis();
-
     // Get number of bins
-    const Int_t n = x.GetNbins();
+    const Int_t n = fHEffOnTime.GetNbinsX();
 
     // Enhance binning
     MBinning bins;
-    bins.SetEdges(x);
+    bins.SetEdges(fHEffOnTime, 'x');
     bins.AddEdge(fLastTime.GetAxisTime());
     bins.Apply(fHEffOnTime);
@@ -502,5 +499,5 @@
     {
         MBinning bins;
-        bins.SetEdges(2, time->GetAxisTime()-fNumEvents/200, time->GetAxisTime());
+        bins.SetEdges(1, time->GetAxisTime()-fNumEvents/200, time->GetAxisTime());
         bins.Apply(fHEffOnTime);
         bins.Apply(fHProbTime);
@@ -543,4 +540,6 @@
     FitThetaBins();
     FitTimeBin();
+    MH::RemoveFirstBin(fHEffOnTime);
+    MH::RemoveFirstBin(fHProbTime);
 
     fIsFinalized = kTRUE;
@@ -579,18 +578,18 @@
             {
                 TVirtualPad *p=gPad->GetPad(x+1)->GetPad(y+1);
-                if ((st = (TPaveStats*)p->GetPrimitive("stats")))
-                {
-                    if (st->GetOptStat()==11)
-                        continue;
-
-                    const Double_t y1 = st->GetY1NDC();
-                    const Double_t y2 = st->GetY2NDC();
-                    const Double_t x1 = st->GetX1NDC();
-                    const Double_t x2 = st->GetX2NDC();
-
-                    st->SetY1NDC((y2-y1)/3+y1);
-                    st->SetX1NDC((x2-x1)/3+x1);
-                    st->SetOptStat(11);
-                }
+                if (!(st = (TPaveStats*)p->GetPrimitive("stats")))
+                    continue;
+
+                if (st->GetOptStat()==11)
+                    continue;
+
+                const Double_t y1 = st->GetY1NDC();
+                const Double_t y2 = st->GetY2NDC();
+                const Double_t x1 = st->GetX1NDC();
+                const Double_t x2 = st->GetX2NDC();
+
+                st->SetY1NDC((y2-y1)/3+y1);
+                st->SetX1NDC((x2-x1)/3+x1);
+                st->SetOptStat(11);
             }
 
Index: trunk/MagicSoft/Mars/mjobs/MJStar.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJStar.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mjobs/MJStar.cc	(revision 4966)
@@ -203,5 +203,4 @@
     fill8.SetNameTab("EvtRate");
     fill9.SetNameTab("EffOnTime");
-    fill9.SetNameTab("EffOnVsTime");
 
     // ------------------ Setup write task ----------------
Index: trunk/MagicSoft/Mars/mpointing/MPointing.cc
===================================================================
--- trunk/MagicSoft/Mars/mpointing/MPointing.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mpointing/MPointing.cc	(revision 4966)
@@ -80,4 +80,6 @@
 #include "MTime.h"
 
+ClassImp(AltAz);
+ClassImp(ZdAz);
 ClassImp(MPointing);
 
@@ -602,4 +604,15 @@
 }
 
+TVector3 MPointing::Correct(const TVector3 &v) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+    AltAz c = Correct(p);
+    TVector3 rc;
+    rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+    return rc;
+}
+
 ZdAz MPointing::CorrectBack(const ZdAz &zdaz) const
 {
@@ -611,4 +624,15 @@
 }
 
+TVector3 MPointing::CorrectBack(const TVector3 &v) const
+{
+    // Correct [rad]
+    // zdaz    [rad]
+    AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+    AltAz c = CorrectBack(p);
+    TVector3 rc;
+    rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+    return rc;
+}
+
 void MPointing::SetParameters(const Double_t *par, Int_t n)
 {
Index: trunk/MagicSoft/Mars/mpointing/MPointing.h
===================================================================
--- trunk/MagicSoft/Mars/mpointing/MPointing.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mpointing/MPointing.h	(revision 4966)
@@ -4,4 +4,8 @@
 #ifndef ROOT_TArrayD
 #include <TArrayD.h>
+#endif
+
+#ifndef ROOT_TVector3
+#include <TVector3.h>
 #endif
 
@@ -24,4 +28,5 @@
     Double_t Alt() const { return fX; }
     Double_t Az() const  { return fY; }
+    ClassDef(AltAz, 1)
 };
 
@@ -34,4 +39,5 @@
     Double_t Zd() const { return fX; }
     Double_t Az() const { return fY; }
+    ClassDef(ZdAz, 1)
 };
 #endif
@@ -95,12 +101,15 @@
     void Reset();
 
-    ZdAz  Correct(const ZdAz &zdaz) const;
-    AltAz Correct(const AltAz &aaz) const;
-
-    ZdAz  CorrectBack(const ZdAz &zdaz) const;
-    AltAz CorrectBack(const AltAz &aaz) const;
-
-    ZdAz operator()(const ZdAz &zdaz) const { return Correct(zdaz); }
-    AltAz operator()(const AltAz &aaz) const { return Correct(aaz); }
+    ZdAz     Correct(const ZdAz &zdaz) const;
+    AltAz    Correct(const AltAz &aaz) const;
+    TVector3 Correct(const TVector3 &v) const;
+
+    ZdAz     CorrectBack(const ZdAz &zdaz) const;
+    AltAz    CorrectBack(const AltAz &aaz) const;
+    TVector3 CorrectBack(const TVector3 &v) const;
+
+    ZdAz     operator()(const ZdAz &zdaz)  const { return Correct(zdaz); }
+    AltAz    operator()(const AltAz &aaz)  const { return Correct(aaz); }
+    TVector3 operator()(const TVector3 &v) const { return Correct(v); }
 
     ZdAz operator()(const ZdAz &zdaz, void (*fcn)(ZdAz &zdaz, Double_t *par)) const
@@ -122,4 +131,13 @@
     }
 
+    TVector3 operator()(const TVector3 &aaz, void (*fcn)(TVector3 &aaz, Double_t *par)) const
+    {
+        Double_t par[fNumPar];
+        GetParameters(par);
+        TVector3 v = aaz;
+        fcn(v, par);
+        return v;
+    }
+
     AltAz  AddOffsets(const AltAz &aa) const;
     ZdAz   AddOffsets(const ZdAz &zdaz) const
@@ -129,4 +147,12 @@
         return ZdAz(TMath::Pi()/2-c.Alt(), c.Az());
     }
+    TVector3 AddOffsets(const TVector3 &v) const
+    {
+        AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+        AltAz c = AddOffsets(p);
+        TVector3 rc;
+        rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+        return rc;
+    }
 
     AltAz  SubtractOffsets(const AltAz &aa) const;
@@ -136,4 +162,12 @@
         AltAz c = SubtractOffsets(p);
         return ZdAz(TMath::Pi()/2-c.Alt(), c.Az());
+    }
+    TVector3 SubtractOffsets(const TVector3 &v) const
+    {
+        AltAz p(TMath::Pi()/2-v.Theta(), v.Phi());
+        AltAz c = SubtractOffsets(p);
+        TVector3 rc;
+        rc.SetMagThetaPhi(1, TMath::Pi()/2-c.Alt(), c.Az());
+        return rc;
     }
 
Index: trunk/MagicSoft/Mars/mpointing/MSrcPosFromModel.cc
===================================================================
--- trunk/MagicSoft/Mars/mpointing/MSrcPosFromModel.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mpointing/MSrcPosFromModel.cc	(revision 4966)
@@ -39,4 +39,6 @@
 #include "MPointing.h"
 #include "MSrcPosCam.h"
+#include "MAstro.h"
+#include "MAstroCatalog.h" // MVector3
 #include "MAstroSky2Local.h"
 #include "MPointingPos.h"
@@ -57,8 +59,6 @@
     fTitle = title ? title : "";
 
-    fPoint0401 = new MPointing("bending0401.txt");
+    fPoint0401 = new MPointing("bending-fit.txt");
     fPoint0405 = new MPointing("bending0405.txt");
-    fPointOld  = new MPointing("bending-old.txt");
-    fPointNew  = new MPointing("bending0408.txt");
 }
 
@@ -67,6 +67,4 @@
     delete fPoint0401;
     delete fPoint0405;
-    delete fPointOld;
-    delete fPointNew;
 }
 
@@ -97,11 +95,4 @@
         return kFALSE;
     }
-/*
-    fReport = (MReportDrive*)pList->FindObject("MReportDrive");
-    if (!fReport)
-    {
-        *fLog << err << "MReportDrive not found... aborting." << endl;
-        return kFALSE;
-    }
 
     fObservatory = (MObservatory*)pList->FindObject("MObservatory");
@@ -119,11 +110,4 @@
     }
 
-    fTime2 = (MTime*)pList->FindObject("MTimeDrive", "MTime");
-    if (!fTime2)
-    {
-        *fLog << err << "MTimeDrive not found... aborting." << endl;
-        return kFALSE;
-    }
-    */
     fSrcPos = (MSrcPosCam*)pList->FindCreateObj("MSrcPosCam");
     if (!fSrcPos)
@@ -132,48 +116,5 @@
     return kTRUE;
 }
-/*
-TVector2 MSrcPosFromModel::CalcXYinCamera(const ZdAz &pos0, const ZdAz &pos1) const
-{
-    MVector3 p0, p1;
-    p0.SetZdAz(pos0.X(), pos0.Y());
-    p1.SetZdAz(pos1.X(), pos1.Y());
 
-    return CalcXYinCamera(p0, p1);
-}
-
-// --------------------------------------------------------------------------
-//
-// Loc0LocToCam
-//
-// Input :   (theta0, phi0)   direction for the position (0,0) in the camera  
-//           ( theta,  phi)   some other direction
-// 
-// Output :  (X, Y)      position in the camera corresponding to (theta, phi)
-//
-TVector2 MSrcPosFromModel::CalcXYinCamera(const MVector3 &pos0, const MVector3 &pos) const
-{
-    const Double_t theta0 = pos0.Theta();
-    const Double_t phi0   = pos0.Phi();
-
-    const Double_t theta  = pos.Theta();
-    const Double_t phi    = pos.Phi();
-
-    //--------------------------------------------
-
-    // pos0[3] = TMath::Cos(theta0)
-
-    const Double_t YC0 = TMath::Cos(theta0)*TMath::Tan(theta)*TMath::Cos(phi-phi0) - TMath::Sin(theta0);
-    const Double_t YC1 = TMath::Cos(theta0) + TMath::Sin(theta0)*TMath::Tan(theta);
-    const Double_t YC  = YC0 / YC1;
-
-    //--------------------------------------------
-
-    const Double_t XC0 =  TMath::Cos(theta0) - YC*TMath::Sin(theta0);
-    const Double_t XC  = -TMath::Sin(phi-phi0) * TMath::Tan(theta) * XC0;
-
-    //--------------------------------------------
-    return TVector2(XC, -YC);
-}
-*/
 // --------------------------------------------------------------------------
 //
@@ -182,68 +123,24 @@
 Int_t MSrcPosFromModel::Process()
 {
-    MPointing *conv1 = 0;
-    MPointing *conv2 = 0;
+    MPointing *conv = 0;
 
-    if (!conv1 && fRun->GetRunNumber()<26237)
-    {
-        conv1 = fPoint0401;
-        conv2 = fPointOld;
-    }
-    if (!conv1 && fRun->GetRunNumber()<31684)
-    {
-        conv1 = fPoint0405;
-        conv2 = fPointOld;
-    }
-    /*
-     MVector3 sky;
-     sky.SetRaDec(fPointPos->GetRaRad(), fPointPos->GetDecRad());
-     MVector3 loc = MAstroSky2Local(*fTime2, *fObservatory)*sky;
-     ZdAz za(loc.Theta(), loc.Phi());
-     */
+    if (!conv && fRun->GetRunNumber()<26237)
+        conv = fPoint0401;
+    if (!conv && fRun->GetRunNumber()<31684)
+        conv = fPoint0405;
 
-    // Get current pointing position from Drive system
-    ZdAz za(fPointPos->GetZd(), fPointPos->GetAz());
-    za *= TMath::DegToRad();
+    MVector3 sky;
+    sky.SetRaDec(fPointPos->GetRaRad(), fPointPos->GetDecRad());
 
-    // Get corresponding Shaftencoder positions for 'Used-Mode'
-    const ZdAz za2 = conv1->Correct(za);  // [deg] --> [se]
-    // Get corresponding Shaftencoder positions for 'Correct-Mode'
-    const ZdAz za1 = conv2->Correct(za);  // [deg] --> [se]
+    // Get current star position (off center)
+    MVector3 vl2 = MAstroSky2Local(*fTime, *fObservatory)*sky;
+    // Get corrected position camera center)
+    TVector3 vl1 = conv->Correct(vl2);
 
-    // The difference of the shaftencoder positions for both model
-    // correspond in a first order approximation to the misspointing
-    TVector2 v0 = TVector2(za2.Y()-za1.Y(), za2.X()-za1.X());
-
-    // Convert misspointing to millimeters
-    v0 *= TMath::RadToDeg()/fGeom->GetConvMm2Deg();
+    // Calculate x,y of za2
+    TVector2 d = MAstro::GetDistOnPlain(vl1, vl2, fGeom->GetCameraDist()*1000);
 
     // Set Source position
-    fSrcPos->SetXY(v0);
-
-    /*
-    TVector2 v0 = CalcXYinCamera(za1, za0)*fGeom->GetCameraDist()*(-1000);
-    TVector2 v1 = CalcXYinCamera(za0, za1)*fGeom->GetCameraDist()*(+1000);
-
-    fSrcPos->SetXY(TVector2(0,0)); // v1
-
-    za0 *= TMath::RadToDeg();
-    za1 *= TMath::RadToDeg();
-
-    *fLog << warn << endl;
-    *fLog << "-1->  " << za0.X() << " " << za0.Y() << "   " << v0.X() << " " << v0.Y() << "   " << v0.X()*fGeom->GetConvMm2Deg() << " " << v0.Y()*fGeom->GetConvMm2Deg() << endl;
-    *fLog << "-2->  " << za1.X() << " " << za1.Y() << "   " << v1.X() << " " << v1.Y() << "   " << v1.X()*fGeom->GetConvMm2Deg() << " " << v1.Y()*fGeom->GetConvMm2Deg() << endl;
-
-    Double_t rho = fPointPos->RotationAngle(*fObservatory, *fTime2);
-    *fLog << "-3->  " << rho*TMath::RadToDeg() << endl;
-
-    v1=v1.Rotate(-rho);
-    *fLog << "-4->  " << "       " << " " << "        " << "   " << v1.X() << " " << v1.Y() << "   " << v1.X()*fGeom->GetConvMm2Deg() << " " << v1.Y()*fGeom->GetConvMm2Deg() << endl;
-
-    */
-    /*
-     *fLog << dbg << endl;
-     *fLog << "Time: " << setprecision(12) << fTime2->GetMjd() << " " << *fTime2 << endl;
-     *fLog << setprecision(6);
-     */
+    fSrcPos->SetXY(d);
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mpointing/MSrcPosFromModel.h
===================================================================
--- trunk/MagicSoft/Mars/mpointing/MSrcPosFromModel.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mpointing/MSrcPosFromModel.h	(revision 4966)
@@ -10,5 +10,4 @@
 #endif
 
-//class MVector3;
 class MPointingPos;
 class MSrcPosCam;
@@ -16,8 +15,6 @@
 class MPointing;
 class MRawRunHeader;
-//class MTime;
-//class MObservatory;
-//class MReportDrive;
-//class ZdAz;
+class MTime;
+class MObservatory;
 
 class MSrcPosFromModel : public MTask
@@ -28,14 +25,9 @@
     MGeomCam      *fGeom;       //! Camera geometry
     MRawRunHeader *fRun;        //! Run Header storing the run-number
-    //MTime         *fTime;
-    //MTime         *fTime2;
-    //MReportDrive  *fReport;
-    //MObservatory  *fObservatory;
+    MTime         *fTime;
+    MObservatory  *fObservatory;
 
     MPointing    *fPoint0401;   //! Pointing Model used since 1/2004
     MPointing    *fPoint0405;   //! Pointing Model used since 5/2004
-
-    MPointing    *fPointOld;    //! Pointing Model valid until 8/2004
-    MPointing    *fPointNew;    //! Pointing Model valid since 8/2004
 
     Int_t PreProcess(MParList *pList);
Index: trunk/MagicSoft/Mars/mpointing/PointingLinkDef.h
===================================================================
--- trunk/MagicSoft/Mars/mpointing/PointingLinkDef.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mpointing/PointingLinkDef.h	(revision 4966)
@@ -14,3 +14,6 @@
 #pragma link C++ class MSrcPosFromModel+;
 
+#pragma link C++ class AltAz+;
+#pragma link C++ class ZdAz+;
+
 #endif
Index: trunk/MagicSoft/Mars/mreport/MReportTrigger.cc
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportTrigger.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mreport/MReportTrigger.cc	(revision 4966)
@@ -17,7 +17,7 @@
 !
 !   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
-!              Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it>
+!   Author(s): Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it>
 ! 
-!   Copyright: MAGIC Software Development, 2000-2003
+!   Copyright: MAGIC Software Development, 2000-2004
 !
 !
@@ -113,5 +113,4 @@
   if (!fLiveTime)
     return kFALSE;
-
   
   return MReport::SetupReading(plist);
Index: trunk/MagicSoft/Mars/mreport/MReportTrigger.h
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportTrigger.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mreport/MReportTrigger.h	(revision 4966)
@@ -20,12 +20,12 @@
 private:
   
-  Float_t fL2BeforePrescaler; //! L2 trigger rate before prescaler
-  Float_t fL2AfterPrescaler;  //! L2 trigger rate after prescaler
+  Float_t fL2BeforePrescaler;       // L2 trigger rate before prescaler
+  Float_t fL2AfterPrescaler;        // L2 trigger rate after prescaler
   
-  MTriggerBit *fBit;        //! container of the L2 prescaler rates
-  MTriggerIPR *fIPR;        //! container of the IPR
-  MTriggerCell *fCell;      //! container of the L1 cell trigger rates
+  MTriggerBit *fBit;                //! container of the L2 prescaler rates
+  MTriggerIPR *fIPR;                //! container of the IPR
+  MTriggerCell *fCell;              //! container of the L1 cell trigger rates
   MTriggerPrescFact *fPrescFactor;  //! container of the L2 prescaling factors
-  MTriggerLiveTime *fLiveTime; //! container of the scaler live-deadtime 
+  MTriggerLiveTime *fLiveTime;      //! container of the scaler live-deadtime
   
   Bool_t SetupReading(MParList &plist);
@@ -49,5 +49,5 @@
     Float_t GetL2AfterPrescaler() const { return fL2AfterPrescaler; }
 
-    ClassDef(MReportTrigger, 1) // Class for TRIGGER-REPORT information
+    ClassDef(MReportTrigger, 2) // Class for TRIGGER-REPORT information
  };
 
Index: trunk/MagicSoft/Mars/mstarcam/MStarCamTrans.cc
===================================================================
--- trunk/MagicSoft/Mars/mstarcam/MStarCamTrans.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mstarcam/MStarCamTrans.cc	(revision 4966)
@@ -155,7 +155,4 @@
   fSLat    = obs.GetSinPhi();
 
-  gLog << "MStarCamTrans::TransCelLocCam; fDistCam, fCLat, fSLat = "
-        << fDistCam << ",  " << fCLat << ",  " << fSLat << endl;
-
   if (fDistCam*fCLat*fSLat == 0.0)
   {
@@ -233,4 +230,6 @@
 // 
 // Output :  (X, Y)      position in the camera corresponding to (theta, phi)
+//
+//  (see also MAstro::GetDistOnPlain())
 //
 Bool_t MStarCamTrans::Loc0LocToCam(Double_t theta0deg, Double_t phi0deg,
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerBit.cc
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerBit.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerBit.cc	(revision 4966)
@@ -17,5 +17,5 @@
 !
 !   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
-!              Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it> 
+!   Author(s): Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it>
 !
 !   Copyright: MAGIC Software Development, 2000-2004
@@ -27,6 +27,6 @@
 //
 // MTriggerBit
+//
 //   This class stores the information about the L2 output Bit rates
-//   
 //
 /////////////////////////////////////////////////////////////////////////////
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerBit.h
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerBit.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerBit.h	(revision 4966)
@@ -18,5 +18,4 @@
 
 private:
-    
     static const Int_t gsNBits=20;        // number of output bits
 
@@ -27,5 +26,5 @@
     {
         fName  = "MTriggerBit";
-        fTitle = "Container for the L2 output bits rates ";
+        fTitle = "Trigger-Container for the L2 output bits rates";
     }
 
@@ -52,5 +51,5 @@
     }
 
-    ClassDef(MTriggerBit, 1) // Container for the L2 output bits rates
+    ClassDef(MTriggerBit, 1) // Trigger-Container for the L2 output bits rates
 };
 
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerCell.cc
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerCell.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerCell.cc	(revision 4966)
@@ -17,5 +17,5 @@
 !
 !   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
-!              Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it> 
+!   Author(s): Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it>
 !
 !   Copyright: MAGIC Software Development, 2000-2004
@@ -27,6 +27,6 @@
 //
 // MTriggerCell
+//
 //   This class stores the information about the Trigger Cell Rates
-//   
 //
 /////////////////////////////////////////////////////////////////////////////
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerCell.h
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerCell.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerCell.h	(revision 4966)
@@ -16,9 +16,9 @@
 {
     friend class MReportTrigger;
+
 private:
-    static const Int_t gsNCells=32; //Number of fields with cell rates
-                                    // 19 cells and 12 dummy 
+    static const Int_t gsNCells=32; //Number of fields with cell rates 19 cells and 12 dummy
 
-    TArrayF fCellRate;       // Array of the measured L1 cell rates
+    TArrayF fCellRate;              // Array of the measured L1 cell rates
 
 public:
@@ -26,5 +26,5 @@
     {
         fName  = "MTriggerCell";
-        fTitle = "Container for the measured cell rates";
+        fTitle = "Trigger-Container for the measured cell rates";
     }
 
@@ -52,5 +52,5 @@
     }
 
-    ClassDef(MTriggerCell, 1) // Container for the trigger cell rates
+    ClassDef(MTriggerCell, 1) // Trigger-Container for the measured cell rates
 };
 
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerIPR.cc
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerIPR.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerIPR.cc	(revision 4966)
@@ -17,5 +17,5 @@
 !
 !   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
-!              Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it> 
+!   Author(s): Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it>
 !
 !   Copyright: MAGIC Software Development, 2000-2004
@@ -27,6 +27,6 @@
 //
 // MTriggerIPR
+//
 //   This class stores the information about the Individual Pixel Rates
-//   
 //
 /////////////////////////////////////////////////////////////////////////////
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerIPR.h
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerIPR.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerIPR.h	(revision 4966)
@@ -16,8 +16,9 @@
 {
     friend class MReportTrigger;
+
 private:
-    TArrayL fIPR;            // [Hz] IPR (Individual Pixel Rates)
-    
     static const Int_t gsNTrigPix=397;  // number of trigger pixels
+
+    TArrayL fIPR;                       // [Hz] IPR (Individual Pixel Rates)
 
 public:
@@ -25,5 +26,5 @@
     {
         fName  = "MTriggerIPR";
-        fTitle = "Container for the Individual Pixel Rate (IPR)";
+        fTitle = "Trigger-Container for the Individual Pixel Rate (IPR)";
     }
 
@@ -51,5 +52,5 @@
     }
 
-    ClassDef(MTriggerIPR, 1) // Container for the Individual Pixel Rate (IPR)
+    ClassDef(MTriggerIPR, 1) // Trigger-Container for the Individual Pixel Rate (IPR)
 };
 
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerLiveTime.cc
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerLiveTime.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerLiveTime.cc	(revision 4966)
@@ -17,5 +17,5 @@
 !
 !   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
-!              Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it> 
+!   Author(s): Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it>
 !
 !   Copyright: MAGIC Software Development, 2000-2004
@@ -27,4 +27,5 @@
 //
 // MTriggerLiveTime
+//
 //   This class stores the information about the livetime and deadtime
 //   measured by the scalers 
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerLiveTime.h
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerLiveTime.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerLiveTime.h	(revision 4966)
@@ -27,5 +27,5 @@
     {
         fName  = "MTriggerLiveTime";
-        fTitle = "Container for the Live-deadtime      ";
+        fTitle = "Trigger-Container for the Live-deadtime";
     }
 
@@ -52,5 +52,5 @@
     }
 
-    ClassDef(MTriggerLiveTime, 1) // Container for the Live-Deadtime
+    ClassDef(MTriggerLiveTime, 1) // Trigger-Container for the Live-Deadtime
 };
 
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerPrescFact.cc
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerPrescFact.cc	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerPrescFact.cc	(revision 4966)
@@ -17,5 +17,5 @@
 !
 !   Author(s): Thomas Bretz, 11/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
-!              Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it> 
+!   Author(s): Antonio Stamerra, 05/2004 <mailto:antonio.stamerra@pi.infn.it>
 !
 !   Copyright: MAGIC Software Development, 2000-2004
@@ -27,6 +27,6 @@
 //
 // MTriggerPrescFact
+//
 //   This class stores the information about the L2 prescaling factors
-//   
 //
 /////////////////////////////////////////////////////////////////////////////
Index: trunk/MagicSoft/Mars/mtrigger/MTriggerPrescFact.h
===================================================================
--- trunk/MagicSoft/Mars/mtrigger/MTriggerPrescFact.h	(revision 4965)
+++ trunk/MagicSoft/Mars/mtrigger/MTriggerPrescFact.h	(revision 4966)
@@ -27,5 +27,5 @@
     {
         fName  = "MTriggerPrescFact";
-        fTitle = "Container for the L2 Prescaling Factors      ";
+        fTitle = "Trigger-Container for the L2 Prescaling Factors";
     }
 
@@ -52,5 +52,5 @@
     }
 
-    ClassDef(MTriggerPrescFact, 1) // Container for the L2 Prescaling Factors
+    ClassDef(MTriggerPrescFact, 1) // Trigger-Container for the L2 Prescaling Factors
 };
 
