ATLAS Offline Software
Loading...
Searching...
No Matches
PlotCalibrationGains.GainReader Class Reference
Collaboration diagram for PlotCalibrationGains.GainReader:

Public Member Functions

 __init__ (self)
 LoadGainsXml (self, name)
 LoadReferenceXml (self, name)
 LoadGainsSqlite (self, name)
 LoadReferenceSqlite (self, name)
 LoadReferenceOracle (self, mapping_tool)
 getGain (self, coolId)
 getChi2 (self, coolId)
 getOffset (self, coolId)
 getReferenceGain (self, coolId)
 passesSelection (self, coolId)

Public Attributes

dict measured_gains = {}
dict reference_gains = {}
dict measured_chi2 = {}
dict measured_offset = {}
int UNIX2COOL = 1000000000
 run_nr = None
str strategy = None

Detailed Description

Definition at line 296 of file PlotCalibrationGains.py.

Constructor & Destructor Documentation

◆ __init__()

PlotCalibrationGains.GainReader.__init__ ( self)

Definition at line 298 of file PlotCalibrationGains.py.

298 def __init__(self):
299
300 self.measured_gains={}
301 self.reference_gains={}
302 self.measured_chi2={}
303 self.measured_offset={}
304 self.UNIX2COOL = 1000000000
305
306 self.run_nr=None
307 self.strategy=None
308

Member Function Documentation

◆ getChi2()

PlotCalibrationGains.GainReader.getChi2 ( self,
coolId )

Definition at line 488 of file PlotCalibrationGains.py.

488 def getChi2(self,coolId):
489 if (coolId in self.measured_chi2):
490 return float(self.measured_chi2[coolId])
491 else:
492 return ''
493

◆ getGain()

PlotCalibrationGains.GainReader.getGain ( self,
coolId )

Definition at line 482 of file PlotCalibrationGains.py.

482 def getGain(self,coolId):
483 if (coolId in self.measured_gains):
484 return float(self.measured_gains[coolId])
485 else:
486 return ''
487

◆ getOffset()

PlotCalibrationGains.GainReader.getOffset ( self,
coolId )

Definition at line 494 of file PlotCalibrationGains.py.

494 def getOffset(self,coolId):
495 if (coolId in self.measured_offset):
496 return float(self.measured_offset[coolId])
497 else:
498 return ''
499
void getOffset(boost::tokenizer< boost::char_separator< char > >::iterator &token, uint32_t &offset)

◆ getReferenceGain()

PlotCalibrationGains.GainReader.getReferenceGain ( self,
coolId )

Definition at line 500 of file PlotCalibrationGains.py.

500 def getReferenceGain(self,coolId):
501 if (coolId in self.reference_gains):
502 return float(self.reference_gains[coolId])
503 else:
504 return ''
505

◆ LoadGainsSqlite()

PlotCalibrationGains.GainReader.LoadGainsSqlite ( self,
name )

Definition at line 348 of file PlotCalibrationGains.py.

