Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 2665)
+++ trunk/MagicSoft/Mars/Changelog	(revision 2666)
@@ -4,4 +4,12 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2003/12/12: Markus Gaug
+	
+   * manalysis/MExtractSignal.[h,cc]
+	- now with constructor allowing to set the first and last used time slice
+	- (default like before)
+	- extract number of pixels from MGeomCam
+
 
  2003/12/12: Sabrina Stark
Index: trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.cc	(revision 2665)
+++ trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.cc	(revision 2666)
@@ -83,4 +83,6 @@
 #include "MPedestalPix.h"
 
+#include "MGeomCam.h"
+
 #include "MLog.h"
 #include "MLogManip.h"
@@ -220,18 +222,19 @@
     }
 
-    //    fNumHiGainSamples =  fRunHeader->GetNumSamplesHiGain();
-    //    fNumLoGainSamples =  fRunHeader->GetNumSamplesLoGain();
-    fNumHiGainSamples =  6;
-    fNumLoGainSamples =  6;
-
-    //
-    // FIXME: The next statement simply does not work: 
-    //        fRawEvt->GetNumPixels() returns always 0
-    // fCalibrations->InitSize(fRawEvt->GetNumPixels());
-    //
-
-    fCalibrations->InitSize(577);    
-
-    for (Int_t i=0;i<577;i++)
+
+    MGeomCam *cam = (MGeomCam*)pList->FindObject("MGeomCam");
+    if (!cam)
+    {
+        *fLog << err << GetDescriptor() << ": No MGeomCam found... aborting." << endl;
+        return kFALSE;
+    }
+
+
+    fNumHiGainSamples =  fSignals->GetNumUsedHiGainFADCSlices();
+    fNumLoGainSamples =  fSignals->GetNumUsedLoGainFADCSlices();
+
+    fCalibrations->InitSize(cam->GetNumPixels());    
+
+    for (UInt_t i=0;i<cam->GetNumPixels();i++)
       {
         MCalibrationPix &pix = (*fCalibrations)[i];
Index: trunk/MagicSoft/Mars/manalysis/MCalibrationPix.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MCalibrationPix.cc	(revision 2665)
+++ trunk/MagicSoft/Mars/manalysis/MCalibrationPix.cc	(revision 2666)
@@ -152,12 +152,13 @@
 	  
 	  Float_t nsb = TMath::Sqrt(fPedRms*fPedRms - fElectronicPedRms*fElectronicPedRms);
-
 	  //	  Float_t logainrms = fElectronicPedRms + (TMath::Sqrt(fPedRms*fPedRms - fElectronicPedRms*fElectronicPedRms));
-	  Float_t logainrms = (TMath::Sqrt(nsb*nsb + 100.*fElectronicPedRms*fElectronicPedRms));
-	  if (logainrms > 0.)
-	    fRSigmaSquare = (fSigmaCharge*fSigmaCharge) - (logainrms*logainrms);
+
+	  if (nsb > 0.)
+	    {
+	      Float_t logainrms = (TMath::Sqrt(nsb*nsb + 100.*fElectronicPedRms*fElectronicPedRms));
+	      fRSigmaSquare = (fSigmaCharge*fSigmaCharge) - (logainrms*logainrms);
+	    }
 	  else
-	    fRSigmaSquare =  fSigmaCharge*fSigmaCharge;
-
+	    fRSigmaSquare =  fSigmaCharge*fSigmaCharge - (100.*fElectronicPedRms*fElectronicPedRms);
 	}
       else
@@ -167,5 +168,5 @@
       {
        fPheFFactorMethod         =  fFactor * fCharge*fCharge / fRSigmaSquare;
-       fConversionFFactorMethod  =  fPheFFactorMethod /   fCharge ;
+       fConversionFFactorMethod  =  fPheFFactorMethod /  fCharge ;
       }
     else
Index: trunk/MagicSoft/Mars/manalysis/MCalibrationPix.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MCalibrationPix.h	(revision 2665)
+++ trunk/MagicSoft/Mars/manalysis/MCalibrationPix.h	(revision 2666)
@@ -94,15 +94,16 @@
 						    }
 
