Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 2635)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 2636)
@@ -4,4 +4,17 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2003/12/11: Thomas Bretz
+
+   * mbase/MTime.[h,cc]:
+     - small change to GetString
+     - added ReadBinary
+     
+   * mraw/MRawCrateData.[h,c], mraw/MRawFileRead.[h,cc], 
+     mraw/MRawRunHeader.[h,cc], mraw/MRawSocketRead.cc:
+     - adapted to new DAQ file format Version 2
+     - changed ClassDef version accordingly
+
+
+
  2003/12/10: Thomas Bretz
 
@@ -30,4 +43,10 @@
      - replaced non working ReadLine by ReadToDelim (reason unknown!)
      - added SetHasNoHeader and kHasNoHeader
+
+   * macros/readcurrents.C:
+     - fixed accordingly
+
+   * macros/sumcurrents.C:
+     - fixed accordingly
 
 
Index: /trunk/MagicSoft/Mars/mbase/MTime.cc
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MTime.cc	(revision 2635)
+++ /trunk/MagicSoft/Mars/mbase/MTime.cc	(revision 2636)
@@ -239,5 +239,5 @@
     GetTime(h, m, s, ms);
 
-    return TString(Form("%2d/%02d/%02d %d:%02d:%02d.%03d", y, mon, d, h, m, s, ms));
+    return TString(Form("%2d/%02d/%02d %02d:%02d:%02d.%03d", y, mon, d, h, m, s, ms));
 }
 
@@ -273,2 +273,19 @@
     *fLog << GetString() << Form(" (+%dns)", fNanoSec) << endl;
 } 
+
+istream &MTime::ReadBinary(istream &fin)
+{
+    UShort_t y;
+    Byte_t mon, d, h, m, s;
+
+    fin.read((char*)&y,   2);
+    fin.read((char*)&mon, 1);
+    fin.read((char*)&d,   1);
+    fin.read((char*)&h,   1);
+    fin.read((char*)&m,   1);
+    fin.read((char*)&s,   1); // Total=7
+
+    Set(y, mon, d, h, m, s, 0);
+
+    return fin;
+}
Index: /trunk/MagicSoft/Mars/mbase/MTime.h
===================================================================
--- /trunk/MagicSoft/Mars/mbase/MTime.h	(revision 2635)
+++ /trunk/MagicSoft/Mars/mbase/MTime.h	(revision 2636)
@@ -12,4 +12,8 @@
 #ifndef MARS_MParContainer
 #include "MParContainer.h"
+#endif
+
+#ifndef _CPP_IOSFWD
+#include <iosfwd>
 #endif
 
@@ -95,4 +99,6 @@
     UInt_t Sec() const   { Byte_t h, m, s; GetTime(h,m,s); return s; }
 
+    istream &ReadBinary(istream &fin);
+
     operator double() const   //[s]
     {
Index: /trunk/MagicSoft/Mars/mraw/MRawCrateArray.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawCrateArray.cc	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawCrateArray.cc	(revision 2636)
@@ -122,3 +122,2 @@
     return &fArray;
 }
-
Index: /trunk/MagicSoft/Mars/mraw/MRawCrateData.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawCrateData.cc	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawCrateData.cc	(revision 2636)
@@ -45,5 +45,5 @@
 using namespace std;
 
-MRawCrateData::MRawCrateData() : fDAQCrateNumber(0), fFADCEvtNumber(0), fFADCClockTick(0)
+MRawCrateData::MRawCrateData() : fDAQCrateNumber(0), fFADCEvtNumber(0), fFADCClockTick(0), fABFlags(0)
 {
 }
@@ -54,9 +54,11 @@
 //  like specified in a TDAS note
 //
-void MRawCrateData::ReadEvt(istream& fin)
+void MRawCrateData::ReadEvt(istream& fin, UShort_t ver)
 {
     fin.read((char*)&fDAQCrateNumber, 2);
     fin.read((char*)&fFADCEvtNumber,  4);
     fin.read((char*)&fFADCClockTick,  4);
+    if (ver>1)
+        fin.read((char*)&fABFlags, 1);
 }
 
