Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 2199)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 2200)
@@ -40,4 +40,11 @@
      - default mode changed from UPDATE to RECREATE
      - default compression level changed from 9 to 1
+
+   * mraw/MRawEvtData.[h,cc]:
+     - fixed to skip non connected pixels
+     
+   * mraw/MRawRunHeader.[h,cc]:
+     - added GetNumConnectedPixels
+
 
 
Index: /trunk/MagicSoft/Mars/mraw/MRawEvtData.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawEvtData.cc	(revision 2199)
+++ /trunk/MagicSoft/Mars/mraw/MRawEvtData.cc	(revision 2200)
@@ -170,5 +170,6 @@
     {
         *fLog << endl;
-        *fLog << " " << setfill(' ') << setw(3) << dec << i << ": ";
+        *fLog << " " << setfill(' ') << setw(3) << dec << i << " -";
+        *fLog << " " << setfill(' ') << setw(3) << dec << (*fHiGainPixId)[i] << ": ";
         *fLog << (manip?dec:hex) << flush;
 
@@ -313,9 +314,11 @@
     if (fRunHeader && flag)
     {
-        const int npix = fRunHeader->GetNumCrates()*fRunHeader->GetNumPixInCrate();
+        //const int npix = fRunHeader->GetNumCrates()*fRunHeader->GetNumPixInCrate();
+        const int npix = fRunHeader->GetNumConnectedPixels();
 
         if (fArraySize == npix)
         {
             fPosInArray = 0;
+            fConnectedPixels = 0;
             return;
         }
@@ -347,5 +350,6 @@
     if (flag && fRunHeader)
     {
-        const int npix = fRunHeader->GetNumCrates()*fRunHeader->GetNumPixInCrate();
+        //const int npix = fRunHeader->GetNumCrates()*fRunHeader->GetNumPixInCrate();
+        const int npix = fRunHeader->GetNumConnectedPixels();
 
         fHiGainPixId       = new MArrayS(npix);
@@ -367,4 +371,5 @@
 
     fPosInArray = 0;
+    fConnectedPixels = 0;
 }
 
@@ -428,18 +433,21 @@
     const UShort_t npos = npic*fPosInArray;
 
-    Byte_t *higainsam = fHiGainFadcSamples->GetArray()+nhi*npos;
-    Byte_t *logainsam = fLoGainFadcSamples->GetArray()+nlo*npos;
-
-    // UShort_t *hipixid = (UShort_t*)fHiGainPixId->GetArray()+npos;
-    // UShort_t *lopixid = (UShort_t*)fLoGainPixId->GetArray()+npos;
+    Byte_t *higainsam = fHiGainFadcSamples->GetArray()+nhi*fConnectedPixels;
+    Byte_t *logainsam = fLoGainFadcSamples->GetArray()+nlo*fConnectedPixels;
 
     for (int i=0; i<npic; i++)
     {
-        //
-        // get the spiral pixel number from the run header
-        //
+        fin.read((char*)higainsam, nhi);
+        fin.read((char*)logainsam, nlo);
+
+        // calc the spiral hardware pixel number
         const UShort_t ipos = npos+i;
 
-        const UShort_t npix = fRunHeader->GetPixAssignment(ipos);
+        // -1 converts the hardware pixel Id into the software pixel index
+        const Int_t npix = fRunHeader->GetPixAssignment(ipos);
+
+        // Check whether the pixel is connected or not
+        if (npix==0)
+            continue;
 
         //
@@ -448,6 +456,5 @@
         //  Add to lo gains if lflag = 1
         //
-        fHiGainPixId->AddAt(npix, ipos);
-        fin.read((char*)higainsam, nhi);
+        fHiGainPixId->AddAt(npix, fConnectedPixels);
         higainsam += nhi;
 
@@ -455,8 +462,9 @@
         //if (IsLoGainOn(i, j))
         //{
-        fLoGainPixId->AddAt(npix, ipos);
-        fin.read((char*)logainsam, nlo);
+        fLoGainPixId->AddAt(npix, fConnectedPixels);
         logainsam += nlo;
         //}
+
+        fConnectedPixels++;
     }
 
Index: /trunk/MagicSoft/Mars/mraw/MRawEvtData.h
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawEvtData.h	(revision 2199)
+++ /trunk/MagicSoft/Mars/mraw/MRawEvtData.h	(revision 2200)
@@ -30,6 +30,7 @@
     MArrayB *fLoGainFadcSamples;  // list of lo gain samples of all pixels (ordering: see fLoGainPixId)
 
-    Int_t fPosInArray;   //!
-    Int_t fArraySize;    //!
+    Int_t fPosInArray;        //!
+    Int_t fConnectedPixels;   //!
+    Int_t fArraySize;         //!
 
     void InitArrays(Bool_t flag=kFALSE);
Index: /trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 2199)
+++ /trunk/MagicSoft/Mars/mraw/MRawRunHeader.cc	(revision 2200)
@@ -173,4 +173,15 @@
 }
 
+UShort_t MRawRunHeader::GetNumConnectedPixels() const
+{
+    const Int_t num = fPixAssignment->GetSize();
+
+    UShort_t rc = 0;
+    for (int i=0; i<num; i++)
+        if (GetPixAssignment(i)>0)
+            rc++;
+    return rc;
+}
+
 // --------------------------------------------------------------------------
 //
Index: /trunk/MagicSoft/Mars/mraw/MRawRunHeader.h
===================================================================
--- /trunk/MagicSoft/Mars/mraw/MRawRunHeader.h	(revision 2199)
+++ /trunk/MagicSoft/Mars/mraw/MRawRunHeader.h	(revision 2200)
@@ -95,4 +95,5 @@
     UInt_t   GetNumEvents() const         { return fNumEvents; }
     UShort_t GetPixAssignment(UShort_t i) const;
+    UShort_t GetNumConnectedPixels() const;
 
     UInt_t GetNumSamplesPerCrate() const
