Index: trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 5563)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 5570)
@@ -66,5 +66,5 @@
 //     SetPedestalFlag(MCalibrateData::kEvent)  (calibration is done for each event)
 //
-//   By calling SetNamePedADCContainer() and/or SetNamePedPhotContainer() you
+//   By calling SetNamePedestalCam() and/or SetNamePedPhotCam() you
 //   can control the name of the MPedestalCam and/or MPedPhotCam container which is used.
 //
@@ -76,6 +76,6 @@
 //     MCalibrateData cal2;
 //     cal2.SetCalibrationMode(MCalibrateData::kSkip);
-//     cal2.SetNamePedADCContainer("MPedestalFromLoGain");
-//     cal2.SetNamePedPhotContainer("MPedPhotFromLoGain")
+//     cal2.SetNamePedestalCam("MPedestalFromLoGain");
+//     cal2.SetNamePedPhotCam("MPedPhotFromLoGain")
 //     cal2.SetPedestalFlag(MCalibrateData::kEvent);
 //
@@ -133,6 +133,7 @@
 using namespace std;
 
-const TString MCalibrateData::fgNamePedADCContainer  = "MPedestalCam";
-const TString MCalibrateData::fgNamePedPhotContainer = "MPedPhotCam";
+const TString MCalibrateData::fgNamePedestalCam  = "MPedestalCam";
+const TString MCalibrateData::fgNamePedPhotCam = "MPedPhotCam";
+
 // --------------------------------------------------------------------------
 //
@@ -143,10 +144,10 @@
 // Initializes:
 // - fCalibrationMode to kDefault
-// - fPedestalFlag to kRun
+// - fPedestalFlag to kNo
 // - fNamePedADCRunContainer    to "MPedestalCam"  
 // - fNamePedPhotRunContainer   to "MPedPhotCam"    
 //
 MCalibrateData::MCalibrateData(CalibrationMode_t calmode,const char *name, const char *title) 
-    : fGeomCam(NULL),   fPedestal(NULL),
+    : fGeomCam(NULL),   fPedestalMean(NULL), fPedestalRms(NULL),
       fBadPixels(NULL), fCalibrations(NULL), fQEs(NULL), fSignals(NULL), 
       fPedPhot(NULL),   fCerPhotEvt(NULL), fPedestalFlag(kNo)
@@ -158,6 +159,6 @@
   SetCalibrationMode(calmode);
 
-  SetNamePedADCContainer();
-  SetNamePedPhotContainer();
+  SetNamePedestalCam();
+  SetNamePedPhotCam();
 }
 
@@ -225,16 +226,30 @@
     }
 
-    fPedestal = 0;
+    //fPedestalMean = 0;
+    //fPedestalRms  = 0;
     fPedPhot  = 0;
     if (fPedestalFlag)
     {
-        fPedestal = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedADCContainer), "MPedestalCam");
-        if (!fPedestal)
-        {
-            *fLog << err << AddSerialNumber(fNamePedADCContainer) << " [MPedestalCam] not found ... aborting" << endl;
-            return kFALSE;
-        }
-
-        fPedPhot = (MPedPhotCam*)pList->FindCreateObj("MPedPhotCam", AddSerialNumber(fNamePedPhotContainer));
+        if (!fPedestalMean)
+        {
+            fPedestalMean = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedestalCam), "MPedestalCam");
+            if (!fPedestalMean)
+            {
+                *fLog << err << AddSerialNumber(fNamePedestalCam) << " [MPedestalCam] not found ... aborting" << endl;
+                return kFALSE;
+            }
+        }
+
+        if (!fPedestalRms)
+        {
+            fPedestalRms = (MPedestalCam*)pList->FindObject(AddSerialNumber(fNamePedestalCam), "MPedestalCam");
+            if (!fPedestalRms)
+            {
+                *fLog << err << AddSerialNumber(fNamePedestalCam) << " [MPedestalCam] not found ... aborting" << endl;
+                return kFALSE;
+            }
+        }
+
+        fPedPhot = (MPedPhotCam*)pList->FindCreateObj("MPedPhotCam", AddSerialNumber(fNamePedPhotCam));
         if (!fPedPhot)
             return kFALSE;
@@ -266,7 +281,13 @@
 
     // Sizes might have changed