@@ -68,6 +70,7 @@
 {
     *fLog << all;
-    *fLog << "Crate Number " << fDAQCrateNumber << ":  ";
-    *fLog << "FADCEventNr=" << fFADCEvtNumber << "  ";
-    *fLog << "FADCClockTick=" << fFADCClockTick << " (20MHz)" << endl;
+    *fLog << "Crate Number " << dec << fDAQCrateNumber << ":  ";
+    *fLog << "FADCEventNr   = " << fFADCEvtNumber << "  ";
+    *fLog << "FADCClockTick = " << fFADCClockTick << " (20MHz)" << endl;
+    *fLog << "ABFlags       = " << hex << fABFlags << " (20MHz)" << endl;
 }
Index: /trunk/MagicSoft/Mars/mraw/MRawCrateData.h
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawCrateData.h	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawCrateData.h	(revision 2636)
@@ -16,4 +16,5 @@
     UInt_t   fFADCEvtNumber;   // event number from the fadc
     UInt_t   fFADCClockTick;   // clock tick from the fadc (20MHz)
+    Byte_t   fABFlags;         // flag describing in which two-slice block the trigger was raised
 
 public:
@@ -26,7 +27,7 @@
     void Print(Option_t *t=NULL) const;
 
-    void ReadEvt(istream& fin);
+    void ReadEvt(istream& fin, UShort_t ver);
 
-    ClassDef(MRawCrateData, 1) //Container to store the Raw CRATE DATA
+    ClassDef(MRawCrateData, 2) //Container to store the Raw CRATE DATA
 };
 
Index: /trunk/MagicSoft/Mars/mraw/MRawFileRead.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawFileRead.cc	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawFileRead.cc	(revision 2636)
@@ -218,9 +218,14 @@
 
     //
+    //  Get file format version
+    //
+    const UShort_t ver = fRawRunHeader->GetFormatVersion();
+
+    //
     // read the CRATE DATA (see specification) from file
     //
     for (int i=0; i<nc; i++)
     {
-        fRawCrateArray->GetEntry(i)->ReadEvt(*fIn);
+        fRawCrateArray->GetEntry(i)->ReadEvt(*fIn, ver);
         if (!*fIn)
             return kFALSE;
@@ -246,12 +251,12 @@
 
         // Create an artificial time stamp!
-        UInt_t m     = (Byte_t)fmod(t/60e6, 60);
+        UInt_t m = (Byte_t)fmod(t/60e6, 60);
         //const Byte_t h     = (Byte_t)(t/3600e6);
         m += fRawRunHeader->GetRunNumber()*10;
         m %= 360; // 6h
 
-        fRawEvtTime->Set(fRawRunHeader->GetDateYear(),
-                         fRawRunHeader->GetDateMonth(),
-                         fRawRunHeader->GetDateDay(),
+        fRawEvtTime->Set(fRawRunHeader->GetRunStart().Year(),
+                         fRawRunHeader->GetRunStart().Month(),
+                         fRawRunHeader->GetRunStart().Day(),
                          m/60, m%60, s, ms, ns);
     }
Index: /trunk/MagicSoft/Mars/mraw/MRawFileRead.h
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawFileRead.h	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawFileRead.h	(revision 2636)
@@ -33,5 +33,4 @@
     Int_t PostProcess();
 
-
 public:
     MRawFileRead(const char *filename, const char *name=NULL, const char *title=NULL);
Index: /trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 2636)
@@ -29,4 +29,16 @@
 // Root storage container for the RUN HEADER information
 //
+//
+//
+//  Version 2:
+//  ----------
+//   - removed fMJD, fYear, fMonth, fDay
+//   - added fRunStart
+//   - added fRunStop
+// 
+//  Version 1:
+//  ----------
+//   - first implementation
+//
 ////////////////////////////////////////////////////////////////////////////
 
@@ -65,8 +77,4 @@
     fSourceEpochChar[0]=0;
     fSourceEpochDate=0;
-    fMJD=0;
-    fDateYear=0;
-    fDateMonth=0;
-    fDateDay=0;
     fNumCrates=0;
     fNumPixInCrate=0;
@@ -113,4 +121,7 @@
 
     fin.read((char*)&fFormatVersion,    2);     // Total=4
+    if (fFormatVersion>2)
+        *fLog << warn << "WARNING - Format version V" << fFormatVersion << " unknown!" << endl;
+
     fin.read((char*)&fSoftVersion,      2);     // Total=6
     fin.read((char*)&fRunType,          2);     // Total=8
