| 1 | #!/usr/bin/python -itt | 
|---|
| 2 |  | 
|---|
| 3 | ############################################## | 
|---|
| 4 | # by Q. Weitzel and T. Kraehenbuehl | 
|---|
| 5 | # plot trigger rates for all runs of one night | 
|---|
| 6 | # adapt base_path to select the night | 
|---|
| 7 | # (and change title and zoom of the graph) | 
|---|
| 8 | ############################################## | 
|---|
| 9 |  | 
|---|
| 10 | from array import array | 
|---|
| 11 | import os | 
|---|
| 12 | import re | 
|---|
| 13 |  | 
|---|
| 14 | from pyfact import SlowData | 
|---|
| 15 |  | 
|---|
| 16 | from ROOT import TCanvas, TGraph | 
|---|
| 17 | from ROOT import gROOT | 
|---|
| 18 | from ROOT import gStyle | 
|---|
| 19 |  | 
|---|
| 20 | gROOT.SetStyle("Plain") | 
|---|
| 21 |  | 
|---|
| 22 | filelist = [] | 
|---|
| 23 | base_path = "/fact/aux/2012/04/16/" | 
|---|
| 24 |  | 
|---|
| 25 | for base,subdirs,files in os.walk(base_path): | 
|---|
| 26 | for filename in files: | 
|---|
| 27 | #include only run files | 
|---|
| 28 | regex = re.search(r'_\d\d\d\.FTM_CONTROL_TRIGGER_RATES',filename) | 
|---|
| 29 | #include run files and also the nightly file | 
|---|
| 30 | #regex = re.search(r'FTM_CONTROL_TRIGGER_RATES',filename) | 
|---|
| 31 | if regex: | 
|---|
| 32 | filelist.append(os.path.join(base,filename)) | 
|---|
| 33 |  | 
|---|
| 34 | #alternatively, select slow data files directly for the file list | 
|---|
| 35 | #filelist = ["/fact/aux/2012/04/16/20120416_030.FTM_CONTROL_TRIGGER_RATES.fits", | 
|---|
| 36 | #            "/fact/aux/2012/04/16/20120416_040.FTM_CONTROL_TRIGGER_RATES.fits"] | 
|---|
| 37 |  | 
|---|
| 38 | trigger_rate_array = array("d",[]) | 
|---|
| 39 | time_array = array("d",[]) | 
|---|
| 40 |  | 
|---|
| 41 | for filename in filelist: | 
|---|
| 42 |  | 
|---|
| 43 | print filename | 
|---|
| 44 |  | 
|---|
| 45 | file_handle = SlowData(filename) | 
|---|
| 46 |  | 
|---|
| 47 | file_handle.register("TriggerRate") | 
|---|
| 48 | file_handle.register("Time") | 
|---|
| 49 | file_handle.register("FTMtimeStamp") | 
|---|
| 50 |  | 
|---|
| 51 | ftm_ts_old = 1E10 | 
|---|
| 52 |  | 
|---|
| 53 | for row in file_handle: | 
|---|
| 54 | if row.FTMtimeStamp>ftm_ts_old:#needed to remove negative rate in first report | 
|---|
| 55 | trigger_rate_array.append(float(row.TriggerRate)) | 
|---|
| 56 | time_array.append(float(row.Time)*24*3600) | 
|---|
| 57 | ftm_ts_old = row.FTMtimeStamp | 
|---|
| 58 |  | 
|---|
| 59 | canv = TCanvas("canv","title",50,50,1500,800) | 
|---|
| 60 | graph = TGraph(len(trigger_rate_array),time_array,trigger_rate_array) | 
|---|
| 61 |  | 
|---|
| 62 | #change the time format to human readable | 
|---|
| 63 | graph.GetXaxis().SetTimeDisplay(1); | 
|---|
| 64 | #graph.GetXaxis().SetTimeFormat("%d.%m.  %H:%M%F1970-01-01 00:00:00"); | 
|---|
| 65 | graph.GetXaxis().SetTimeFormat("%H:%M%F1970-01-01 00:00:00") | 
|---|
| 66 |  | 
|---|
| 67 | graph.SetMarkerStyle(7) | 
|---|
| 68 | graph.SetMarkerSize(1) | 
|---|
| 69 | graph.SetMarkerColor(2) | 
|---|
| 70 | graph.SetTitle("Night 16.04.2012") | 
|---|
| 71 | graph.GetYaxis().SetRangeUser(0,250)#zoom to be adapted for each night | 
|---|
| 72 | graph.GetXaxis().SetTitleOffset(1.2) | 
|---|
| 73 | graph.GetXaxis().SetTitle("UTC+4h  (hh:mm)")#for summer time | 
|---|
| 74 | graph.GetYaxis().SetTitle("Trigger Rate (Hz)") | 
|---|
| 75 | graph.Draw("ap") | 
|---|