-    if (fPedestalFlag && (Int_t)fPedestal->GetSize() != fSignals->GetSize())
-    {
-        *fLog << err << "Size mismatch of MPedestalCam and MCalibrationCam... abort." << endl;
+    if (fPedestalFlag && (Int_t)fPedestalMean->GetSize() != fSignals->GetSize())
+    {
+        *fLog << err << "Size mismatch of MPedestalCam for Mean and MCalibrationCam... abort." << endl;
+        return kFALSE;
+    }
+
+    if (fPedestalFlag && (Int_t)fPedestalRms->GetSize() != fSignals->GetSize())
+    {
+        *fLog << err << "Size mismatch of MPedestalCam for RMS and MCalibrationCam... abort." << endl;
         return kFALSE;
     }
@@ -499,11 +520,10 @@
                 cpix->SetPixelSaturated();
         }
+
         if (pedestal)
         {
-            const MPedestalPix &ped = (*fPedestal)[pixidx];
-
             // pedestals/(used FADC slices)   in [ADC] counts
-            const Float_t pedes  = ped.GetPedestal()    * slices;
-            const Float_t pedrms = ped.GetPedestalRms() * sqrtslices;
+            const Float_t pedes  = (*fPedestalMean)[pixidx].GetPedestal()   * slices;
+            const Float_t pedrms = (*fPedestalRms)[pixidx].GetPedestalRms() * sqrtslices;
 
             //
@@ -590,14 +610,14 @@
     }
 
-    if (fNamePedADCContainer != fgNamePedADCContainer)
-    {
-        out << "   " << GetUniqueName() << ".SetNamePedADCContainer(";
-        out << fNamePedADCContainer.Data() << ");" << endl;
-    }
-
-    if (fNamePedPhotContainer  != fgNamePedPhotContainer)
-    {
-        out << "   " << GetUniqueName() << ".SetNamePedPhotContainer(";
-        out << fNamePedPhotContainer.Data() << ");" << endl;
+    if (fNamePedestalCam != fgNamePedestalCam)
+    {
+        out << "   " << GetUniqueName() << ".SetNamePedestalCam(";
+        out << fNamePedestalCam << ");" << endl;
+    }
+
+    if (fNamePedPhotCam  != fgNamePedPhotCam)
+    {
+        out << "   " << GetUniqueName() << ".SetNamePedPhotCam(";
+        out << fNamePedPhotCam << ");" << endl;
     }
 }
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateData.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateData.h	(revision 5563)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateData.h	(revision 5570)
@@ -34,9 +34,10 @@
 {
 private:
-  static const TString fgNamePedADCContainer;    //! "MPedestalCam"
-  static const TString fgNamePedPhotContainer;   //! "MPedPhotCam"
+  static const TString fgNamePedestalCam;    //! "MPedestalCam"
+  static const TString fgNamePedPhotCam;     //! "MPedPhotCam"
   
   MGeomCam              *fGeomCam;          //! Camera geometry container
-  MPedestalCam          *fPedestal;         //! Pedestals/slice [ADC counts]
+  MPedestalCam          *fPedestalMean;     //! Pedestals/slice [ADC counts]
+  MPedestalCam          *fPedestalRms;      //! Pedestals/slice [ADC counts]
   MBadPixelsCam         *fBadPixels;        //! Bad Pixels information
   MCalibrationChargeCam *fCalibrations;     //! Calibration constants
@@ -50,6 +51,6 @@
   Byte_t   fPedestalFlag;                   // Flags defining to calibrate the pedestal each event or each run
   
-  TString  fNamePedADCContainer;            // name of fPedestal
-  TString  fNamePedPhotContainer;           // name of fPedPhot
+  TString  fNamePedestalCam;            // name of fPedestal
+  TString  fNamePedPhotCam;           // name of fPedPhot
 
   Int_t Calibrate(Bool_t data, Bool_t pedestal) const;
@@ -95,11 +96,14 @@
   void   SetCalibrationMode ( CalibrationMode_t calmode=kDefault ) { fCalibrationMode=calmode; }
   
-  void   SetNamePedADCContainer(const char *name=fgNamePedADCContainer.Data())
+  void   SetNamePedestalCam(const char *name=fgNamePedestalCam.Data())
   {
-      fNamePedADCContainer  = name;
+      fNamePedestalCam  = name;
   }
-  void   SetNamePedPhotContainer(const char *name=fgNamePedPhotContainer.Data())
+  void SetPedestalCamMean(MPedestalCam *cam) { fPedestalMean = cam; }
+  void SetPedestalCamRms(MPedestalCam *cam)  { fPedestalRms  = cam; }
+
+  void   SetNamePedPhotCam(const char *name=fgNamePedPhotCam.Data())
   {
-      fNamePedPhotContainer   = name;
+      fNamePedPhotCam   = name;
   }
   