@@ -122,8 +133,13 @@
     fin.read((char*)&fSourceEpochChar,  2);     // Total=56
     fin.read((char*)&fSourceEpochDate,  2);     // Total=58
-    fin.read((char*)&fMJD,              4);     // Total=62
-    fin.read((char*)&fDateYear,         2);     // Total=64
-    fin.read((char*)&fDateMonth,        2);     // Total=66
-    fin.read((char*)&fDateDay,          2);     // Total=68
+    if (fFormatVersion<2)
+    {
+        UShort_t y, m, d;
+        fin.read((char*)dummy, 4); // Former fMJD[4],
+        fin.read((char*)&y,    2); // Former fDateYear[2]
+        fin.read((char*)&m,    2); // Former fDateMonth[2]
+        fin.read((char*)&d,    2); // Former fDateDay[2]
+        fRunStart.Set(y, m, d, 0, 0, 0, 0);
+    }
     fin.read((char*)&fNumCrates,        2);     // Total=70
     fin.read((char*)&fNumPixInCrate,    2);     // Total=72
@@ -131,5 +147,9 @@
     fin.read((char*)&fNumSamplesHiGain, 2);     // Total=76
     fin.read((char*)&fNumEvents,        4);     // Total=80
-
+    if (fFormatVersion>1)
+    {
+        fRunStart.ReadBinary(fin);
+        fRunStop.ReadBinary(fin);
+    }
 
     //
@@ -175,4 +195,7 @@
         *fLog << "Monte Carlo Data";
         break;
+    default:
+        *fLog << "<unknown>";
+        break;
     }
     *fLog << ")" << endl;
@@ -180,5 +203,6 @@
     *fLog << "Source:      '" << fSourceName << "' " << "  ";
     *fLog << fSourceEpochChar << dec << fSourceEpochDate << endl;
-    *fLog << "Date:         " << setprecision(1) << setiosflags(ios::fixed) << fMJD << " (MJD)  " << fDateYear << "/" << fDateMonth << "/" << fDateDay << endl;
+    *fLog << "Run Start:    " << fRunStart << endl;
+    *fLog << "Run Stop:     " << fRunStop << endl;
     *fLog << "Crates:       " << fNumCrates << " x " << fNumPixInCrate << " Pixel/Crate = " << fNumCrates*fNumPixInCrate << " Pixel/Evt" << endl;
     *fLog << "Samples:      " << fNumSamplesLoGain << "/" << fNumSamplesHiGain << " (lo/hi) = " << (fNumSamplesLoGain+fNumSamplesHiGain) * fNumCrates * fNumPixInCrate /1024 << "kB/Evt" << endl;
Index: /trunk/MagicSoft/Mars/mraw/MRawRunHeader.h
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawRunHeader.h	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawRunHeader.h	(revision 2636)
@@ -7,11 +7,7 @@
 ///////////////////////////////////////////////////////////////////////
 
-#ifndef MARS_MParContainer
-#include "MParContainer.h"
+#ifndef MARS_MTime
+#include "MTime.h"
 #endif
-
-// gcc 3.2
-//class ifstream;
-#include <iosfwd>
 
 class TBuffer;
@@ -45,12 +41,6 @@
     Char_t    fProjectName[22];
     Char_t    fSourceName[12];
-    //Float_t   fSourceRA;
-    //Float_t   fSourceDEC;
     Char_t    fSourceEpochChar[2];
     UShort_t  fSourceEpochDate;
-    Float_t   fMJD;
-    UShort_t  fDateYear;
-    UShort_t  fDateMonth;
-    UShort_t  fDateDay;
     UShort_t  fNumCrates;
     UShort_t  fNumPixInCrate;
@@ -58,4 +48,6 @@
     UShort_t  fNumSamplesHiGain;
     UInt_t    fNumEvents;
+    MTime     fRunStart;
+    MTime     fRunStop;
     MArrayS  *fPixAssignment;
 
@@ -64,10 +56,11 @@
     ~MRawRunHeader();
 
