source: trunk/Mars/fact/analysis/lightcurve.C @ 17315

Last change on this file since 17315 was 17315, checked in by dorner, 5 years ago
changed column name from fRunId to fRunID
File size: 22.5 KB
Line 
1#include <iostream>
2
3#include <TH1.h>
4#include <TH2.h>
5#include <TF1.h>
6#include <TGraph.h>
7#include <TGraphErrors.h>
8#include <TText.h>
9#include <TFile.h>
10#include <TSystem.h>
11#include <TSQLResult.h>
12#include <TSQLRow.h>
13#include <TPRegexp.h>
14
15#include "MSQLMagic.h"
16#include "MAlphaFitter.h"
17#include "MHThetaSq.h"
18
19#include "MObservatory.h"
20#include "MAstro.h"
21#include "MAstroSky2Local.h"
22#include "MAstroCatalog.h"
23#include "MVector3.h"
24#include "MMath.h"
25#include "MDirIter.h"
26#include "MStatusArray.h"
27#include "MStatusDisplay.h"
28#include "MHCamera.h"
29#include "MSequence.h"
30
31using namespace std;
32
33
34int lightcurve(Int_t sourcekey=1, Int_t nightmin=0, Int_t nightmax=0, Int_t minutes=20, TString table="AnalysisResultsRunLP", TString outfile="lc", Bool_t dch=kTRUE)
35{
36
37    cout << minutes << " min bins..." << endl;
38    minutes*=60;
39    cout << minutes << " sec bins..." << endl;
40
41    MSQLServer serv("sql.rc");
42    if (!serv.IsConnected())
43    {
44        cout << "ERROR - Connection to database failed." << endl;
45        return 0;
46    }
47
48    TString query;
49    query=Form("SELECT Min(fNight), Max(fNight) FROM %s ", table.Data());
50    query+=" LEFT JOIN RunInfo USING(fNight, fRunID) ";
51    query+=Form(" WHERE fSourceKey=%d", sourcekey);
52    if (nightmin)
53        query+=Form(" AND fNight >=%d",nightmin);
54    if (nightmax)
55        query+=Form(" AND fNight <=%d",nightmax);
56
57    // datacheck
58    TString datacheck=" ";
59    //remove data with wrong settings
60    datacheck+=" AND fNight>20120420 AND NOT fNight IN (20120406,20120410,20120503) AND";//data with different bias voltage
61    datacheck+=" NOT fNight BETWEEN 20121206 AND 20130110"; // broken bias channel
62    //datacheck+=" AND NOT (fNight=20120608 AND fRunID=65) "; // something went wrong with tracking?
63    // 24.6. new coefficients
64    TString zdparam=" pow(0.753833 * cos(Radians(fZenithDistanceMean)), 7.647435) * exp(-5.753686*pow(Radians(fZenithDistanceMean),2.089609))";
65    TString thparam=" pow((if(isnull(fThresholdMinSet),fThresholdMedian,fThresholdMinSet)-329.4203),2) * (-0.0000002044803) ";
66    TString param=" (fNumEvtsAfterBgCuts/5-fNumSigEvts)/fOnTimeAfterCuts - "+zdparam+" - "+thparam+" ";
67    datacheck+=" AND -0.085 < ("+param+") ";
68    datacheck+=" AND 0.25 > ("+param+") ";
69
70
71    if (dch)
72        query+=datacheck;
73
74    //cout << "Q: " << query << endl;
75
76    TSQLResult *res = serv.Query(query);
77    if (!res)
78        return 1;
79
80    TSQLRow *row=res->Next();
81    TString nightstart=(*row)[0];
82    TString nightstop=(*row)[1];
83    delete res;
84
85    query =" SELECT fNight FROM "+table;
86    query+=" LEFT JOIN RunInfo USING(fNight, fRunID) ";
87    query+=Form(" WHERE fSourceKey=%d", sourcekey);
88    query+=Form(" AND fNight BETWEEN %s AND %s ", nightstart.Data(), nightstop.Data());
89    query+=" GROUP BY fNight ";
90    query+=" ORDER BY fNight ";
91
92    cout << "Q: " << query << endl;
93
94
95    TSQLResult *res3 = serv.Query(query);
96    if (!res3)
97        return 1;
98
99    //counter
100    Int_t counter=0;//counter for graphs
101    Int_t counter2=0;//counter for loop
102
103    //graphs and histograms
104    TGraphErrors excessrate;
105    TGraphErrors backgroundrate;
106    TGraphErrors signif;
107    TGraphErrors significancerate;
108    TGraphErrors excratevsbgrate;
109    TGraphErrors excvsbg;
110    TGraphErrors excvszd;
111    TGraphErrors bgvszd;
112    TGraphErrors excvscur;
113    TGraphErrors bgvscur;
114    TGraphErrors excvsth;
115    TGraphErrors bgvsth;
116    TGraphErrors zdvstime;
117    TGraphErrors curvstime;
118    TGraphErrors thvstime;
119    TH1F exc("exc","rates", 43, -12.5, 202.5);
120    TH1F bg("bg","rates", 43, -12.5, 202.5);
121
122    //variables for calculations and graphs
123    Float_t significance;
124    TString excevts;
125    TString bgevts;
126    TString sigevts;
127    TString ontime;
128    TString zd2;
129    TString zd3;
130    TString cur;
131    TString th;
132    Float_t excevtssum=0;
133    Float_t bgevtssum=0;
134    Float_t sigevtssum=0;
135    Float_t ontimesum=0;
136    Float_t excrate=0;
137    Float_t bgrate=0;
138    Float_t signifrate=0;
139    Float_t excerr=0;
140    Float_t bgerr=0;
141    Float_t zdmean=0;
142    Float_t curmean=0;
143    Float_t thmean=0;
144    Float_t zddiff=0;
145    Float_t curdiff=0;
146    Float_t thdiff=0;
147    Float_t zdmin=0;
148    Float_t zdmax=0;
149    Float_t curmin=0;
150    Float_t curmax=0;
151    Float_t thmin=0;
152    Float_t thmax=0;
153    MTime start;
154    MTime stop;
155    Double_t mjdstart=0;
156    Double_t mjdstop=0;
157    Double_t mjd=0;
158    Double_t mjddiff=0;
159
160    TSQLRow *row3=0;
161    while ((row3=res3->Next()))
162    {
163        cout << "NIGHT " << (*row3)[0] << endl;
164        //query =" SELECT IF(ISNULL(fOnTimeAfterCuts), IF(ISNULL(fOnTime), Time_to_sec(Timediff(fRunStop,fRunStart)), fOnTime), fOnTimeAfterCuts), ";
165        query =" SELECT fOnTimeAfterCuts, fNumBgEvts, fNumSigEvts, fNumExcEvts, ";
166        query+=" fRunStart, fRunStop, ";
167        query+=" fZenithDistanceMax, fZenithDistanceMin, ";
168        query+=" fCurrentsMedMeanBeg, fThresholdMinSet FROM "+table;
169        query+=" LEFT JOIN RunInfo USING(fNight, fRunID) ";
170        query+=Form(" WHERE fSourceKey=%d", sourcekey);
171        query+=Form(" AND fNight= %s ", (*row3)[0]);
172        query+=" AND fOnTimeAfterCuts < 1000 "; //exclude runs with wrong/too high ontime
173        query+=" AND NOT ISNULL(fNumExcEvts) ";// only where excess was extracted
174
175        if (dch)
176            query+=datacheck;
177
178        query+=" ORDER BY fRunID ";
179
180        cout << "Q: " << query << endl;
181
182        TSQLResult *res2 = serv.Query(query);
183        if (!res2)
184            return 1;
185
186        counter2=0;
187        excevtssum=0;
188        bgevtssum=0;
189        sigevtssum=0;
190        ontimesum=0;
191        TSQLRow *row2=0;
192        while ((row2=res2->Next()))
193        {
194            counter2++;
195            ontime=(*row2)[0];
196            bgevts=(*row2)[1];
197            sigevts=(*row2)[2];
198            excevts=(*row2)[3];
199            zd2=(*row2)[6];//zdmin
200            zd3=(*row2)[7];//zdmax
201            cur=(*row2)[8];//currents
202            th=(*row2)[9];//threshold
203            if (counter2==1)
204            {
205                start.SetSqlDateTime((*row2)[4]);
206                zdmin=zd3.Atof();
207                zdmax=zd2.Atof();
208                curmin=cur.Atof();
209                curmax=cur.Atof();
210                thmin=th.Atof();
211                thmax=th.Atof();
212            }
213
214            if (ontimesum+ontime.Atof()>minutes && minutes>0)
215            {
216                //calculate values
217                significance = MMath::SignificanceLiMaSigned(sigevtssum, bgevtssum*5, 0.2);
218                signifrate = significance/sqrt(ontimesum/3600);
219                bgrate = bgevtssum/ontimesum*3600;
220                excrate = excevtssum/ontimesum*3600;
221                excerr = MMath::ErrorExc(sigevtssum, bgevtssum*5, 0.2)/ontimesum*3600.;
222                bgerr = sqrt(bgevtssum)/ontimesum*3600;
223                zdmean = zdmin+(zdmax-zdmin)/2;
224                zddiff = (zdmax-zdmin)/2;
225                curmean = curmin+(curmax-curmin)/2;
226                curdiff = (curmax-curmin)/2;
227                thmean = thmin+(thmax-thmin)/2;
228                thdiff = (thmax-thmin)/2;
229                mjdstart = start.GetMjd();
230                mjdstop = stop.GetMjd();
231                mjd = mjdstart+(mjdstop-mjdstart)/2.;
232                mjddiff = ontimesum/3600./24/2;
233
234                //fill histograms and graphs
235                exc.Fill(excrate);
236                bg.Fill(bgrate);
237                excessrate.SetPoint(counter, mjd, excrate);
238                excessrate.SetPointError(counter, mjddiff, excerr);
239                backgroundrate.SetPoint(counter, mjd, bgrate);
240                backgroundrate.SetPointError(counter, mjddiff, bgerr);
241                excvsbg.SetPoint(counter, bgrate, excrate);
242                excvsbg.SetPointError(counter, bgerr, excerr);
243                excvszd.SetPoint(counter, zdmean, excrate);
244                excvszd.SetPointError(counter, zddiff, excerr);
245                bgvszd.SetPoint(counter, zdmean, bgrate);
246                bgvszd.SetPointError(counter, zddiff, bgerr);
247                excvscur.SetPoint(counter, curmean, excrate);
248                excvscur.SetPointError(counter, curdiff, excerr);
249                bgvscur.SetPoint(counter, curmean, bgrate);
250                bgvscur.SetPointError(counter, curdiff, bgerr);
251                excvsth.SetPoint(counter, thmean, excrate);
252                excvsth.SetPointError(counter, thdiff, excerr);
253                bgvsth.SetPoint(counter, thmean, bgrate);
254                bgvsth.SetPointError(counter, thdiff, bgerr);
255                signif.SetPoint(counter, mjd, significance);
256                signif.SetPointError(counter, mjddiff, 0);
257                significancerate.SetPoint(counter, mjd, signifrate);
258                significancerate.SetPointError(counter, mjddiff, 0);
259                zdvstime.SetPoint(counter, mjd, zdmean);
260                zdvstime.SetPointError(counter, mjddiff, zddiff);
261                curvstime.SetPoint(counter, mjd, curmean);
262                curvstime.SetPointError(counter, mjddiff, curdiff);
263                thvstime.SetPoint(counter, mjd, thmean);
264                thvstime.SetPointError(counter, mjddiff, thdiff);
265
266                //set couter for graphs
267                counter++;
268                //reset counter for calculation
269                counter2=0;
270                //reset variables
271                start.SetSqlDateTime((*row2)[4]);
272                excevtssum=0;
273                bgevtssum=0;
274                sigevtssum=0;
275                ontimesum=0;
276            }
277            //set stop time
278            stop.SetSqlDateTime((*row2)[5]);
279            //add up variables
280            ontimesum+=ontime.Atof();
281            excevtssum+=excevts.Atof();
282            bgevtssum+=bgevts.Atof();
283            sigevtssum+=sigevts.Atof();
284
285            //update zdmin
286            if (zdmin>zd3.Atof())
287                zdmin=zd3.Atof();
288            //update zdmax
289            if (zdmax<zd2.Atof())
290                zdmax=zd2.Atof();
291
292            //update curmin
293            if (curmin>cur.Atof())
294                curmin=cur.Atof();
295            //update curmax
296            if (curmax<cur.Atof())
297                curmax=cur.Atof();
298
299            //update thmin
300            if (thmin>th.Atof())
301                thmin=th.Atof();
302            //update thmax
303            if (thmax<th.Atof())
304                thmax=th.Atof();
305
306        }
307        //cout << "reached last run" << endl;
308        // if ontime is larger than 90% of the timebin width, the last point is filled
309        if (ontimesum>(minutes-0.1*minutes) || minutes<0)
310        {
311            if (minutes<0 && ontimesum>20*60 && bgevtssum!=0)
312            {
313                //calculate values
314                significance = MMath::SignificanceLiMaSigned(sigevtssum, bgevtssum*5, 0.2);
315                signifrate = significance/sqrt(ontimesum/3600);
316                bgrate = bgevtssum/ontimesum*3600;
317                excrate = excevtssum/ontimesum*3600;
318                excerr = MMath::ErrorExc(sigevtssum, bgevtssum*5, 0.2)/ontimesum*3600.;
319                bgerr = sqrt(bgevtssum)/ontimesum*3600;
320                zdmean = zdmin+(zdmax-zdmin)/2;
321                zddiff = (zdmax-zdmin)/2;
322                curmean = curmin+(curmax-curmin)/2;
323                curdiff = (curmax-curmin)/2;
324                thmean = thmin+(thmax-thmin)/2;
325                thdiff = (thmax-thmin)/2;
326                mjdstart = start.GetMjd();
327                mjdstop = stop.GetMjd();
328                mjd = mjdstart+(mjdstop-mjdstart)/2.;
329                mjddiff = ontimesum/3600./24/2;
330
331                //fill histograms and graphs
332                exc.Fill(excrate);
333                bg.Fill(bgrate);
334                excessrate.SetPoint(counter, mjd, excrate);
335                excessrate.SetPointError(counter, mjddiff, excerr);
336                backgroundrate.SetPoint(counter, mjd, bgrate);
337                backgroundrate.SetPointError(counter, mjddiff, bgerr);
338                excvsbg.SetPoint(counter, bgrate, excrate);
339                excvsbg.SetPointError(counter, bgerr, excerr);
340                excvszd.SetPoint(counter, zdmean, excrate);
341                excvszd.SetPointError(counter, zddiff, excerr);
342                bgvszd.SetPoint(counter, zdmean, bgrate);
343                bgvszd.SetPointError(counter, zddiff, bgerr);
344                excvscur.SetPoint(counter, curmean, excrate);
345                excvscur.SetPointError(counter, curdiff, excerr);
346                bgvscur.SetPoint(counter, curmean, bgrate);
347                bgvscur.SetPointError(counter, curdiff, bgerr);
348                excvsth.SetPoint(counter, thmean, excrate);
349                excvsth.SetPointError(counter, thdiff, excerr);
350                bgvsth.SetPoint(counter, thmean, bgrate);
351                bgvsth.SetPointError(counter, thdiff, bgerr);
352                signif.SetPoint(counter, mjd, significance);
353                signif.SetPointError(counter, mjddiff, 0);
354                significancerate.SetPoint(counter, mjd, signifrate);
355                significancerate.SetPointError(counter, mjddiff, 0);
356                zdvstime.SetPoint(counter, mjd, zdmean);
357                zdvstime.SetPointError(counter, mjddiff, zddiff);
358                curvstime.SetPoint(counter, mjd, curmean);
359                curvstime.SetPointError(counter, mjddiff, curdiff);
360                thvstime.SetPoint(counter, mjd, thmean);
361                thvstime.SetPointError(counter, mjddiff, thdiff);
362
363                //set counter for graphs
364                counter++;
365
366                //reset variables
367                excevtssum=0;
368                bgevtssum=0;
369                sigevtssum=0;
370                ontimesum=0;
371            }
372
373            //reset for calculations
374            counter2=0;
375        }
376        delete res2;
377    }
378    delete res3;
379
380    if (excessrate.GetN()<1)
381        return 1;
382
383    MStatusDisplay *d = new MStatusDisplay;
384
385//    if (dch)
386//        backgroundrate.SetTitle(Form("Rates vs MJD (dch: %s)", limit.Data()));
387//    else
388
389
390    Double_t x;
391    Double_t y;
392    Double_t min;
393    Double_t max;
394
395    TText txt;
396    txt.SetTextColor(kGray+2);
397    txt.SetTextSize(0.07);
398    TString text="FACT Preliminary";
399
400
401
402    gROOT->SetSelectedPad(0);
403    TCanvas &c1 = d->AddTab("Rates vs MJD", "Rates vs MJD");
404    gPad->SetGridy();
405
406    excessrate.GetPoint(1,x,y);
407    max = excessrate.GetHistogram()->GetMaximum();
408    min = excessrate.GetHistogram()->GetMinimum();
409
410    backgroundrate.SetTitle("Rates vs MJD");
411    backgroundrate.SetMarkerStyle(8);
412    backgroundrate.SetMarkerSize(0.8);
413    backgroundrate.SetLineWidth(2);
414    backgroundrate.SetMarkerColor(kBlue);
415    backgroundrate.SetLineColor(kBlue);
416    backgroundrate.GetYaxis()->SetTitle("evts/h");
417    backgroundrate.GetXaxis()->SetTitle("MJD");
418    backgroundrate.GetXaxis()->CenterTitle();
419    backgroundrate.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
420    backgroundrate.DrawClone("AP");
421
422    excessrate.SetMarkerStyle(8);
423    excessrate.SetMarkerSize(0.8);
424    excessrate.SetLineWidth(2);
425    excessrate.DrawClone("Psame");
426
427    txt.DrawText(x, max, text);
428
429
430
431    gROOT->SetSelectedPad(0);
432    TCanvas &c2 = d->AddTab("Excess vs MJD", "Excess vs MJD");
433    gPad->SetGridy();
434    excessrate.SetTitle("Excess Rate vs MJD");
435    excessrate.SetMarkerStyle(7);
436    excessrate.SetMarkerSize(2);
437    excessrate.GetYaxis()->SetTitle("excess evts/h");
438    excessrate.GetXaxis()->SetTitle("MJD");
439    excessrate.GetXaxis()->CenterTitle();
440    excessrate.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
441    excessrate.DrawClone("AP");
442    txt.DrawText(x, max, text);
443
444
445
446    gROOT->SetSelectedPad(0);
447    TCanvas &c4 = d->AddTab("Exc vs Bg", "Exc vs Bg");
448
449    backgroundrate.GetPoint(1,x,y);
450    max = excvsbg.GetHistogram()->GetMaximum();
451    min = excvsbg.GetHistogram()->GetMinimum();
452
453    excvsbg.SetTitle("Excess Rate vs Background Rate");
454    excvsbg.SetMarkerStyle(7);
455    excvsbg.SetMarkerSize(2);
456    excvsbg.GetYaxis()->SetTitle("excess evts/h");
457    excvsbg.GetXaxis()->SetTitle("background evts/h");
458    excvsbg.GetXaxis()->CenterTitle();
459    excvsbg.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
460    excvsbg.DrawClone("AP");
461    txt.DrawText(excvsbg.GetMean(1), max, text);
462
463
464
465    gROOT->SetSelectedPad(0);
466    TCanvas &c3 = d->AddTab("Exc vs Zd", "Exc vs Zd");
467
468    excvszd.GetPoint(1,x,y);
469    max = excvszd.GetHistogram()->GetMaximum();
470    min = excvszd.GetHistogram()->GetMinimum();
471
472    excvszd.SetTitle("Excess Rate vs Zd");
473    excvszd.SetMarkerStyle(7);
474    excvszd.SetMarkerSize(2);
475    excvszd.GetYaxis()->SetTitle("excess evts/h");
476    excvszd.GetXaxis()->SetTitle("deg");
477    excvszd.GetXaxis()->CenterTitle();
478    excvszd.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
479    excvszd.DrawClone("AP");
480    txt.DrawText(x, max, text);
481
482
483
484    gROOT->SetSelectedPad(0);
485    TCanvas &c5 = d->AddTab("Bg vs Zd", "Bg vs Zd");
486
487    zdvstime.GetPoint(1,x,y);
488    max = bgvszd.GetHistogram()->GetMaximum();
489    min = bgvszd.GetHistogram()->GetMinimum();
490
491    bgvszd.SetTitle("Background Rate vs Zd");
492    bgvszd.SetMarkerStyle(7);
493    bgvszd.SetMarkerSize(2);
494    bgvszd.GetYaxis()->SetTitle("background evts/h");
495    bgvszd.GetXaxis()->SetTitle("deg");
496    bgvszd.GetXaxis()->CenterTitle();
497    bgvszd.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
498    bgvszd.DrawClone("AP");
499    txt.DrawText(y, max, text);
500
501
502
503    gROOT->SetSelectedPad(0);
504    TCanvas &c6 = d->AddTab("Signifrate vs MJD", "Signifrate vs MJD");
505    gPad->SetGridy();
506
507    significancerate.GetPoint(1,x,y);
508    max = significancerate.GetHistogram()->GetMaximum();
509    min = significancerate.GetHistogram()->GetMinimum();
510
511    significancerate.SetTitle("Significance Rate vs MJD");
512    significancerate.SetMarkerStyle(7);
513    significancerate.SetMarkerSize(2);
514    significancerate.GetYaxis()->SetTitle("sigma/sqrt(h)");
515    significancerate.GetXaxis()->SetTitle("MJD");
516    significancerate.GetXaxis()->CenterTitle();
517    significancerate.GetYaxis()->SetRangeUser(0,max*1.1);
518    significancerate.DrawClone("AP");
519    txt.DrawText(x, max, text);
520
521
522
523    gROOT->SetSelectedPad(0);
524    TCanvas &c7 = d->AddTab("Signif vs MJD", "Signif vs MJD");
525
526    signif.GetPoint(1,x,y);
527    max = signif.GetHistogram()->GetMaximum();
528    min = signif.GetHistogram()->GetMinimum();
529
530    signif.SetTitle("Significance vs MJD");
531    signif.SetMarkerStyle(7);
532    signif.SetMarkerSize(2);
533    signif.GetYaxis()->SetTitle("sigma");
534    signif.GetXaxis()->SetTitle("MJD");
535    signif.GetXaxis()->CenterTitle();
536    signif.GetYaxis()->SetRangeUser(0,max*1.1);
537    signif.DrawClone("AP");
538    txt.DrawText(x, max, text);
539
540
541
542    gROOT->SetSelectedPad(0);
543    TCanvas &c8 = d->AddTab("Rate Hist", "Rate Hist");
544
545    max = bg.GetMaximum()*1.1;
546    min = bg.GetMinimum();
547
548    bg.SetLineColor(kBlue);
549    bg.GetYaxis()->SetRangeUser(0,max*1.1);
550    bg.GetXaxis()->SetTitle("evts/h");
551    bg.DrawCopy("hist");
552    exc.DrawCopy("histsame");
553    txt.DrawText(min, max, text);
554
555
556
557    gROOT->SetSelectedPad(0);
558    TCanvas &c9 = d->AddTab("Zd vs Time", "Zd vs Time");
559    gPad->SetGridy();
560
561    zdvstime.GetPoint(1,x,y);
562    max = zdvstime.GetHistogram()->GetMaximum();
563    min = zdvstime.GetHistogram()->GetMinimum();
564
565    zdvstime.SetTitle("Zd vs MJD");
566    zdvstime.SetMarkerStyle(7);
567    zdvstime.SetMarkerSize(2);
568    zdvstime.GetYaxis()->SetTitle("deg");
569    zdvstime.GetXaxis()->SetTitle("MJD");
570    zdvstime.GetXaxis()->CenterTitle();
571    zdvstime.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
572    zdvstime.DrawClone("AP");
573    txt.DrawText(x, max, text);
574
575
576
577    gROOT->SetSelectedPad(0);
578    TCanvas &c10 = d->AddTab("Cur vs Time", "Cur vs Time");
579    gPad->SetGridy();
580
581    curvstime.GetPoint(1,x,y);
582    max = curvstime.GetHistogram()->GetMaximum();
583    min = curvstime.GetHistogram()->GetMinimum();
584
585    curvstime.SetTitle("Currents vs MJD");
586    curvstime.SetMarkerStyle(7);
587    curvstime.SetMarkerSize(2);
588    curvstime.GetYaxis()->SetTitle("#muA");
589    curvstime.GetXaxis()->SetTitle("MJD");
590    curvstime.GetXaxis()->CenterTitle();
591    curvstime.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
592    curvstime.DrawClone("AP");
593    txt.DrawText(x, max, text);
594
595
596
597    gROOT->SetSelectedPad(0);
598    TCanvas &c11 = d->AddTab("Th vs Time", "Th vs Time");
599    gPad->SetGridy();
600
601    thvstime.GetPoint(1,x,y);
602    max = thvstime.GetHistogram()->GetMaximum();
603    min = thvstime.GetHistogram()->GetMinimum();
604
605    thvstime.SetTitle("Threshold vs MJD");
606    thvstime.SetMarkerStyle(7);
607    thvstime.SetMarkerSize(2);
608    thvstime.GetYaxis()->SetTitle("DAC counts");
609    thvstime.GetXaxis()->SetTitle("MJD");
610    thvstime.GetXaxis()->CenterTitle();
611    thvstime.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
612    thvstime.DrawClone("AP");
613    txt.DrawText(x, max, text);
614
615
616
617    gROOT->SetSelectedPad(0);
618    TCanvas &c12 = d->AddTab("Exc vs Cur", "Exc vs Cur");
619
620    excvscur.GetPoint(1,x,y);
621    max = excvscur.GetHistogram()->GetMaximum();
622    min = excvscur.GetHistogram()->GetMinimum();
623
624    excvscur.SetTitle("Excess Rate vs Currents");
625    excvscur.SetMarkerStyle(7);
626    excvscur.SetMarkerSize(2);
627    excvscur.GetYaxis()->SetTitle("excess evts/h");
628    excvscur.GetXaxis()->SetTitle("#muA");
629    excvscur.GetXaxis()->CenterTitle();
630    excvscur.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
631    excvscur.DrawClone("AP");
632    txt.DrawText(x, max, text);
633
634
635
636    gROOT->SetSelectedPad(0);
637    TCanvas &c13 = d->AddTab("Bg vs Cur", "Bg vs Cur");
638
639    curvstime.GetPoint(1,x,y);
640    max = bgvscur.GetHistogram()->GetMaximum();
641    min = bgvscur.GetHistogram()->GetMinimum();
642
643    bgvscur.SetTitle("Background Rate vs Current");
644    bgvscur.SetMarkerStyle(7);
645    bgvscur.SetMarkerSize(2);
646    bgvscur.GetYaxis()->SetTitle("background evts/h");
647    bgvscur.GetXaxis()->SetTitle("#muA");
648    bgvscur.GetXaxis()->CenterTitle();
649    bgvscur.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
650    bgvscur.DrawClone("AP");
651    txt.DrawText(y, max, text);
652
653
654
655    gROOT->SetSelectedPad(0);
656    TCanvas &c14 = d->AddTab("Exc vs Th", "Exc vs Th");
657
658    excvsth.GetPoint(1,x,y);
659    max = excvsth.GetHistogram()->GetMaximum();
660    min = excvsth.GetHistogram()->GetMinimum();
661
662    excvsth.SetTitle("Excess Rate vs Threshold");
663    excvsth.SetMarkerStyle(7);
664    excvsth.SetMarkerSize(2);
665    excvsth.GetYaxis()->SetTitle("excess evts/h");
666    excvsth.GetXaxis()->SetTitle("DAC counts");
667    excvsth.GetXaxis()->CenterTitle();
668    excvsth.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
669    excvsth.DrawClone("AP");
670    txt.DrawText(x, max, text);
671
672
673
674    gROOT->SetSelectedPad(0);
675    TCanvas &c15 = d->AddTab("Bg vs Th", "Bg vs Th");
676
677    thvstime.GetPoint(1,x,y);
678    max = bgvsth.GetHistogram()->GetMaximum();
679    min = bgvsth.GetHistogram()->GetMinimum();
680
681    bgvsth.SetTitle("Background Rate vs Threshold");
682    bgvsth.SetMarkerStyle(7);
683    bgvsth.SetMarkerSize(2);
684    bgvsth.GetYaxis()->SetTitle("background evts/h");
685    bgvsth.GetXaxis()->SetTitle("DAC counts");
686    bgvsth.GetXaxis()->CenterTitle();
687    bgvsth.GetYaxis()->SetRangeUser(min-min*0.1,max*1.1);
688    bgvsth.DrawClone("AP");
689    txt.DrawText(y, max, text);
690
691
692
693
694    d->SaveAs(outfile);
695
696    return 0;
697
698}
699
700
701
Note: See TracBrowser for help on using the repository browser.