348 def LoadGainsSqlite(self,name):
349
350 # get database service and open database
351 dbSvc = cool.DatabaseSvcFactory.databaseService()
352
353 dbString='sqlite://;schema='+name+';dbname=L1CALO'
354 try:
355 db = dbSvc.openDatabase(dbString, False)
356 except Exception as e:
357 print ('Error: Problem opening database', e)
358 sys.exit(1)
359
360 folder_name = '/TRIGGER/L1Calo/V1/Results/EnergyScanResults'
361 folder=db.getFolder(folder_name)
362
363 startUtime = int(time.time())
364 endUtime = int(time.time())
365 startValKey = startUtime * self.UNIX2COOL
366 endValKey = endUtime * self.UNIX2COOL
367 chsel = cool.ChannelSelection(0,sys.maxsize)
368
369 try:
370 itr=folder.browseObjects(startValKey, endValKey, chsel)
371 except Exception as e:
372 print (e)
373 sys.exit(1)
374
375 for row in itr:
376 CoolId = hex(int(row.channelId()))
377 payload = row.payload()
378 self.measured_gains[CoolId] = payload['Slope']
379 self.measured_chi2[CoolId] = payload['Chi2']
380 self.measured_offset[CoolId] = payload['Offset']
381
382 folder_gen_name = '/TRIGGER/L1Calo/V1/Results/EnergyScanRunInfo'
383 folder_gen=db.getFolder(folder_gen_name)
384
385 try:
386 itr=folder_gen.browseObjects(startValKey, endValKey, chsel)
387 for row in itr:
388 payload = row.payload()
389 self.run_nr = payload['RunNumber']
390 self.strategy = payload['GainStrategy']
391 if (self.strategy == ''): self.strategy='NA'
392 print ( ("Run nr. = %d, Strategy = %s") % (self.run_nr, self.strategy) )
393
394 except Exception: # Doesn't seem to catch C++ exceptions :-(
395 print ("Warning, in LoadGainsSqlite can't get runtype info! Hope this is not serious!")
396
397 # close database
398 db.closeDatabase()
399

◆ LoadGainsXml()

PlotCalibrationGains.GainReader.LoadGainsXml ( self,
name )

Definition at line 309 of file PlotCalibrationGains.py.

309 def LoadGainsXml(self,name):
310
311 input_file = open(name)
312
313 for line in input_file.readlines():
314 parts = line.split(' ')
315 if parts[0] == '<Channel':
316 list_cool=parts[1].split('\'')
317 cool_id=list_cool[1]
318
319 list_gain=parts[2].split('\'')
320 gain=list_gain[1]
321 self.measured_gains[cool_id]=gain
322
323 list_offset=parts[3].split('\'')
324 offset=list_offset[1]
325 self.measured_offset[cool_id]=offset
326
327 list_chi2=parts[4].split('\'')
328 chi2=list_chi2[1]
329 self.measured_chi2[cool_id]=chi2
330
331 input_file.close()
332
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177

◆ LoadReferenceOracle()

PlotCalibrationGains.GainReader.LoadReferenceOracle ( self,
mapping_tool )

Definition at line 436 of file PlotCalibrationGains.py.

436 def LoadReferenceOracle(self,mapping_tool):
437
438 # get database service and open database
439 dbSvc = cool.DatabaseSvcFactory.databaseService()
440
441 dbString = 'oracle://ATLAS_COOLPROD;schema=ATLAS_COOLONL_TRIGGER;dbname=CONDBR2'
442 try:
443 db = dbSvc.openDatabase(dbString, False)
444 except Exception as e:
445 print ('Error: Problem opening database', e)
446 sys.exit(1)
447
448 folder_name = "/TRIGGER/Receivers/Factors/CalibGains"
449 folder=db.getFolder(folder_name)
450
451 startUtime = int(time.time())
452 endUtime = int(time.time())
453 startValKey = startUtime * self.UNIX2COOL
454 endValKey = endUtime * self.UNIX2COOL
455 chsel = cool.ChannelSelection(0,sys.maxsize)
456
457 try:
458 itr=folder.browseObjects(startValKey, endValKey, chsel)
459 except Exception as e:
460 print (e)
461 sys.exit(1)
462
463 for row in itr:
464 ReceiverId = hex(int(row.channelId()))
465 PPMId = mapping_tool.getPPMfromReceiver(ReceiverId)
466 payload = row.payload()
467 gain = payload['factor']
468
469 if PPMId is not None:
470 if self.strategy is None: #run type not known
471 self.reference_gains[PPMId]=gain
472 else:
473 if mapping_tool.getReceiverfromPPM(PPMId,self.strategy) == ReceiverId: # correct receiver?
474 #print ("Using receiver nr.", ReceiverId, "for PPM nr.",PPMId)
475 self.reference_gains[PPMId]=gain
476 #else:
477 # print ("Skipping receiver nr.", ReceiverId, "for PPM nr.",PPMId)
478
479 # close database
480 db.closeDatabase()
481