-    void SetMagicNumber(UShort_t a)  { fMagicNumber=a; }
-    void SetFormatVersion(UShort_t a){ fFormatVersion=a; }
-    void SetSoftVersion(UShort_t a)  { fSoftVersion=a; }
-    void SetRunType(UShort_t a)      { fRunType=a; }
-    void SetRunNumber(UInt_t a)      { fRunNumber=a; }
-    void SetNumEvents(UInt_t a)      { fNumEvents=a; }
+    // This is to be used in the MC chain only!
+    void SetMagicNumber(UShort_t a)       { fMagicNumber=a; }
+    void SetFormatVersion(UShort_t a)     { fFormatVersion=a; }
+    void SetSoftVersion(UShort_t a)       { fSoftVersion=a; }
+    void SetRunType(UShort_t a)           { fRunType=a; }
+    void SetRunNumber(UInt_t a)           { fRunNumber=a; }
+    void SetNumEvents(UInt_t a)           { fNumEvents=a; }
     void SetNumSamples(UShort_t low, UShort_t high)
     {
@@ -75,10 +68,10 @@
         fNumSamplesHiGain=high;
     }
-    void SetNumCrates(UShort_t a)    {fNumCrates=a; }
-    void SetNumPixInCrate(UShort_t a){fNumPixInCrate=a; }
-    void SetMJD(Float_t a)  {fMJD=a; }
+    void SetNumCrates(UShort_t a)         { fNumCrates=a; }
+    void SetNumPixInCrate(UShort_t a)     { fNumPixInCrate=a; }
 
+    // This is to get the numbers...
     UShort_t GetMagicNumber() const       { return fMagicNumber; }
-    UShort_t GetFormatversion() const     { return fFormatVersion; }
+    UShort_t GetFormatVersion() const     { return fFormatVersion; }
     UShort_t GetSoftVersion() const       { return fSoftVersion; }
     UShort_t GetRunType() const           { return fRunType; }
@@ -86,12 +79,6 @@
     const Char_t  *GetProjectName() const { return fProjectName; }
     const Char_t  *GetSourceName() const  { return fSourceName; }
-    //Float_t  GetSourceRa() const         { return fSourceRA; }
-    //Float_t  GetSourceDec() const        { return fSourceDEC; }
     const Char_t  *GetSourceEpocheChar() const { return fSourceEpochChar; }
     UShort_t GetSourceEpocheDate() const  { return fSourceEpochDate; }
-    Float_t  GetMJD() const               { return fMJD; }
-    UShort_t GetDateYear() const          { return fDateYear; }
-    Byte_t   GetDateMonth() const         { return fDateMonth; }
-    Byte_t   GetDateDay() const           { return fDateDay; }
     UShort_t GetNumCrates() const         { return fNumCrates; }
     UShort_t GetNumPixInCrate() const     { return fNumPixInCrate; }
@@ -99,4 +86,6 @@
     UShort_t GetNumSamplesHiGain() const  { return fNumSamplesHiGain; }
     UInt_t   GetNumEvents() const         { return fNumEvents; }
+    const MTime &GetRunStart() const      { return fRunStart; }
+    const MTime &GetRunEnd() const        { return fRunStop; }
     UShort_t GetPixAssignment(UShort_t i) const;
     UShort_t GetNumConnectedPixels() const;
@@ -114,5 +103,5 @@
     void ReadEvt(istream& fin);
 
-    ClassDef(MRawRunHeader, 1)	// storage container for general info
+    ClassDef(MRawRunHeader, 2)	// storage container for general info
 };
 #endif
Index: /trunk/MagicSoft/Mars/mraw/MRawSocketRead.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawSocketRead.cc	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/MRawSocketRead.cc	(revision 2636)
@@ -303,9 +303,14 @@
 
     //
+    //  Get file format version
+    //
+    const UShort_t ver = fRawRunHeader->GetFormatVersion();
+
+    //
     // read the CRATE DATA (see specification) from file
     //
     for (int i=0; i<nc; i++)
     {
-        fRawCrateArray->GetEntry(i)->ReadEvt(*fIn);
+        fRawCrateArray->GetEntry(i)->ReadEvt(*fIn, ver);
         if (!*fIn)
             return kFALSE;
Index: /trunk/MagicSoft/Mars/mraw/Makefile
===================================================================
--- /trunk/MagicSoft/Mars/mraw/Makefile	(revision 2635)
+++ /trunk/MagicSoft/Mars/mraw/Makefile	(revision 2636)
@@ -23,4 +23,5 @@
 #
 INCLUDES = -I. -I../mbase -I../mgui -I../mgeom -I../MBase
+# mgui (MCamEvent), mgeom(MGeomCam)
 
 #------------------------------------------------------------------------------
