Index: trunk/MagicSoft/Mars/mtemp/mifae/Changelog
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/Changelog	(revision 5953)
+++ trunk/MagicSoft/Mars/mtemp/mifae/Changelog	(revision 5954)
@@ -18,4 +18,10 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2005/01/24 Eva Domingo
+    * programs/makeHillas.cc 
+      programs/makehillas.datacard
+      programs/DISPstd.root, default DISP parameters values
+     - Add Disp computation
 
  2005/01/21 Javier Rico
Index: trunk/MagicSoft/Mars/mtemp/mifae/programs/makeHillas.cc
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/programs/makeHillas.cc	(revision 5953)
+++ trunk/MagicSoft/Mars/mtemp/mifae/programs/makeHillas.cc	(revision 5954)
@@ -5,4 +5,8 @@
 #include "TString.h"
 #include "TArrayS.h"
+#include "TFile.h"
+#include "TH1.h"
+#include "TH2.h"
+#include "TProfile.h"
 
 #include "MArray.h"
@@ -66,4 +70,11 @@
 #include "MRanForestCalc.h"
 #include "MRanForestFill.h"
+#include "MPointingPos.h"
+#include "MPointingPosCalc.h"
+#include "MImageParDisp.h"
+#include "MDispParameters.h"
+#include "MDispCalc.h"
+#include "MHDisp.h"
+#include "MFillH.h"
 
 #include "TApplication.h"
@@ -110,4 +121,5 @@
 Int_t    sext    = 0;
 TString  rffilename;
+TString  dispfilename;
 
 const TString defaultcard="makehillas.datacard";
@@ -411,4 +423,25 @@
   MIslands      isl3;
   MTopology     topology;
+  // disp
+  // (read in optimum Disp parameter values)  
+  TFile inparam(dispfilename);
+  MDispParameters dispin;
+  dispin.Read("MDispParameters");
+  inparam.Close();
+  TArrayD dispPar;
+  dispPar =  dispin.GetParameters();
+  cout << "Optimum parameter values taken for calculating Disp : " << endl;
+  for (Int_t i=0; i<dispPar.GetSize(); i++)
+    {
+      cout << dispPar[i] << ",  ";
+    }
+  cout << endl;
+  // Disp results container
+  MImageParDisp imagepardisp;
+  // Disp histograms
+  MHDisp hdisp;
+  hdisp.SetName("MHDispAsym");
+  hdisp.SetSelectedPos(4);
+  MFillH filldisp("MHDispAsym[MHDisp]", "");
   
   isl.SetName("MIslands");  
@@ -440,4 +473,7 @@
   plist5.AddToList(&topology);
   plist5.AddToList(&ranforest);
+  plist5.AddToList(&dispin);  
+  plist5.AddToList(&imagepardisp);
+  plist5.AddToList(&hdisp);
 
   // cuts
@@ -478,4 +514,7 @@
   MTopologyCalc     topcalc;
   
+  MPointingPosCalc  pointingposcalc;
+  MDispCalc         dispcalc;  
+
   MContinue applycut(&cut);
   applycut.SetInverted(kTRUE);
@@ -495,7 +534,10 @@
   write.AddContainer("MIslands"       , "Parameters");
   write.AddContainer("MReportDrive"   , "Parameters");
-  write.AddContainer("MTopology",       "Parameters");
-  write.AddContainer("MHadronness",     "Parameters");
-  
+  write.AddContainer("MTopology"      , "Parameters");
+  write.AddContainer("MPointingPos"   , "Parameters");
+  if(rffilename.Length())
+    write.AddContainer("MHadronness",     "Parameters");
+  if(dispfilename.Length())
+    write.AddContainer("MImageParDisp"  , "Parameters");
   if (islflag == 2) 
     write.AddContainer("MIslands2" , "Parameters");
@@ -542,4 +584,10 @@
   if(rffilename.Length())
     tlist5.AddToList(&hadrcalc);
+  tlist5.AddToList(&pointingposcalc);
+  if(dispfilename.Length())
+    {
+      tlist5.AddToList(&dispcalc);
+      tlist5.AddToList(&filldisp);
+    } 
   tlist5.AddToList(&write);
   if(display)
@@ -551,5 +599,4 @@
       tlist5.AddToList(disphillas);
     }
-
   
   // Create and setup the eventloop
@@ -564,4 +611,17 @@
     return;
   
+  if(dispfilename.Length())
+    {
+      hdisp.GetHistSize()->Write();
+      hdisp.GetHistcosZA()->Write();
+      hdisp.GetSkymapXY()->Write();
+      hdisp.GetHistMinPar()->Write();
+      hdisp.GetHistDuDv()->Write();
+      hdisp.GetHistMinParSize()->Write();
+      hdisp.GetHistDuSize()->Write();
+      hdisp.GetHistDvSize()->Write();
+      hdisp.GetEvCorrAssign()->Write();
+    }
+
   tlist5.PrintStatistics();    
   delete extractor;
@@ -688,4 +748,12 @@
 	}
       
+      // disp file name
+      if(strcmp(word.Data(),"DISP")==0)
+	{
+	  if(dispfilename.Length())
+	    cout << "readDataCards Warning: overriding disp file name" << endl;
+	  ifun >> dispfilename;
+	}
+
       // cleaning level
       if(strcmp(word.Data(),"EXTRACTOR")==0)
@@ -752,4 +820,6 @@
   if(rffilename.Length())
     cout << "Random Forest will be read from " << rffilename << endl;
+  if(dispfilename.Length())
+    cout << "Disp parameters will be read from " << dispfilename << endl;
   if (islflag == 1 || islflag == 2)
     cout << "Island calcultation..." << "using algorithm #" << kalgorithm <<endl;
Index: trunk/MagicSoft/Mars/mtemp/mifae/programs/makehillas.datacard
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/programs/makehillas.datacard	(revision 5953)
+++ trunk/MagicSoft/Mars/mtemp/mifae/programs/makehillas.datacard	(revision 5954)
@@ -67,4 +67,9 @@
 RANFOREST RFstd.root
 
+// Add the following word if you want to apply DISP method analysis, 
+// followed by the name of the file where the MDispParameters container
+// with the optimal values of the DISP parameters is stored
+DISP DISPstd.root
+
 //Island calculations
 // 0  same as 1                1:normal algorithm 
