Index: trunk/MagicSoft/Mars/manalysis/MMcPedestalCopy.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcPedestalCopy.h	(revision 1131)
+++ trunk/MagicSoft/Mars/manalysis/MMcPedestalCopy.h	(revision 1132)
@@ -23,4 +23,10 @@
 class MMcPedestalCopy : public MTask
 {
+private:
+    const MMcFadcHeader *fMcPed;
+    MPedestalCam *fPedCam;
+
+    Bool_t CheckRunType(MParList *pList) const;
+
 public:
     MMcPedestalCopy(const char *name=NULL, const char *title=NULL);
Index: trunk/MagicSoft/Mars/manalysis/MMcPedestalNSB.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcPedestalNSB.cc	(revision 1131)
+++ 	(revision )
@@ -1,134 +1,0 @@
-/* ======================================================================== *\
-!
-! *
-! * This file is part of MARS, the MAGIC Analysis and Reconstruction
-! * Software. It is distributed to you in the hope that it can be a useful
-! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
-! * It is distributed WITHOUT ANY WARRANTY.
-! *
-! * Permission to use, copy, modify and distribute this software and its
-! * documentation for any purpose is hereby granted without fee,
-! * provided that the above copyright notice appear in all copies and
-! * that both that copyright notice and this permission notice appear
-! * in supporting documentation. It is provided "as is" without express
-! * or implied warranty.
-! *
-!
-!
-!   Author(s): Oscar Blanch  11/2001 < mailto:blanch@ifae.es>
-!
-!   Copyright: MAGIC Software Development, 2000-2001
-!
-!
-\* ======================================================================== */
-
-/////////////////////////////////////////////////////////////////////////////
-//                                                                         //
-//  MMcPedestalNSB                                                        //
-//                                                                         //
-//  Input Containers:                                                      //
-//   MMcFadcHeader                                                         //
-//   MMcRunHeader                                                          //
-//   MRawRunHeader                                                         //
-//                                                                         //
-//  Output Containers:                                                     //
-//   MPedestalCam                                                          //
-//                                                                         //
-/////////////////////////////////////////////////////////////////////////////
-
-#include "MMcPedestalNSB.h"
-
-#include "MParList.h"
-
-#include "MLog.h"
-#include "MLogManip.h"
-
-#include "MPedestalCam.h"
-#include "MRawRunHeader.h"
-#include "MMcRunHeader.hxx"
-#include "MMcFadcHeader.hxx"
-
-ClassImp(MMcPedestalNSB);
-
-MMcPedestalNSB::MMcPedestalNSB(const float difnsb,
-			       const char *name, const char *title)
-{
-    fName  = name  ? name  : "MMcPedestalNSB";
-    fTitle = title ? title : "Task to copy monte carlo pedestals into MPedestal Container";
-
-    AddToBranchList("fPedestalMean");
-    AddToBranchList("fElecNoise");
-
-    fdnsb_pixel = difnsb;
-}
-
-Bool_t MMcPedestalNSB::ReInit(MParList *pList)
-{
-    MRawRunHeader *run = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
-    if (!run)
-    {
-        *fLog << err << dbginf << "MRawRunHeader not found... aborting." << endl;
-	return kFALSE;
-    }
-
-    if (run->GetRunType() != kRTMonteCarlo)
-    {
-        *fLog << warn << dbginf << "Warning - MMcPedestalNSB is for Monte Carlo files only... removing this task from list." << endl;
-        return kSKIP;
-    }
-
-    const MMcFadcHeader *mcped = (MMcFadcHeader*)pList->FindObject("MMcFadcHeader");
-    if (!mcped)
-    {
-        *fLog << err << dbginf << "MMcFadcHeader not found... aborting." << endl;
-        return kFALSE;
-    }
-
-    MMcRunHeader *mcrun = (MMcRunHeader*)pList->FindObject("MMcRunHeader");
-    if (!mcrun && fdnsb_pixel < 0)
-    {
-        *fLog << err << dbginf << "Using the default argument of MMcPedestalNSB::MMcPedestalNSB() ";
-        *fLog << "only allowed if MMcRunHeader is available... aborting." << endl;
-        return kFALSE;
-    }
-
-    if (mcrun)
-    {
-        if (fdnsb_pixel >= 0 && fdnsb_pixel != mcrun->GetNumPheFromDNSB())
-        {
-            *fLog << warn << dbginf << "The MC file has been generated with diffuse nsb " << mcrun->GetNumPheFromDNSB();
-            *fLog <<" but you set up the diffuse NSB to " << fdnsb_pixel << endl;
-        }
-
-        fdnsb_pixel = mcrun->GetNumPheFromDNSB();
-    }
-
-    fdnsb_pixel *= 50.0/15.0;
-
-    MPedestalCam *pedcam = (MPedestalCam*)pList->FindCreateObj("MPedestalCam");
-    if (!pedcam)
-        return kFALSE;
-
-    const int num = mcped->GetNumPixel();
-
-    pedcam->InitSize(num);
-
-    for (int i=0; i<num; i++)
-    {
-        MPedestalPix &pix = (*pedcam)[i];
-
-        const Float_t pedrms = mcped->GetPedestalRms(i);
-        const Float_t sigrms = pedrms/sqrt(run->GetNumSamplesHiGain()*2);
-        const Float_t ampl   = mcped->GetAmplitud();
-
-        //
-        // check for central pixel (i<397)
-        //
-
-        const Double_t value = pedrms*pedrms + fdnsb_pixel*ampl*ampl;
-
-        pix.SetPedestalRms(sqrt(i<397 ? value : value*4), sigrms);
-    }
-
-    return kTRUE;
-}
Index: trunk/MagicSoft/Mars/manalysis/MMcPedestalNSB.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcPedestalNSB.h	(revision 1131)
+++ trunk/MagicSoft/Mars/manalysis/MMcPedestalNSB.h	(revision 1132)
@@ -27,5 +27,5 @@
 		   const char *name=NULL, const char *title=NULL);
 
