Index: trunk/MagicSoft/Mars/mraw/MRawCrateArray.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawCrateArray.cc	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawCrateArray.cc	(revision 2645)
@@ -94,4 +94,9 @@
 }
 
+Int_t MRawCrateArray::GetSize() const
+{
+    return fArray->GetEntriesFast();
+}
+
 // --------------------------------------------------------------------------
 //
Index: trunk/MagicSoft/Mars/mraw/MRawCrateArray.h
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawCrateArray.h	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawCrateArray.h	(revision 2645)
@@ -27,4 +27,5 @@
 
     void SetSize(Int_t i);
+    Int_t GetSize() const;
     MRawCrateData *GetEntry(Int_t i);
 
Index: trunk/MagicSoft/Mars/mraw/MRawCrateData.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawCrateData.cc	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawCrateData.cc	(revision 2645)
@@ -73,4 +73,4 @@
     *fLog << "FADCEventNr   = " << fFADCEvtNumber << "  ";
     *fLog << "FADCClockTick = " << fFADCClockTick << " (20MHz)" << endl;
-    *fLog << "ABFlags       = " << hex << fABFlags << " (20MHz)" << endl;
+    *fLog << "ABFlags       = " << hex << fABFlags << endl;
 }
Index: trunk/MagicSoft/Mars/mraw/MRawCrateData.h
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawCrateData.h	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawCrateData.h	(revision 2645)
@@ -24,4 +24,5 @@
     UInt_t  GetFADCEvtNumber() const   { return fFADCEvtNumber;  }
     UInt_t  GetFADCClockTick() const   { return fFADCClockTick;  }
+    Byte_t  GetABFlags() const         { return fABFlags;        }
 
     void Print(Option_t *t=NULL) const;
Index: trunk/MagicSoft/Mars/mraw/MRawEvtData.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawEvtData.cc	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawEvtData.cc	(revision 2645)
@@ -47,5 +47,15 @@
 //
 //
-//   Version 2: Derives from MCamEvent now
+//   Version 3:
+//   ----------
+//    - Added fABFlags
+//
+//   Version 2:
+//   ----------
+//    - Derives from MCamEvent now
+//
+//   Version 1:
+//   ----------
+//    - First implementation
 //
 /////////////////////////////////////////////////////////////////////////////
@@ -66,4 +76,8 @@
 #include "MArrayB.h"
 #include "MGeomCam.h"
+
+#include "MRawCrateArray.h"
+#include "MRawCrateData.h"
+
 #include "MRawRunHeader.h"
 #include "MRawEvtPixelIter.h"
@@ -109,4 +123,5 @@
     fHiGainFadcSamples->Reset();
     fLoGainFadcSamples->Reset();
+    fABFlags->Reset();
 }
 
@@ -171,11 +186,12 @@
     for (int i=0; i<nHiPix; i++)
     {
+        const UShort_t idx = (*fHiGainPixId)[i];
+
         *fLog << endl;
-        *fLog << " " << setfill(' ') << setw(3) << dec << i << " -";
-        *fLog << " " << setfill(' ') << setw(3) << dec << (*fHiGainPixId)[i] << ": ";
-        *fLog << (manip?dec:hex);
-
-        if (!manip)
-            *fLog << setfill('0');
+        *fLog << " " << setfill(' ') << setw(3) << dec << i << " - " << setw(3);
+        *fLog << dec << idx << " <" << hex << setfill('0') << setw(2);
+        *fLog << ((Int_t)(*fABFlags)[idx/8]&0xff) << "> ";
+
+        *fLog << (manip?dec:hex) << (manip ? setfill(' ') : setfill('0'));
 
         for (int j=0; j<nHiSamp; j++)
@@ -187,5 +203,5 @@
         }
 
-        if (!(l<nLoPix && (*fLoGainPixId)[l]==(*fHiGainPixId)[i]))
+        if (!(l<nLoPix && (*fLoGainPixId)[l]==idx))
             continue;
 
@@ -364,4 +380,5 @@
     delete fHiGainFadcSamples;
     delete fLoGainFadcSamples;
+    delete fABFlags;
 }
 
