Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 2668)
+++ trunk/MagicSoft/Mars/Changelog	(revision 2669)
@@ -4,4 +4,12 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2003/12/12: Abelardo Moralejo
+
+   * manalysis/MMcCalibrationCalc.[h,cc]
+     - added fADC2PheInner, fADC2PheOuter and setter functions. Put 
+       these values into MCalibrationCam. Look for MExtractedSignalCam
+       to check which gain branch has been used (relevant for the
+       conversion factor) for each pixel.
+
 
  2003/12/12: Markus Gaug
Index: trunk/MagicSoft/Mars/manalysis/MMcCalibrationCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcCalibrationCalc.cc	(revision 2668)
+++ trunk/MagicSoft/Mars/manalysis/MMcCalibrationCalc.cc	(revision 2669)
@@ -28,7 +28,9 @@
 //
 //  This task looks for the ìnformation about FADC pedestals in
-//  MMcFadcHeader and translates it to the pedestal mean and rms,
+//  MMcFadcHeader and translates it to the pedestal mean and rms (in adc counts),
 //  and in the conversion factor between photons and ADC counts in
 //  MCalibrationCam.
+//  Then we create and fill also the MPedPhotCam object containing the pedestal
+//  rms in units of photons.
 //
 //  Input Containers:
@@ -38,4 +40,5 @@
 //  Output Containers:
 //   MCalibrationCam
+//   MPedPhotCam
 //
 /////////////////////////////////////////////////////////////////////////////
@@ -49,4 +52,8 @@
 #include "MCalibrationPix.h"
 #include "MCalibrationCam.h"
+#include "MExtractedSignalCam.h"
+#include "MExtractedSignalPix.h"
+#include "MPedPhotCam.h"
+#include "MPedPhotPix.h"
 
 #include "MRawRunHeader.h"
@@ -61,4 +68,7 @@
     fName  = name  ? name  : "MMcCalibrationCalc";
     fTitle = title ? title : "Write MC pedestals and conversion factors into MCalibration Container";
+
+    fADC2PheInner = 1.;
+    fADC2PheOuter = 1.;
 
 }
@@ -94,5 +104,19 @@
     return kTRUE;
 
-  return pList->FindCreateObj(AddSerialNumber("MCalibrationCam")) ? kTRUE : kFALSE;
+  if ( ! pList->FindCreateObj(AddSerialNumber("MCalibrationCam")))
+    {
+      *fLog << err << dbginf << "Cannot create MCalibrationCam... aborting." << endl;
+      return kFALSE;
+    }
+
+  fSignalCam = (MExtractedSignalCam*) pList->FindObject(AddSerialNumber("MExtractedSignalCam"));
+  if ( ! fSignalCam)
+    {
+      *fLog << err << dbginf << "Cannot find MExtractedSignalCam... aborting." << endl;
+      return kFALSE;
+    }
+
+  return kTRUE;
+
 }
 
@@ -122,5 +146,5 @@
     }
 
-    fCalCam = (MCalibrationCam*)pList->FindCreateObj(AddSerialNumber("MCalibrationCam"));
+    fCalCam = (MCalibrationCam*)pList->FindObject(AddSerialNumber("MCalibrationCam"));
 
     if (!fCalCam)
@@ -144,11 +168,24 @@
     for (int i=0; i<num; i++)
     {
-        MCalibrationPix &pix = (*fCalCam)[i];
+        MCalibrationPix &calpix = (*fCalCam)[i];
+	MExtractedSignalPix &sigpix = (*fSignalCam)[i];
 
-        const Float_t pedestmean = fHeaderFadc->GetPedestal(i);
-        const Float_t pedestrms  = fHeaderFadc->GetPedestalRmsHigh(i); 
-	// per slice
+        const Float_t pedestmean = sigpix.IsLoGainUsed()? 
+	  fSignalCam->GetNumUsedLoGainFADCSlices()*fHeaderFadc->GetPedestal(i) : 
+	  fSignalCam->GetNumUsedHiGainFADCSlices()*fHeaderFadc->GetPedestal(i);
 
-        pix.SetPedestal(pedestmean, pedestrms);
+        const Float_t pedestrms  = sigpix.IsLoGainUsed()? 
+	  sqrt((Double_t)(fSignalCam->GetNumUsedLoGainFADCSlices())) * fHeaderFadc->GetPedestalRmsLow(i) : 
+	  sqrt((Double_t)(fSignalCam->GetNumUsedHiGainFADCSlices())) * fHeaderFadc->GetPedestalRmsHigh(i);
+
+	// ped mean and rms per pixel, according to signal calculation:
+
+        calpix.SetPedestal(pedestmean, pedestrms);
+
+	if (i < 397) // FIXME!
+	  calpix.SetConversionBlindPixelMethod(fADC2PheInner, 0., 0.);
+	else
+	  calpix.SetConversionBlindPixelMethod(fADC2PheOuter, 0., 0.);
+
     }
 
Index: trunk/MagicSoft/Mars/manalysis/MMcCalibrationCalc.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcCalibrationCalc.h	(revision 2668)
+++ trunk/MagicSoft/Mars/manalysis/MMcCalibrationCalc.h	(revision 2669)
@@ -8,4 +8,5 @@
 class MCalibrationCam;
 class MMcFadcHeader;
+class MExtractedSignalCam;
 
 class MMcCalibrationCalc : public MTask
@@ -17,9 +18,16 @@
     Bool_t ReInit(MParList *pList);
 
-    MCalibrationCam *fCalCam;
-    MMcFadcHeader   *fHeaderFadc;
+    MCalibrationCam     *fCalCam;
+    MMcFadcHeader       *fHeaderFadc;
+    MExtractedSignalCam *fSignalCam;
+
+    Float_t fADC2PheInner;
+    Float_t fADC2PheOuter;
 
 public:
     MMcCalibrationCalc(const char *name=NULL, const char *title=NULL);
+
+    void SetADC2PheInner(Float_t x) {fADC2PheInner = x; }
+    void SetADC2PheOuter(Float_t x) {fADC2PheOuter = x; }
 
     ClassDef(MMcCalibrationCalc, 0)   // Task which obtains, for MC files, the pedestal mean and rms, and the calibration factor from ADC counts to photons. 
