Index: trunk/MagicSoft/Mars/mtemp/mifae/Changelog
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/Changelog	(revision 5878)
+++ trunk/MagicSoft/Mars/mtemp/mifae/Changelog	(revision 5879)
@@ -19,4 +19,14 @@
                                                  -*-*- END OF LINE -*-*-
 
+ 2005/01/18 Javier Rico & Markus Gaug
+    * programs/controlPlot.cc, programs/controlplot.datacard,
+      programs/Makefile
+     - correct bugs: cuts in the proper units; separate ON and OFF 
+       task lists since before it was reading who knows what
+    * library/MControlPlots.[h,cc]
+     - add Clear() method and remove some (minor) memory leaks
+    * library/MIslands.cc
+     - place call to SetOwner() in the correct place
+	
  2005/01/10 Javier Rico
     * programs/makeHillas, programs/makehillas.datacard
Index: trunk/MagicSoft/Mars/mtemp/mifae/library/MControlPlots.cc
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/library/MControlPlots.cc	(revision 5878)
+++ trunk/MagicSoft/Mars/mtemp/mifae/library/MControlPlots.cc	(revision 5879)
@@ -63,4 +63,5 @@
     fCameraHisto[kOn] = NULL;
     fCameraHisto[kOff] = NULL;
+
 }
 // -------------------------------------------------------------------------
@@ -70,6 +71,5 @@
 MControlPlots::~MControlPlots()
 {
-  if(fGeomCam)
-    delete fGeomCam;
+  Clear();
 
   if(fCameraHisto[kOn])
@@ -79,4 +79,13 @@
 }
 
+void MControlPlots::Clear(const Option_t *o)
+{
+
+  if(fGeomCam)
+    delete fGeomCam;
+
+  fGeomCam = NULL;
+}
+
 
 // -------------------------------------------------------------------------
@@ -86,4 +95,7 @@
 Int_t MControlPlots::PreProcess(MParList* pList)
 { 
+
+  Reset();
+
   // FIXME! only valid for Magic geometry for the time being!
   fGeomCam = new MGeomCamMagic;
@@ -94,5 +106,25 @@
     *fLog << warn << AddSerialNumber("MIslands") << " [MIslands] not found... Some control plots will not be produced" << endl;
   else
-    fCameraHisto[fMode] = new MHCamera(*fGeomCam,"Survive","Pixels surviving Image Cleaning");
+    {  
+      if (fCameraHisto[fMode])
+	{
+	  *fLog << err << GetDescriptor() 
+		<< "Camera with mode " << fMode << " already existing " << endl;
+	  return kFALSE;
+	}
+      TString name = "";
+      switch (fMode)
+	{
+	case kOn:
+	  name += "On";
+	  break;
+	case kOff:
+	  name += "Off";
+	  break;
+	}
+      fCameraHisto[fMode] = new MHCamera(*fGeomCam,
+					 name.Data(),
+					 "Pixels surviving Image Cleaning");
+    }
   return kTRUE;
 }
@@ -105,5 +137,5 @@
   if(!fIslands) return kTRUE;
 
-  MImgIsland *imgIsl = new MImgIsland;
+  MImgIsland *imgIsl = NULL;
   TIter Next(fIslands->GetList());
   
@@ -111,15 +143,15 @@
   Int_t idPix = -1;
   
