76 def execute(self):
77
78 if self.dbHandler is None:
79 self.dbHandler = LumiDBHandler()
80
81
82 fp = None
83 format = "stdout"
84 if self.outFile is not None:
85 fp = open(self.outFile, 'w')
86 format = "txt"
87 if self.outFile.endswith(".json"):
88 format = "json"
89 output = {}
90 if self.outFile.endswith(".csv"):
91 format = "csv"
92
93
94
95 lblb = CoolDataReader(self.onlLumiDB, self.onlLBLBFolder)
96
97
98 for run in self.runList:
99
100 lblb.setIOVRangeFromRun(run)
101 if not lblb.readData():
102 print(f
'RunLumiTime - No LBLB data found for run {run}!')
103 continue
104
105 for obj in lblb.data:
106
107 run = obj.since() >> 32
108 lb = obj.since() & 0xFFFFFFFF
109
110 startTime = obj.payload()['StartTime']
111 endTime = obj.payload()['EndTime']
112 if format == "json":
113 if not run in output:
114 output[run] = []
115 output[run] += [{
116 "lb":lb,
117 "begin": startTime/1.e9,
118 "end": endTime/1.e9
119 }]
120 else:
121 entry = (run, lb, startTime/1.e9, endTime/1.e9)
122 separator = ',' if format=='csv' else ' '
123 print(separator.join([str(v)
for v
in entry]), file=fp)
124
125 if format=="json":
126 import json
127 json.dump(output, fp, indent=4)
128
129
130 if fp is not None:
131 fp.close()
132 print(f
"Wrote file {self.outFile}")
133
134