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 |
|
---|
31 | using namespace std;
|
---|
32 |
|
---|
33 |
|
---|
34 | int 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 |
|
---|