@@ -382,4 +399,5 @@
         fHiGainFadcSamples = new MArrayB(npix*fRunHeader->GetNumSamplesHiGain());
         fLoGainFadcSamples = new MArrayB(npix*fRunHeader->GetNumSamplesLoGain());
+        fABFlags           = new TArrayC((npix-1)/8+1);
 
         fArraySize  = npix;
@@ -391,4 +409,5 @@
         fHiGainFadcSamples = new MArrayB(0);
         fLoGainFadcSamples = new MArrayB(0);
+        fABFlags           = new TArrayC(0);
 
         fArraySize = 0;
@@ -457,4 +476,6 @@
 
     const UShort_t npos = npic*fPosInArray;
+
+    const Byte_t ab = fCrateArray->GetEntry(fPosInArray)->GetABFlags();
 
     Byte_t *higainsam = fHiGainFadcSamples->GetArray()+nhi*fConnectedPixels;
@@ -490,4 +511,9 @@
         logainsam += nlo;
         //}
+
+        if (TESTBIT(ab, i))
+            SETBIT((*fABFlags)[npix/8], npix%8);
+        else
+            CLRBIT((*fABFlags)[npix/8], npix%8);
 
         fConnectedPixels++;
@@ -539,4 +565,6 @@
     *evt.fLoGainFadcSamples = *fLoGainFadcSamples;
 
+    *evt.fABFlags = *fABFlags;
+
     evt.fPosInArray      = fPosInArray;
     evt.fConnectedPixels = fConnectedPixels;
Index: trunk/MagicSoft/Mars/mraw/MRawEvtData.h
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawEvtData.h	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawEvtData.h	(revision 2645)
@@ -11,4 +11,5 @@
 
 class MRawRunHeader;
+class MRawCrateArray;
 
 class TArrayC;
@@ -20,5 +21,6 @@
     friend class MRawEvtPixelIter;
 private:
-    MRawRunHeader *fRunHeader;    //! provides information about numbers
+    MRawRunHeader  *fRunHeader;   //! provides information about numbers
+    MRawCrateArray *fCrateArray;  //! provides information about ab flag
 
     // FIXME: COMMENT ABOUT ORDERING
@@ -29,4 +31,6 @@
     MArrayS *fLoGainPixId;        //-> list of pixel IDs of lo gain channel
     MArrayB *fLoGainFadcSamples;  //-> list of lo gain samples of all pixels (ordering: see fLoGainPixId)
+
+    TArrayC *fABFlags;            //-> A information about the exact trigger position
 
     Int_t fPosInArray;        //!
@@ -41,5 +45,5 @@
     ~MRawEvtData();
 
-    void Init(MRawRunHeader *rh)
+    void Init(MRawRunHeader *rh, MRawCrateArray *arr)
     {
         //
@@ -47,5 +51,6 @@
         // from a magic binary file
         //
-        fRunHeader = rh;
+        fRunHeader  = rh;
+        fCrateArray = arr;
     }
 
@@ -78,5 +83,5 @@
         ;
 
-    ClassDef(MRawEvtData, 2) //Container to store the raw Event Data
+    ClassDef(MRawEvtData, 3) //Container to store the raw Event Data
 };
 
Index: trunk/MagicSoft/Mars/mraw/MRawEvtPixelIter.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawEvtPixelIter.cc	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawEvtPixelIter.cc	(revision 2645)
@@ -50,4 +50,6 @@
 #include "MRawEvtPixelIter.h"
 
+#include <TArrayC.h>
+
 #include "MRawEvtData.h"
 
@@ -138,4 +140,5 @@
     fHiGainPos  = fData->fHiGainFadcSamples->GetArray()-fNumHiGainSamples;
     fLoGainPos  = fData->fLoGainFadcSamples->GetArray()-fNumLoGainSamples;
+    fABFlags    = fData->fABFlags->GetArray();
 
     //
Index: trunk/MagicSoft/Mars/mraw/MRawEvtPixelIter.h
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawEvtPixelIter.h	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawEvtPixelIter.h	(revision 2645)
@@ -25,4 +25,6 @@
     Byte_t   *fHiGainPos;       //! pointer to hi-gain samples of actual pixel
     Byte_t   *fLoGainPos;       //! pointer to lo-gain samples of actual pixel
