Index: trunk/MagicSoft/Mars/macros/bootcampstandardanalysis.C
===================================================================
--- trunk/MagicSoft/Mars/macros/bootcampstandardanalysis.C	(revision 2757)
+++ trunk/MagicSoft/Mars/macros/bootcampstandardanalysis.C	(revision 2757)
@@ -0,0 +1,276 @@
+/* ======================================================================== *\
+!
+! *
+! * 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): Javier López, 12/2003 <mailto:jlopez@ifae.es>
+!
+!   Copyright: MAGIC Software Development, 2000-2003
+!
+!
+\* ======================================================================== */
+
+Bool_t HandleInput()
+{
+    TTimer timer("gSystem->ProcessEvents();", 50, kFALSE);
+
+    while (1)
+    {
+        //
+        // While reading the input process gui events asynchronously
+        //
+        timer.TurnOn();
+        TString input = Getline("Type 'q' to exit, <return> to go on: ");
+        timer.TurnOff();
+
+        if (input=="q\n")
+            return kFALSE;
+
+        if (input=="\n")
+            return kTRUE;
+    };
+
+    return kFALSE;
+}
+
+void bootcampstandardanalysis(
+TString pedname="/mnt/magic_data/Data/rootdata/2003_11_29/20031128_03127_P_Crab-Nebula_E.root",
+TString calname="/mnt/magic_data/Data/rootdata/2003_11_29/20031128_03128_C_Crab-Nebula_E.root", 
+TString dataname="/mnt/magic_data/Data/rootdata/2003_11_29/20031128_03200_D_Crab-Nebula_E.root")
+{
+
+// Before starting be sure you have the pedestal, calibration and data runs names
+//    if (pedname != NULL)
+//	cout << endl << "usage: bootcampstandardanalysis.C()" << endl; 
+
+    //
+    // Create a empty Parameter List and an empty Task List
+    // The tasklist is identified in the eventloop by its name
+    //
+    MParList plist;
+
+    MTaskList tlist;
+    plist.AddToList(&tlist);
+
+    //
+    // Now setup the tasks and tasklist for the pedestals:
+    // ---------------------------------------------------
+    //
+
+    MPedestalCam   pedcam;
+    plist.AddToList(&pedcam);
+
+
+    //tasks
+    MReadMarsFile read("Events", pedname);
+    read.DisableAutoScheme();
+
+    MGeomApply     geomapl;
+    MPedCalcPedRun pedcalc;
+    MGeomCamMagic  geomcam;
+
+    tlist.AddToList(&read);
+    tlist.AddToList(&geomapl);
+    tlist.AddToList(&pedcalc);
+
+    //
+    // Create and setup the eventloop
+    //
+    MEvtLoop evtloop;
+    evtloop.SetParList(&plist);
+
+    //
+    // Execute first analysis
+    //
+    if (!evtloop.Eventloop())
+        return;
+
+    tlist.PrintStatistics();
+
+    //
+    // Create a empty Parameter List and an empty Task List
+    //
+    MParList  plist2;
+
+    MTaskList tlist2;
+    plist2.AddToList(&tlist2);
+
+
+    //
+    // Now setup the new tasks and tasklist for the calibration
+    // ---------------------------------------------------
+    //
+
+    MCalibrationCam     calcam;
+    MExtractedSignalCam sigcam;
+    
+    plist2.AddToList(&geomcam);
+    plist2.AddToList(&pedcam);
+    plist2.AddToList(&calcam);
+    plist2.AddToList(&sigcam);
+
+
+    //tasks
+    MReadMarsFile read2("Events", calname);
+    read2.DisableAutoScheme();
+
+
+    MExtractSignal        sigsig;
+    MCalibrationCalc     calcalc;
+
+    //
+    // As long, as we don't have digital modules, 
+    // we have to set the color of the pulser LED by hand
+    //
+    calcalc.SetPulserColor(MCalibrationCalc::kECT1);
+
+    tlist2.AddToList(&read2);
+    tlist2.AddToList(&geomapl);
+    tlist2.AddToList(&sigsig);
+    tlist2.AddToList(&calcalc);
+
+    //
+    // Create and setup the eventloop
+    //
+    MEvtLoop evtloop2;
+    evtloop2.SetParList(&plist2);
+
+    //
+    // Execute second analysis
+    //
+    if (!evtloop2.Eventloop())
+        return;
+
+    tlist2.PrintStatistics();
+ 
+
+    //
+    // Create a empty Parameter List and an empty Task List
+    //
+    MParList  plist3;
+
+    MTaskList tlist3;
+    plist3.AddToList(&tlist3);
+
+    //
+    // Now setup the tasks and tasklist to calculate the pedestal rms in number of photons
+    // -----------------------------------------------------------------------------------
+    //
+
+    MCerPhotEvt    nphot;
+    MPedPhotCam    nphotrms;
+
+    plist3.AddToList(&geomcam);
+    plist3.AddToList(&pedcam);
+    plist3.AddToList(&calcam);
+    plist3.AddToList(&nphot);
+    plist3.AddToList(&nphotrms);
+
+    //tasks
+    MReadMarsFile read3("Events", pedname);
+    read3.DisableAutoScheme();
+
+    MExtractSignal     extsig;
+    MCalibrate       photcalc;
+//    MPedPhotCalc  photrmscalc;  //It doesn't exist yet
+
+    tlist3.AddToList(&read3);
+    tlist3.AddToList(&geomapl);
+    tlist3.AddToList(&extsig);
+    tlist3.AddToList(&photcalc);
+//    tlist3.AddToList(&photrmscalc);
+
+    //
+    // Create and setup the eventloop
+    //
+    MEvtLoop evtloop3;
+    evtloop3.SetParList(&plist3);
+
+
+    //
+    // Execute first analysis
+    //
+    if (!evtloop3.Eventloop())
+        return;
+
+    tlist3.PrintStatistics();
+
+    //
+    // Create a empty Parameter List and an empty Task List
+    //
+    MParList  plist4;
+
+    MTaskList tlist4;
+    plist4.AddToList(&tlist4);
+
+    //
+    // Now setup the tasks and tasklist to analize the data
+    // -----------------------------------------------------
+    //
+
+    plist4.AddToList(&geomcam);
+    plist4.AddToList(&pedcam);
+    plist4.AddToList(&calcam);
+    plist4.AddToList(&nphot);
+    plist4.AddToList(&nphotrms);
+
+    //tasks
+    MReadMarsFile read4("Events", dataname);
+    read4.DisableAutoScheme();
+
+
+    MExtractSignal     extsig;
+    MCalibrate       photcalc;
+
+    tlist4.AddToList(&read4);
+    tlist4.AddToList(&geomapl);
+    tlist4.AddToList(&extsig);
+    tlist4.AddToList(&photcalc);
+
+    //
+    // Create and setup the eventloop
+    //
+    MEvtLoop evtloop4;
+    evtloop4.SetParList(&plist4);
+
+    if (!evtloop4.PreProcess())
+        return;
+
+    TCanvas *c = new TCanvas;
+    MHCamera display(geomcam);
+    display.SetPrettyPalette();
+    //display.SetInvDeepBlueSeaPalette()
+    display.Draw();
+    gPad->SetLogy();
+    gPad->cd(1);
+
+    while (tlist4.Process())
+    {
+      display.SetCamContent(nphot);
+
+      gPad->Modified();
+      gPad->Update();
+
+      // Remove the comments if you want to go through the file
+      // event-by-event:
+      if (!HandleInput())
+	break;
+    }
+
+
+    
+    evtloop4.PostProcess();
+
+}