-  while ((imgIsl=(MImgIsland*)Next())) {
-
-    pixNum = imgIsl->GetPixNum();
-    
-    for(Int_t k = 0; k<pixNum; k++)
-      {
-	idPix = imgIsl->GetPixList(k);
-	fCameraHisto[fMode]->Fill(idPix,1);
-	fCameraHisto[fMode]->SetUsed(idPix);
-      }
-  }
+  while ((imgIsl=(MImgIsland*)Next())) 
+    {
+      pixNum = imgIsl->GetPixNum();
+      
+      for(Int_t k = 0; k<pixNum; k++)
+	{
+	  idPix = imgIsl->GetPixList(k);
+	  fCameraHisto[fMode]->Fill(idPix,1.);
+	  fCameraHisto[fMode]->SetUsed(idPix);
+	}
+    }
 
   /*  for (UInt_t i=0;i<fGeomCam->GetNumPixels();i++)
@@ -142,6 +174,4 @@
 Int_t MControlPlots::PostProcess()
 {
-  fCameraHisto[fMode]->SetEntries(fGeomCam->GetNumPixels());
-
   if(!fProduceFile) return kTRUE;
   if(fProduceFile && !fFileName.Length())
@@ -165,5 +195,5 @@
   if(fCameraHisto[kOn] && fCameraHisto[kOff])
     {      
-      diff = new MHCamera(*fGeomCam,"Diff","Pixels surviving Image Cleaning");
+      diff = new MHCamera(*fGeomCam,"Diff","Difference of pixels surviving Image Cleaning");
 
       // Normalize Off to On
Index: trunk/MagicSoft/Mars/mtemp/mifae/library/MControlPlots.h
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/library/MControlPlots.h	(revision 5878)
+++ trunk/MagicSoft/Mars/mtemp/mifae/library/MControlPlots.h	(revision 5879)
@@ -15,5 +15,5 @@
 {
  public:
-  enum OnOffMode_t {kOn=0,kOff};
+  enum OnOffMode_t {kOn=0,kOff=1};
   
  private:
@@ -34,4 +34,7 @@
   virtual ~MControlPlots();
 
+  void Reset() { Clear(); }
+  void Clear(const Option_t *o="");
+
   void SetFilename(TString fname)           {fFileName=fname;}
   void SetMode(OnOffMode_t mode)            {fMode=mode;}
Index: trunk/MagicSoft/Mars/mtemp/mifae/library/MIslands.cc
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/library/MIslands.cc	(revision 5878)
+++ trunk/MagicSoft/Mars/mtemp/mifae/library/MIslands.cc	(revision 5879)
@@ -24,5 +24,5 @@
 
     fIslands = new TList;
-    
+    fIslands->SetOwner();    
 }
 
@@ -33,5 +33,4 @@
 MIslands::~MIslands()
 {
-   fIslands->SetOwner();
    fIslands->Delete();
 }
Index: trunk/MagicSoft/Mars/mtemp/mifae/programs/Makefile
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/programs/Makefile	(revision 5878)
+++ trunk/MagicSoft/Mars/mtemp/mifae/programs/Makefile	(revision 5879)
@@ -18,5 +18,5 @@
 include ../../../Makefile.conf.general
 
-PROGRAMS = makeHillas
+PROGRAMS = makeHillas controlPlot
 #psffit falseSource srcPos optimizeCuts  controlPlot
 SOLIB    = $(MARSSYS)/libmars.so
Index: trunk/MagicSoft/Mars/mtemp/mifae/programs/controlPlot.cc
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/programs/controlPlot.cc	(revision 5878)
+++ trunk/MagicSoft/Mars/mtemp/mifae/programs/controlPlot.cc	(revision 5879)
@@ -64,5 +64,5 @@
 //-----------------------------------------------------------------------------
 
-const TString defaultcard="srcpos.datacard";
+const TString defaultcard="controlplot.datacard";
 const Float_t conver   = 189./0.6; // conversion factor degrees to mm
 
@@ -112,5 +112,4 @@
   // include containers in parameter list
   plist.AddToList(&tlist);
-  plist.AddToList(&islands);
 	  	  
   MF cut(filter);
@@ -127,4 +126,5 @@
   MControlPlots controlplots(outputFile);
   controlplots.SetProduceFile(kFALSE);
+  controlplots.SetMode(MControlPlots::kOn);
   
   MContinue applycutS(&cutS);
@@ -157,8 +157,8 @@
   if(widthcut.Length())
     tlist.AddToList(&applycutW);
+  if(filter.Length())
+    tlist.AddToList(&applycut);
   if(centercut.Length())
     tlist.AddToList(&applycutC);
-  if(filter.Length())
-    tlist.AddToList(&applycut);
   tlist.AddToList(&controlplots);
 
@@ -175,17 +175,51 @@
     return;
 
+
+  // containers
+  MParList  plist2;  
+  MTaskList tlist2;
+  MIslands  islands2;
+
+  // include containers in parameter list
+  plist2.AddToList(&tlist2);
+	  	  
+  // tasks
   MReadTree read2("Parameters", offFile);
   read2.DisableAutoScheme();  
-  tlist.AddToListBefore(&read2, &read, "All");
-  tlist.RemoveFromList(&read);
+  tlist2.AddToList(&read2);
 
   controlplots.SetMode(MControlPlots::kOff);
   controlplots.SetProduceFile(kTRUE);
-
-  if (!evtloop.Eventloop(nmaxevents))
+  controlplots.Reset();
+
+  // include tasks in task list
+  if(sizecut.Length())
+    tlist2.AddToList(&applycutS);
+  if(distcut.Length())
+    tlist2.AddToList(&applycutD);
+  if(lengthcut.Length())
+    tlist2.AddToList(&applycutL);
+  if(widthcut.Length())
+    tlist2.AddToList(&applycutW);
+  if(filter.Length())
+    tlist2.AddToList(&applycut);
+  if(centercut.Length())
+    tlist2.AddToList(&applycutC);
+  tlist2.AddToList(&controlplots);
+
+  // Eventloop
+  MEvtLoop evtloop2;
+  evtloop2.SetParList(&plist2);
+  if (!evtloop2.Eventloop(nmaxevents))
     return;  
-
-  tlist.PrintStatistics();
+ 
+  tlist2.PrintStatistics();
+  
+  // do off-data if input file was specified
+  if(!offFile.Length())
+    return;
+
 }
+
 //-----------------------------------------------------------------------
   
@@ -268,7 +302,11 @@
 	  ifun >> ch;
 	  distcut+=ch;
+	  distcut+="*";
+	  distcut+=conver;
 	  distcut+=") && (MHillasSrc.fDist<";
 	  ifun >> ch;
 	  distcut+=ch;
+	  distcut+="*";
+	  distcut+=conver;
 	  distcut+=")";
 	}
@@ -281,7 +319,11 @@
 	  ifun >> ch;
 	  widthcut+=ch;
+	  widthcut+="*";
+	  widthcut+=conver;
 	  widthcut+=") && (MHillas.fWidth<";
 	  ifun >> ch;
 	  widthcut+=ch;
+	  widthcut+="*";
+	  widthcut+=conver;
 	  widthcut+=")";
 	}
@@ -294,7 +336,11 @@
 	  ifun >> ch;
 	  lengthcut+=ch;
+	  lengthcut+="*";
+	  lengthcut+=conver;
 	  lengthcut+=") && (MHillas.fLength<";
 	  ifun >> ch;
 	  lengthcut+=ch;
+	  lengthcut+="*";
+	  lengthcut+=conver;
 	  lengthcut+=")";
 	}
@@ -304,7 +350,9 @@
 	    cout << "readDataCards Warning: overriding existing center cut" << endl;
 	  char ch[10];
-	  centercut="sqrt(MHillas.fMeanX*MHillas.fMeanX+MHillas.fMeanY*MHillas.fMeanY) < 0.00317*";
+	  centercut="sqrt(MHillas.fMeanX*MHillas.fMeanX+MHillas.fMeanY*MHillas.fMeanY)<";
 	  ifun >> ch;
 	  centercut+=ch;
+	  centercut+="*";
+	  centercut+=conver;
 	}
     }
Index: trunk/MagicSoft/Mars/mtemp/mifae/programs/controlplot.datacard
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/programs/controlplot.datacard	(revision 5878)
+++ trunk/MagicSoft/Mars/mtemp/mifae/programs/controlplot.datacard	(revision 5879)
@@ -1,14 +1,14 @@
 
 // Maximun number of on and off events to be processed)
-NEVENTS 99999999
+NEVENTS 9999
 
 // On-data file name pattern
-ONFILES  ./srcPosPrueba.root
+ONFILES /mnt/users/jrico/magic/hillasCrab_200411_new.root
 
 // Off-data file name pattern
-OFFFILES ./srcPosOffPrueba.root
+OFFFILES /mnt/users/jrico/magic/hillasCrab_200411_new.root
 
 // output file name
-HITSFILE  ./rotateprueba2.ps
+HITSFILE  ./prueba.ps
 
 //////////
@@ -16,18 +16,18 @@
 //////////
 
-// Size cut (lower and upper) in # of photons
-SIZECUT   2000   9999999
+// Size cut (lower and upper)
+SIZECUT  0   9999999
 
 // Dist cut (lower and upper) in degrees
-DISTCUT   0.2   1.1
+DISTCUT   0.2 1.2
 
 // Width cut (lower and upper) in degrees
-WIDTHCUT  0  0.12
+WIDTHCUT  0  0.15
 
 // Length cut (lower and upper) in degrees
-LENGTHCUT  0  0.26
+LENGTHCUT  0  0.25
 
 // maxX and maxY upper cut in degrees
-CENTERCUT  1.1 
+CENTERCUT  1.2
 
 // Other Additional cut