+
+    Char_t   *fABFlags;         //! pointer to AB flags
 
     UShort_t fNumEntry;
@@ -93,4 +95,18 @@
         return fLoGainId && *fHiGainId==*fLoGainId;
     }
+    Bool_t HasABFlag() const
+    {
+        //
+        // return kTRUE  the lo gains exist for the actual pixel, else return kFALSE
+        //
+        return TESTBIT(fABFlags[GetPixelId()/8], GetPixelId()%8);
+    }
+    Byte_t GetABFlag() const
+    {
+        //
+        // return kTRUE  the lo gains exist for the actual pixel, else return kFALSE
+        //
+        return (Byte_t)fABFlags[GetPixelId()/8];
+    }
 
     Byte_t *GetLoGainSamples() const
Index: trunk/MagicSoft/Mars/mraw/MRawFileRead.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawFileRead.cc	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawFileRead.cc	(revision 2645)
@@ -179,5 +179,5 @@
     //
     fRawEvtHeader->Init(fRawRunHeader, fRawEvtTime);
-    fRawEvtData  ->Init(fRawRunHeader);
+    fRawEvtData  ->Init(fRawRunHeader, fRawCrateArray);
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 2645)
@@ -133,5 +133,5 @@
     fin.read((char*)&fSourceEpochChar,  2);     // Total=56
     fin.read((char*)&fSourceEpochDate,  2);     // Total=58
-    if (fFormatVersion<2)
+    if (fFormatVersion<2)                       // Total += 10
     {
         UShort_t y, m, d;
@@ -142,13 +142,13 @@
         fRunStart.Set(y, m, d, 0, 0, 0, 0);
     }
-    fin.read((char*)&fNumCrates,        2);     // Total=70
-    fin.read((char*)&fNumPixInCrate,    2);     // Total=72
-    fin.read((char*)&fNumSamplesLoGain, 2);     // Total=74
-    fin.read((char*)&fNumSamplesHiGain, 2);     // Total=76
-    fin.read((char*)&fNumEvents,        4);     // Total=80
+    fin.read((char*)&fNumCrates,        2);     // Total=60
+    fin.read((char*)&fNumPixInCrate,    2);     // Total=62
+    fin.read((char*)&fNumSamplesLoGain, 2);     // Total=64
+    fin.read((char*)&fNumSamplesHiGain, 2);     // Total=66
+    fin.read((char*)&fNumEvents,        4);     // Total=70
     if (fFormatVersion>1)
     {
-        fRunStart.ReadBinary(fin);
-        fRunStop.ReadBinary(fin);
+        fRunStart.ReadBinary(fin);              // Total += 7
+        fRunStop.ReadBinary(fin);               // Total += 7
     }
 
@@ -255,4 +255,11 @@
 Int_t MRawRunHeader::GetNumTotalBytes() const
 {
-    return 80+fNumCrates*fNumPixInCrate*2+16;
-}
+    switch (fFormatVersion)
+    {
+    case 1:
+        return 80+fNumCrates*fNumPixInCrate*2+16;
+    case 2:
+        return 84+fNumCrates*fNumPixInCrate*2+16;
+    }
+    return 0;
+}
Index: trunk/MagicSoft/Mars/mraw/MRawSocketRead.cc
===================================================================
--- trunk/MagicSoft/Mars/mraw/MRawSocketRead.cc	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/MRawSocketRead.cc	(revision 2645)
@@ -277,5 +277,5 @@
     //
     fRawEvtHeader->Init(fRawRunHeader, fTime);
-    fRawEvtData  ->Init(fRawRunHeader);
+    fRawEvtData  ->Init(fRawRunHeader, fRawCrateArray);
 
     //
Index: trunk/MagicSoft/Mars/mraw/RawIncl.h
===================================================================
--- trunk/MagicSoft/Mars/mraw/RawIncl.h	(revision 2636)
+++ trunk/MagicSoft/Mars/mraw/RawIncl.h	(revision 2645)
@@ -1,4 +1,5 @@
 #ifndef __CINT__
 
+#include <TArrayC.h>
 #include "MArrayB.h"
 #include "MArrayS.h"