-    Bool_t PreProcess(MParList *pList);
+    Bool_t ReInit(MParList *pList);
 
     ClassDef(MMcPedestalNSB, 0)   // Task which adds the NSB fluctuations to the pedestals rms
Index: trunk/MagicSoft/Mars/manalysis/MMcPedestalNSBAdd.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcPedestalNSBAdd.cc	(revision 1131)
+++ trunk/MagicSoft/Mars/manalysis/MMcPedestalNSBAdd.cc	(revision 1132)
@@ -71,5 +71,6 @@
 //
 MMcPedestalNSBAdd::MMcPedestalNSBAdd(const Float_t difnsb,
-			       const char *name, const char *title)
+                                     const char *name, const char *title)
+    : fDnsbPixel(difnsb)
 {
     fName  = name  ? name  : "MMcPedestalNSBAdd";
@@ -82,6 +83,16 @@
     AddToBranchList("fPedesMean");
     AddToBranchList("fElecNoise");
-
-    fDnsbPixel=difnsb;
+}
+
+Bool_t MMcPedestalNSBAdd::CheckRunType(MParList *pList) const
+{
+    MRawRunHeader *runheader = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
+    if (!runheader)
+    {
+        *fLog << warn << dbginf << "Warning - cannot check file type, MRawRunHeader not found." << endl;
+        return kTRUE;
+    }
+
+    return runheader->GetRunType() == kRTMonteCarlo;
 }
 
@@ -97,5 +108,35 @@
    // implemented then this line should be removed.
 
-    ReInit(pList);    
+    if (!CheckRunType(pList))
+    {
+        *fLog << warn << dbginf << "Warning - MMcPedestalNSB is for Monte Carlo files only... removing this task from list." << endl;
+        return kSKIP;
+    }
+
+    fFadc = (MMcFadcHeader*)pList->FindObject("MMcFadcHeader");
+    if (!fFadc)
+    {
+        *fLog << err << dbginf << "MMcFadcHeader not found... aborting." << endl;
+	return kFALSE;
+    }
+
+    fGeom = (MGeomCam*)pList->FindObject("MGeomCam");
+    if (!fGeom)
+    {
+        *fLog << err << dbginf << "MGeomCam not found... aborting." << endl;
+	return kFALSE;
+    }
+
+    fPedCam = (MPedestalCam*)pList->FindCreateObj("MPedestalCam");
+    if (!fPedCam)
+	return kFALSE;
+
+    MMcRunHeader *mcrunheader = (MMcRunHeader*)pList->FindObject("MMcRunHeader");
+    if (!mcrunheader && fDnsbPixel < 0 )
+    {
+        *fLog << err << dbginf << "Using the default argument of MMcPedestalNSB::MMcPedestalNSB() ";
+        *fLog << "only allowed if MMcRunHeader is available... aborting." << endl;
+        return kFALSE;
+    }
 
     return kTRUE;
@@ -117,28 +158,6 @@
 //   - MPedestalCam
 //
