245 def write_new_file(self,new_file_name):
246
247 print (" Writing output to file " , new_file_name)
248
249 dbSvc = cool.DatabaseSvcFactory.databaseService()
250 connectString = 'sqlite://;schema='+new_file_name+';dbname=L1CALO'
251
252 print ('recreating database file',new_file_name)
253 dbSvc.dropDatabase( connectString )
254 db = dbSvc.createDatabase( connectString )
255
256 spec = cool.RecordSpecification()
257 spec.extend('RxMean',cool.StorageType.Float)
258
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)
263
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)
268
269 now = int(time.time())
270
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')
277
278
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)
281
282
283 for i in self.reference_HV.keys():
284
285 data = cool.Record( spec )
286
287 MeanHV=0.
288 TotalNrCells=0
289
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]
294
295 MeanHV /= TotalNrCells
296
297
298 data['RxMean'] = MeanHV
299
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]
304
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])
309
310 f.storeObject(since,until, data, int(i,16) )
311
312 db.closeDatabase()
313
314 return
315