245 def write_new_file(self,new_file_name):
247 print (
" Writing output to file " , new_file_name)
249 dbSvc = cool.DatabaseSvcFactory.databaseService()
250 connectString =
'sqlite://;schema='+new_file_name+
';dbname=L1CALO'
252 print (
'recreating database file',new_file_name)
253 dbSvc.dropDatabase( connectString )
254 db = dbSvc.createDatabase( connectString )
256 spec = cool.RecordSpecification()
257 spec.extend(
'RxMean',cool.StorageType.Float)
259 spec.extend(
'AffectedCells1', cool.StorageType.UChar)
260 spec.extend(
'AffectedCells2', cool.StorageType.UChar)
261 spec.extend(
'AffectedCells3', cool.StorageType.UChar)
262 spec.extend(
'AffectedCells4', cool.StorageType.UChar)
264 spec.extend(
'LayerMean1',cool.StorageType.Float)
265 spec.extend(
'LayerMean2',cool.StorageType.Float)
266 spec.extend(
'LayerMean3',cool.StorageType.Float)
267 spec.extend(
'LayerMean4',cool.StorageType.Float)
269 now =
int(time.time())
271 since = now*self.UNIX2COOL
272 until = cool.ValidityKeyMax
273 db.createFolderSet(
'/TRIGGER')
274 db.createFolderSet(
'/TRIGGER/L1Calo')
275 db.createFolderSet(
'/TRIGGER/L1Calo/V1')
276 db.createFolderSet(
'/TRIGGER/L1Calo/V1/Results')
279 folder_description =
"<timeStamp>time</timeStamp><addrHeader><address_header service_type=\"71\" clid=\"1238547719\"/></addrHeader><typeName>CondAttrListCollection</typeName>"
280 f = db.createFolder(
"/TRIGGER/L1Calo/V1/Results/HVCorrections" , spec,folder_description)
283 for i
in self.reference_HV.
keys():
285 data = cool.Record( spec )
290 for ilayer
in range(4):
291 if self.NCells[i][ilayer]>0:
292 MeanHV += self.reference_HV[i][ilayer]*self.NCells[i][ilayer]
293 TotalNrCells += self.NCells[i][ilayer]
295 MeanHV /= TotalNrCells
298 data[
'RxMean'] = MeanHV
300 data[
'LayerMean1'] = self.reference_HV[i][0]
301 data[
'LayerMean2'] = self.reference_HV[i][1]
302 data[
'LayerMean3'] = self.reference_HV[i][2]
303 data[
'LayerMean4'] = self.reference_HV[i][3]
305 data[
'AffectedCells1'] = struct.pack(
'B',self.reference_AffectedCells[i][0])
306 data[
'AffectedCells2'] = struct.pack(
'B',self.reference_AffectedCells[i][1])
307 data[
'AffectedCells3'] = struct.pack(
'B',self.reference_AffectedCells[i][2])
308 data[
'AffectedCells4'] = struct.pack(
'B',self.reference_AffectedCells[i][3])
310 f.storeObject(since,until, data,
int(i,16) )