-  Float_t GetMeanConversionBlindPixelMethod()          { return fConversionBlindPixelMethod ; }
-  Float_t GetErrorConversionBlindPixelMethod()         { return fConversionErrorBlindPixelMethod ; }
-  Float_t GetSigmaConversionBlindPixelMethod()                   { return fConversionSigmaBlindPixelMethod ; }
+  Float_t GetMeanConversionBlindPixelMethod()   const  { return fConversionBlindPixelMethod ; }
+  Float_t GetErrorConversionBlindPixelMethod()  const  { return fConversionErrorBlindPixelMethod ; }
+  Float_t GetSigmaConversionBlindPixelMethod()  const  { return fConversionSigmaBlindPixelMethod ; }
 
-  Float_t GetMeanConversionFFactorMethod()             { return fConversionFFactorMethod ; }
-  Float_t GetErrorConversionFFactorMethod()            { return fConversionErrorFFactorMethod ; }
-  Float_t GetSigmaConversionFFactorMethod()            { return fConversionSigmaFFactorMethod ; }
+  Float_t GetMeanConversionFFactorMethod()      const  { return fConversionFFactorMethod ; }
+  Float_t GetErrorConversionFFactorMethod()     const  { return fConversionErrorFFactorMethod ; }
+  Float_t GetSigmaConversionFFactorMethod()     const  { return fConversionSigmaFFactorMethod ; }
+  Float_t GetPheFFactorMethod()                 const  { return fPheFFactorMethod;           }  
  
-  Float_t GetMeanConversionPINDiodeMethod()            { return fConversionPINDiodeMethod ; }
-  Float_t GetErrorConversionPINDiodeMethod()           { return fConversionErrorPINDiodeMethod ; }
-  Float_t GetSigmaConversionPINDiodeMethod()           { return fConversionSigmaPINDiodeMethod ; }
+  Float_t GetMeanConversionPINDiodeMethod()     const  { return fConversionPINDiodeMethod ; }
+  Float_t GetErrorConversionPINDiodeMethod()    const  { return fConversionErrorPINDiodeMethod ; }
+  Float_t GetSigmaConversionPINDiodeMethod()    const  { return fConversionSigmaPINDiodeMethod ; }
 
   void   SetChargesInGraph(Float_t qhi,Float_t qlo) { fHist->SetPointInGraph(qhi,qlo); }
@@ -126,6 +127,4 @@
   void Draw(Option_t *opt="")           { fHist->Draw(opt); }
   
-  Float_t GetPheFFactorMethod()           const { return fPheFFactorMethod;           }  
-  Float_t GetConversionFFactorMethod()    const { return fConversionFFactorMethod;    }
   
   ClassDef(MCalibrationPix, 1)	// Storage Container for Calibration information of one pixel
Index: trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc	(revision 2665)
+++ trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc	(revision 2666)
@@ -37,4 +37,6 @@
 #include "MPedestalPix.h"
 
+#include "MGeomCam.h"
+
 #include "MLog.h"
 #include "MLogManip.h"
@@ -56,8 +58,6 @@
 // Default constructor. 
 //
-MExtractSignal::MExtractSignal(const char *name, const char *title)
-  : fNumHiGainSamples(0), fNumLoGainSamples(0),
-    fSqrtHiGainSamples(0), fSqrtLoGainSamples(0),
-    fBefore(2), fAfter(4), 
+MExtractSignal::MExtractSignal(const Byte_t first, const Byte_t last, const char *name, const char *title)
+  : fNumHiGainSamples(last-first+1), fNumLoGainSamples(last-first+1),
     fSaturationLimit(254), fConversionHiLo(10.)
 {
@@ -67,4 +67,9 @@
 
     AddToBranchList("MRawEvtData.*");
+
+    fFirst = first;
+
+    fSqrtHiGainSamples = TMath::Sqrt((Float_t)fNumHiGainSamples); 
+    fSqrtLoGainSamples = TMath::Sqrt((Float_t)fNumLoGainSamples); 
 }
 
@@ -125,19 +130,13 @@
     }
 
-    //fNumHiGainSamples =  fRunHeader->GetNumSamplesHiGain();
-    //fNumLoGainSamples =  fRunHeader->GetNumSamplesLoGain();
-    fNumHiGainSamples =  6;
-    fNumLoGainSamples =  6;
-
-    fSqrtHiGainSamples = TMath::Sqrt((float)fNumHiGainSamples); 
-    fSqrtLoGainSamples = TMath::Sqrt((float)fNumLoGainSamples); 
-
-    //
-    // FIXME: The next statement simply does not work: 
-    //        fRawEvt->GetNumPixels() returns always 0
-    //
-
-    fSignals->InitSize(577);    
-    // fExtractedSignals->InitSize(fRawEvt->GetNumPixels());
+
+    MGeomCam *cam = (MGeomCam*)pList->FindObject(AddSerialNumber("MGeomCam"));
+    if (!cam)
+    {
+        *fLog << err << GetDescriptor() << ": No MGeomCam found... aborting." << endl;
+        return kFALSE;
+    }
+
+    fSignals->InitSize(cam->GetNumPixels());    
 
     return kTRUE;
@@ -163,6 +162,6 @@
 
         Byte_t *ptr   = pixel.GetHiGainSamples();
-        Byte_t *first = ptr + 3;
-        Byte_t *last  = ptr + 9;
+        Byte_t *first = ptr + fFirst;
+        Byte_t *last  = ptr + fFirst + fNumHiGainSamples;
 
 	UInt_t  sumHi   = 0;
@@ -196,6 +195,6 @@
 
 	ptr   = pixel.GetLoGainSamples();
-        first = ptr + 3;
-        last  = ptr + 9;
+        first = ptr + fFirst;
+        last  = ptr + fFirst + fNumLoGainSamples;
 	Byte_t maxlo  = 0;
 	Byte_t midlo  = 0;
@@ -230,11 +229,12 @@
 
 	if (satHi)
-	  pix.SetArrivalTimes((Float_t)(midlo+3),0.,0.);
+	  pix.SetArrivalTimes((Float_t)(midlo+fFirst),0.,0.);
 	else
-	  pix.SetArrivalTimes((Float_t)(midhi+3),0.,0.);
+	  pix.SetArrivalTimes((Float_t)(midhi+fFirst),0.,0.);
 
       } /* while (pixel.Next()) */
 
-    fSignals->SetNumUsedFADCSlices(fNumHiGainSamples,3,8,fNumLoGainSamples,3,8);
+    fSignals->SetNumUsedFADCSlices(fNumHiGainSamples,fFirst,fFirst+fNumHiGainSamples-1,
+				   fNumLoGainSamples,fFirst,fFirst+fNumLoGainSamples-1);
     fSignals->SetReadyToSave();
 
Index: trunk/MagicSoft/Mars/manalysis/MExtractSignal.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MExtractSignal.h	(revision 2665)
+++ trunk/MagicSoft/Mars/manalysis/MExtractSignal.h	(revision 2666)
@@ -31,4 +31,6 @@
   MRawRunHeader            *fRunHeader;    // RunHeader information
 
+  Byte_t fFirst;
+
   Byte_t fNumHiGainSamples; 
   Byte_t fNumLoGainSamples; 
@@ -36,7 +38,4 @@
   Float_t fSqrtHiGainSamples; 
   Float_t fSqrtLoGainSamples; 
-
-  Byte_t fBefore;
-  Byte_t fAfter;
 
   Byte_t  fSaturationLimit;
@@ -50,5 +49,5 @@
 public:
 
-  MExtractSignal(const char *name=NULL, const char *title=NULL);
+  MExtractSignal(const Byte_t first=4, const Byte_t last=9, const char *name=NULL, const char *title=NULL);
   
   void SetSaturationLimit(Byte_t lim)      { fSaturationLimit = lim; }
Index: trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.cc	(revision 2665)
+++ trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.cc	(revision 2666)
@@ -547,4 +547,9 @@
   fHivsLoGain->GetXaxis()->SetTitle("Sum of Charges High Gain");
   fHivsLoGain->GetYaxis()->SetTitle("Sum of Charges Low Gain");
+
+  TString titleHiLoGain  = TString(fHivsLoGain->GetName());
+  titleHiLoGain += fPixId;
+  fHivsLoGain->SetName(titleHiLoGain.Data());
+
   
   for (Int_t i=0;i<fTotalEntries;i++)