◆ LoadReferenceSqlite()

PlotCalibrationGains.GainReader.LoadReferenceSqlite ( self,
name )

Definition at line 400 of file PlotCalibrationGains.py.

400 def LoadReferenceSqlite(self,name):
401
402 # get database service and open database
403 dbSvc = cool.DatabaseSvcFactory.databaseService()
404
405 dbString='sqlite://;schema='+name+';dbname=L1CALO'
406 try:
407 db = dbSvc.openDatabase(dbString, False)
408 except Exception as e:
409 print ('Error: Problem opening database', e)
410 sys.exit(1)
411
412 folder_name = '/TRIGGER/L1Calo/V1/Results/EnergyScanResults'
413 folder=db.getFolder(folder_name)
414
415 startUtime = int(time.time())
416 endUtime = int(time.time())
417 startValKey = startUtime * self.UNIX2COOL
418 endValKey = endUtime * self.UNIX2COOL
419 chsel = cool.ChannelSelection(0,sys.maxsize)
420
421 try:
422 itr=folder.browseObjects(startValKey, endValKey, chsel)
423 except Exception as e:
424 print (e)
425 sys.exit(1)
426
427 for row in itr:
428 CoolId = hex(int(row.channelId()))
429 payload = row.payload()
430 self.reference_gains[CoolId]=payload['Slope']
431
432 # close database
433 db.closeDatabase()
434
435

◆ LoadReferenceXml()

PlotCalibrationGains.GainReader.LoadReferenceXml ( self,
name )

Definition at line 333 of file PlotCalibrationGains.py.

333 def LoadReferenceXml(self,name):
334
335 input_gains_reference = open(name)
336
337 for line in input_gains_reference.readlines():
338 parts = line.split(' ')
339 if parts[0] == '<Channel':
340 list_cool=parts[1].split('\'')
341 cool_id=list_cool[1]
342
343 list_gain=parts[2].split('\'')
344 gain=list_gain[1]
345 self.reference_gains[cool_id]=gain
346
347

◆ passesSelection()

PlotCalibrationGains.GainReader.passesSelection ( self,
coolId )

Definition at line 506 of file PlotCalibrationGains.py.

506 def passesSelection(self,coolId):
507 if ((coolId in self.measured_gains) and
508 (self.getGain(coolId) > 0.5 and self.getGain(coolId)<1.6) and
509 #(self.getGain(coolId) > 0.5 and self.getGain(coolId)<2.1) and
510 #(self.getOffset(coolId) > -2 and self.getOffset(coolId) < 2)):
511 (self.getOffset(coolId) > -10 and self.getOffset(coolId) < 10)):
512 return True
513 else:
514 return False
515
516

Member Data Documentation

◆ measured_chi2

PlotCalibrationGains.GainReader.measured_chi2 = {}

Definition at line 302 of file PlotCalibrationGains.py.

◆ measured_gains

PlotCalibrationGains.GainReader.measured_gains = {}

Definition at line 300 of file PlotCalibrationGains.py.

◆ measured_offset

PlotCalibrationGains.GainReader.measured_offset = {}

Definition at line 303 of file PlotCalibrationGains.py.

◆ reference_gains

PlotCalibrationGains.GainReader.reference_gains = {}

Definition at line 301 of file PlotCalibrationGains.py.

◆ run_nr

PlotCalibrationGains.GainReader.run_nr = None

Definition at line 306 of file PlotCalibrationGains.py.

◆ strategy

PlotCalibrationGains.GainReader.strategy = None

Definition at line 307 of file PlotCalibrationGains.py.

◆ UNIX2COOL

int PlotCalibrationGains.GainReader.UNIX2COOL = 1000000000

Definition at line 304 of file PlotCalibrationGains.py.


The documentation for this class was generated from the following file: