Index: trunk/MagicSoft/Mars/manalysis/MCalibrate.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MCalibrate.cc	(revision 2690)
+++ trunk/MagicSoft/Mars/manalysis/MCalibrate.cc	(revision 2691)
@@ -32,5 +32,6 @@
 //                                                                          //
 //   Input Containers:                                                      //
-//                                                                          //
+//                                                                          //     
+//   MGeomCam                                                               //
 //   MExtractedSingal                                                       //
 //   MCalibrationCam                                                        //
@@ -50,7 +51,5 @@
 #include "MH.h"
 
-#include "MRawRunHeader.h"
-#include "MRawEvtData.h"       // MRawEvtData::GetNumPixels
-#include "MRawEvtPixelIter.h"
+#include "MGeomCam.h"
 
 #include "MCalibrationCam.h"
@@ -83,4 +82,5 @@
 //
 // The PreProcess searches for the following input containers:
+//  - MGeomCam
 //  - MCalibrationCam
 //  - MExtractedSignalCam
@@ -94,8 +94,9 @@
 {
 
-    fCalibrations = (MCalibrationCam*)pList->FindObject("MCalibrationCam");
+
+    fGeomCam = (MGeomCam*)pList->FindObject("MGeomCam");
     if (!fCalibrations)
       {
-        *fLog << err << dbginf << "MCalibrationCam could not be created ... aborting." << endl;        
+        *fLog << err << dbginf << "MGeomCam not found ... aborting." << endl;        
         return kFALSE;
       }
@@ -104,5 +105,12 @@
     if (!fSignals)
       {
-        *fLog << err << dbginf << "Cannot find MExtractedSignalCam ... aborting" << endl;
+        *fLog << err << dbginf << "MExtractedSignalCam not found ... aborting" << endl;
+        return kFALSE;
+      }
+
+    fCalibrations = (MCalibrationCam*)pList->FindObject("MCalibrationCam");
+    if (!fCalibrations)
+      {
+        *fLog << err << dbginf << "MCalibrationCam not found ... aborting." << endl;        
         return kFALSE;
       }
@@ -111,5 +119,5 @@
     if (!fCerPhotEvt)
       {
-        *fLog << err << dbginf << "Cannot find  MCerPhotEvt ... aborting" << endl;
+        *fLog << err << dbginf << "Cannot create MCerPhotEvt ... aborting" << endl;
         return kFALSE;
       }
@@ -125,28 +133,36 @@
 {
 
-  for (UInt_t pixid = 0; pixid<577; pixid++)
+    UInt_t imaxnumpix = fGeomCam->GetNumPixels();
+    
+    for (UInt_t pixid = 0; pixid < imaxnumpix; pixid++)
     {
 
-      MExtractedSignalPix &sig =  (*fSignals)[pixid];
+	MCalibrationPix &pix = (*fCalibrations)[pixid];
 
-      Bool_t logain = sig.IsLoGainUsed();
+	if (pix.IsValid())
+	{
+	    MExtractedSignalPix &sig =  (*fSignals)[pixid];
 
-      Float_t signal;
-      if (logain)
-	signal = sig.GetExtractedSignalLoGain();
-      else
-	signal = sig.GetExtractedSignalHiGain();
+	    Bool_t logain = sig.IsLoGainUsed();
+	
+	    Float_t signal;
+	    if (logain)
+		signal = sig.GetExtractedSignalLoGain();
+	    else
+		signal = sig.GetExtractedSignalHiGain();
+	    
+	    
+	    //      Float_t fCalibraitonConvertionFactor = pix.GetMeanConversionFFactorMethod();
+	    Float_t fCalibrationConvertionFactor = pix.GetMeanConversionBlindPixelMethod();
+	    Float_t fCalibrationConvertionFactorError = pix.GetErrorConversionBlindPixelMethod();
+	    
 
-      MCalibrationPix &pix = (*fCalibrations)[pixid];
-
-      //      Float_t fCalibraitonConvertionFactor = pix.GetMeanConversionFFactorMethod();
-      Float_t fCalibrationConvertionFactor = pix.GetMeanConversionBlindPixelMethod();
-      
-
-      Float_t nphot = signal*fCalibrationConvertionFactor;
-      Float_t nphoterr = 0;
-      
-      fCerPhotEvt->AddPixel(pixid, nphot, nphoterr);
-
+	    Float_t nphot = signal*fCalibrationConvertionFactor;
+	    Float_t nphoterr = signal*fCalibrationConvertionFactorError;;
+	    
+	    fCerPhotEvt->AddPixel(pixid, nphot, nphoterr);
+	}
+	else
+	    (*fCerPhotEvt)[pixid].SetPixelUnused();
     }
 
Index: trunk/MagicSoft/Mars/manalysis/MCalibrate.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MCalibrate.h	(revision 2690)
+++ trunk/MagicSoft/Mars/manalysis/MCalibrate.h	(revision 2691)
@@ -4,5 +4,5 @@
 /////////////////////////////////////////////////////////////////////////////
 //                                                                         //
-// MCalibrate                                                            //
+// MCalibrate                                                              //
 //                                                                         //
 // Integrates the desired ADC time slices of one pixel and apply           //
@@ -18,4 +18,5 @@
 #endif
 
+class MGeomCam;
 class MCalibrationCam;
 class MExtractedSignalCam;
@@ -25,7 +26,8 @@
 {
 
-  MCalibrationCam     *fCalibrations;
-  MExtractedSignalCam *fSignals;
-  MCerPhotEvt         *fCerPhotEvt; // Cerenkov Photon Event used for calculation
+    MGeomCam            *fGeomCam;      // Geometry of the camera 
+    MCalibrationCam     *fCalibrations; // Calibration constants 
+    MExtractedSignalCam *fSignals;      // Integrated charge in FADCs counts
+    MCerPhotEvt         *fCerPhotEvt; // Cerenkov Photon Event used for calculation
  
   Int_t PreProcess(MParList *pList);
@@ -36,5 +38,5 @@
     MCalibrate(const char *name=NULL, const char *title=NULL);
 
-    ClassDef(MCalibrate, 0)   // Task to calculate cerenkov photons from raw data
+    ClassDef(MCalibrate, 0)   // Task to calculate cerenkov photons using calibration constants
 };
  
