Index: trunk/Mars/fact/analysis/callisto_drstime.C
===================================================================
--- trunk/Mars/fact/analysis/callisto_drstime.C	(revision 18079)
+++ trunk/Mars/fact/analysis/callisto_drstime.C	(revision 18079)
@@ -0,0 +1,91 @@
+#include "MLogManip.h"
+
+int callisto_drstime(const char *timfile, const char *drs1024, const char *outfile="callisto-drstime.root")
+{
+    // ======================================================
+
+    // Maximum number of events to be procesed
+    Long_t max = 0;
+
+    // ======================================================
+
+    MDrsCalibration drscalib1024;
+    if (!drscalib1024.ReadFits(drs1024))
+        return 52;
+
+    // ======================================================
+
+    MStatusDisplay *d = new MStatusDisplay;
+
+    // ======================================================
+
+    gLog.Separator("Callisto");
+    gLog << all;
+    gLog << "DRS Timing " << timfile << '\n';
+    gLog << "DRS 1024   " << drs1024 << '\n';
+    gLog << endl;
+
+
+    MDrsCalibrationTime timecam;
+
+    gStyle->SetOptFit(kTRUE);
+
+    // ======================================================
+
+    gLog << endl;
+    gLog.Separator("Processing DRS timing calibration run");
+
+    MTaskList tlist0;
+
+    MParList plist0;
+    plist0.AddToList(&tlist0);
+    plist0.AddToList(&drscalib1024);
+    plist0.AddToList(&timecam);
+
+    MEvtLoop loop0("DetermineTimeCal");
+    loop0.SetDisplay(d);
+    loop0.SetParList(&plist0);
+
+    // ------------------ Setup the tasks ---------------
+
+    MRawFitsRead read0(timfile);
+
+    MContinue cont0("MRawEvtHeader.GetTriggerID!=33792", "SelectTim");
+
+    MGeomApply apply0;
+
+    MDrsCalibApply drsapply0;
+
+    MFillH fill0("MHDrsCalibrationTime");
+    fill0.SetNameTab("DeltaT");
+
+    tlist0.AddToList(&read0);
+    tlist0.AddToList(&apply0);
+    tlist0.AddToList(&drsapply0);
+    tlist0.AddToList(&cont0);
+    tlist0.AddToList(&fill0);
+
+    if (!loop0.Eventloop(max))
+        return 8;
+
+    if (!loop0.GetDisplay())
+        return 9;
+
+    //MHDrsCalibrationTime *t = (MHDrsCalibrationTime*)plist0.FindObject("MHDrsCalibrationTime");
+    //t->SetDisplay(d);
+    //t->PlotAll();
+
+    // ======================================================
+
+    TString title = "--  DRS timing ";
+    title += " [";
+    title += timfile;
+    title += "]  --";
+    d->SetTitle(title, kFALSE);
+    d->SaveAs(outfile);
+
+    TFile file(outfile, "UPDATE");
+    timecam.Write();
+
+    return 0;
+}
