Index: trunk/Mars/fact/analysis/lightcurve.C
===================================================================
--- trunk/Mars/fact/analysis/lightcurve.C	(revision 15509)
+++ trunk/Mars/fact/analysis/lightcurve.C	(revision 15527)
@@ -147,4 +147,5 @@
         {
             counter2++;
+            cout << "-----" << (*row2)[0] << " " << (*row2)[3] << endl;
             ontime=(*row2)[0];
             bgevts=(*row2)[1];
@@ -171,10 +172,10 @@
                 significance=MMath::SignificanceLiMa(sigevtssum, bgevtssum, 0.2);
                 cout << "  significance: " << significance << endl;
-                cout << "  excess: " << excevtssum << endl;
-                cout << "  bg: " << bgevtssum << endl;
-                cout << "  ontime: " << ontimesum/3600 << endl;
-                cout << "  excessrate: " << excevtssum/ontimesum*3600 << endl;
-                cout << "  bgrate: " << bgevtssum/ontimesum*3600 << endl;
-                signifrate=significance/ontimesum*3600;
+                cout << "  excess: " << excevtssum << " evts" << endl;
+                cout << "  bg: " << bgevtssum << " evts" << endl;
+                cout << "  ontime: " << ontimesum << " s " << endl;
+                cout << "  excessrate: " << excevtssum/ontimesum*3600 << " evts/h" << endl;
+                cout << "  bgrate: " << bgevtssum/ontimesum*3600 << " evts/h" << endl;
+                signifrate=significance/sqrt(ontimesum*3600);
                 bgrate=bgevtssum/ontimesum*3600;
                 excrate=excevtssum/ontimesum*3600;
@@ -185,5 +186,5 @@
                 mjd=mjdstart+(mjdstop-mjdstart)/2;
                 cout << "  mjd: " << mjd <<  " (" << mjdstart << " - " << mjdstop << ") " << endl;
-                if (mjd<50000)
+                if (excrate>300)
                     cout << "==>" << (*row2)[0] << " " << (*row2)[1] << " " << (*row2)[2]
                         << " " << (*row2)[3] << " " << (*row2)[4] << " " << (*row2)[5]
@@ -227,5 +228,42 @@
 
         }
-
+        cout << "reached last run" << endl;
+        // if ontime is larger than 90% of the timebin width, the last point is filled
+        if (ontimesum>(minutes-0.1*minutes))
+        {
+            cout << "ontime > " << minutes-0.1*minutes << endl;
+            significance=MMath::SignificanceLiMa(sigevtssum, bgevtssum, 0.2);
+            cout << "  significance: " << significance << endl;
+            cout << "  excess: " << excevtssum << " evts" << endl;
+            cout << "  bg: " << bgevtssum << " evts" << endl;
+            cout << "  ontime: " << ontimesum << " s " << endl;
+            cout << "  excessrate: " << excevtssum/ontimesum*3600 << " evts/h" << endl;
+            cout << "  bgrate: " << bgevtssum/ontimesum*3600 << " evts/h" << endl;
+            signifrate=significance/sqrt(ontimesum*3600);
+            bgrate=bgevtssum/ontimesum*3600;
+            excrate=excevtssum/ontimesum*3600;
+            excerr = MMath::ErrorExc(significance, bgevtssum, 0.2)/ontimesum*3600.;
+            zdmean=zdmin+(zdmax-zdmin)/2;
+            mjdstop=stop.GetMjd();
+            mjd=mjdstart+(mjdstop-mjdstart)/2;
+            cout << "  mjd: " << mjd <<  " (" << mjdstart << " - " << mjdstop << ") " << endl;
+
+            exc.Fill(excrate);
+            bg.Fill(bgrate);
+            excessrate.SetPoint(counter, mjd, excrate);
+            excessrate.SetPointError(counter, ontimesum/3600./24/2, excerr);
+            backgroundrate.SetPoint(counter, mjd, bgrate);
+            backgroundrate.SetPointError(counter, ontimesum/3600./24/2, sqrt(bgevtssum)/ontimesum*3600);
+            excvszd.SetPoint(counter, zdmean, excrate);
+            excvszd.SetPointError(counter, (zdmax-zdmin)/2, excerr);
+            excvsbg.SetPoint(counter, bgrate, excrate);
+            excvsbg.SetPointError(counter, sqrt(bgevtssum)/ontimesum*3600, excerr);
+            bgvszd.SetPoint(counter, zdmean, bgrate);
+            bgvszd.SetPointError(counter, (zdmax-zdmin)/2, sqrt(bgevtssum)/ontimesum*3600);
+            signif.SetPoint(counter, mjd, significance);
+            signif.SetPointError(counter, ontimesum/3600./24/2, 0);
+            significancerate.SetPoint(counter, mjd, signifrate);
+            significancerate.SetPointError(counter, ontimesum/3600./24/2, 0);
+        }
         delete res2;
     }
@@ -238,4 +276,5 @@
 
     TCanvas &c1 = d->AddTab("Rates vs MJD", "Rates vs MJD");
+    gPad->SetGridy();
     excessrate.SetTitle("Rates vs MJD");
     excessrate.SetMarkerStyle(7);
@@ -244,5 +283,5 @@
     excessrate.GetXaxis()->SetTitle("MJD");
     excessrate.GetXaxis()->CenterTitle();
-    excessrate.GetYaxis()->SetRangeUser(-50,200);
+    excessrate.GetYaxis()->SetRangeUser(-50,400);
     excessrate.DrawClone("AP");
 
@@ -254,4 +293,5 @@
 
     TCanvas &c2 = d->AddTab("Excess Rate vs MJD", "Excess Rate vs MJD");
+    gPad->SetGridy();
     excessrate.SetTitle("Excess Rate vs MJD");
     excessrate.SetMarkerStyle(7);
@@ -290,4 +330,5 @@
 
     TCanvas &c6 = d->AddTab("Signifrate vs MJD", "Signifrate vs MJD");
+    gPad->SetGridy();
     significancerate.SetTitle("Significance Rate vs MJD");
     significancerate.SetMarkerStyle(7);