-Bool_t MMcPedestalNSBAdd::ReInit(MParList *pList)
-{
-
-    MRawRunHeader *runheader = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
-    if (runheader)
-    {
-        if (runheader->GetRunType() != kRTMonteCarlo)
-        {
-            *fLog << warn << dbginf << "Warning - MMcPedestalNSB is for Monte Carlo files only... removing this task from list." << endl;
-            return kSKIP;
-        }
-    }	
-    else
-        *fLog << warn << dbginf << "Warning - cannot check file type, MRawRunHeader not found." << endl;
-
-
-    MMcFadcHeader *fadc = (MMcFadcHeader*)pList->FindObject("MMcFadcHeader");
-    if (!fadc)
-    {
-        *fLog << err << dbginf << "MMcFadcHeader not found... aborting." << endl;
-	return kFALSE;
-    }
-
-
+Float_t MMcPedestalNSBAdd::GetDnsb(MParList *pList) const
+{
     MMcRunHeader *mcrunheader = (MMcRunHeader*)pList->FindObject("MMcRunHeader");
     if (!mcrunheader && fDnsbPixel < 0 )
@@ -146,51 +165,48 @@
         *fLog << err << dbginf << "Using the default argument of MMcPedestalNSB::MMcPedestalNSB() ";
         *fLog << "only allowed if MMcRunHeader is available... aborting." << endl;
+        return -1;
+    }
+
+    if (!mcrunheader)
+        return fDnsbPixel;
+
+    if (fDnsbPixel >= 0 && fDnsbPixel != mcrunheader->GetNumPheFromDNSB())
+    {
+        *fLog << warn << dbginf << "The MC file has been generated with diffuse nsb " << mcrunheader->GetNumPheFromDNSB();
+        *fLog <<" but you set up the diffuse NSB to " << fDnsbPixel << endl;
+
+        return fDnsbPixel;
+    }
+
+    return mcrunheader->GetNumPheFromDNSB();
+}
+
+Bool_t MMcPedestalNSBAdd::ReInit(MParList *pList)
+{
+    if (!CheckRunType(pList))
         return kFALSE;
-    }
-
-    if (mcrunheader)
-    {
-        if (fDnsbPixel >= 0 && fDnsbPixel != mcrunheader->GetNumPheFromDNSB())
-        {
-            *fLog << warn << dbginf << "The MC file has been generated with diffuse nsb " << mcrunheader->GetNumPheFromDNSB();
-            *fLog <<" but you set up the diffuse NSB to " << fDnsbPixel << endl;
-        }
-	else
-	    fDnsbPixel = mcrunheader->GetNumPheFromDNSB();
-    }
-
-    fDnsbPixel *= 50.0/15.0;
-
-
-    MGeomCam *geometry = (MGeomCam*)pList->FindObject("MGeomCam");
-    if (!geometry)
-    {
-        *fLog << err << dbginf << "MGeomCam not found... aborting." << endl;
-	return kFALSE;
-    }
-
-
-    MPedestalCam *pedestals = (MPedestalCam*)pList->FindCreateObj("MPedestalCam");
-    if (!pedestals)
-	return kFALSE;
-
-
-    const int num = fadc->GetNumPixel();
+
+    Float_t dnsbpix = GetDnsb(pList) * 50.0/15.0;
+
+    if (dnsbpix < 0)
+        return kFALSE;
+
+    const int num = fFadc->GetNumPixel();
     
-    pedestals->InitSize(num);
-
-    const Float_t size0 = (*geometry)[0].GetR()*(*geometry)[0].GetR();
+    fPedCam->InitSize(num);
+
+    const Float_t size0 = (*fGeom)[0].GetR() * (*fGeom)[0].GetR();
 
     for (int i=0; i<num; i++)
     {
-        MPedestalPix &pix     = (*pedestals)[i];
-	MGeomPix     &pixgeom = (*geometry)[i];
+        MPedestalPix &pix     = (*fPedCam)[i];
+	MGeomPix     &pixgeom = (*fGeom)[i];
 
         const Float_t pedrms  = pix.GetSigma();
         const Float_t size    = pixgeom.GetR()*pixgeom.GetR()/size0;
 
-        const Float_t ampl    = fadc->GetAmplitud();
-
-	pix.SetSigma(sqrt(pedrms*pedrms + fDnsbPixel*ampl*ampl*size));
+        const Float_t ampl    = fFadc->GetAmplitud();
+
+	pix.SetSigma(sqrt(pedrms*pedrms + dnsbpix*ampl*ampl*size));
     }
 
Index: trunk/MagicSoft/Mars/manalysis/MMcPedestalNSBAdd.h
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcPedestalNSBAdd.h	(revision 1131)
+++ trunk/MagicSoft/Mars/manalysis/MMcPedestalNSBAdd.h	(revision 1132)
@@ -16,16 +16,22 @@
 
 class MMcFadcHeader;
+class MGeomCam;
 class MPedestalCam;
-class MRawRunHeader;
-class MMcRunHeader;
 
 class MMcPedestalNSBAdd : public MTask
 {
+private:
+    MMcFadcHeader *fFadc;
+    const MGeomCam *fGeom;
+    MPedestalCam *fPedCam;
 
     Float_t fDnsbPixel;
 
+    Bool_t CheckRunType(MParList *pList) const;
+    Float_t GetDnsb(MParList *pList) const;
+
 public:
     MMcPedestalNSBAdd(const Float_t difnsb = -1.0,
-		   const char *name=NULL, const char *title=NULL);
+                      const char *name=NULL, const char *title=NULL);
 
     Bool_t PreProcess(MParList *pList);
