|  | 
| def | __init__ (self, db, folderPath, calibDrawerType, isMultiVersionFolder=True, isRunLumiTimeStamp=True) | 
|  | 
| def | register (self, since=(MINRUN, MINLBK), until=(MAXRUN, MAXLBK), tag="", option=0) | 
|  | 
| def | setComment (self, author, comment=None) | 
|  | 
| def | getComment (self, split=False) | 
|  | 
| def | getDrawer (self, ros, drawer, calibDrawerTemplate=None) | 
|  | 
| def | zeroBlob (self, ros, drawer) | 
|  | 
TileCalibBlobWriterBase is a helper class, managing the details of
COOL interactions for the user of TileCalibBlobs.
 
Definition at line 486 of file TileCalibTools.py.
◆ __init__()
      
        
          | def python.TileCalibTools.TileBlobWriter.__init__ | ( |  | self, | 
        
          |  |  |  | db, | 
        
          |  |  |  | folderPath, | 
        
          |  |  |  | calibDrawerType, | 
        
          |  |  |  | isMultiVersionFolder = True, | 
        
          |  |  |  | isRunLumiTimeStamp = True | 
        
          |  | ) |  |  | 
      
 
Input:
- db        : db should be an open database connection
- folderPath: full folder path to create or update
 
Definition at line 493 of file TileCalibTools.py.
  493     def __init__(self, db, folderPath, calibDrawerType,
 
  494                  isMultiVersionFolder=True, isRunLumiTimeStamp=True):
 
  497         - db        : db should be an open database connection 
  498         - folderPath: full folder path to create or update 
  502         TileCalibLogger.__init__(self,
"TileBlobWriter")
 
  508         folderMode = cool.FolderVersioning.MULTI_VERSION
 
  509         if not isMultiVersionFolder:
 
  510             folderMode = cool.FolderVersioning.SINGLE_VERSION
 
  514         if not isRunLumiTimeStamp:
 
  520             if self.__db.existsFolder(folderPath):
 
  521                 self.__folder = self.__db.getFolder(folderPath)
 
  523                 modeInCool = self.__folder.versioningMode()
 
  524                 if modeInCool!=folderMode:
 
  525                     str = 
"Incompatible folder mode detected, COOL folder has type " 
  526                     if modeInCool==cool.FolderVersioning.MULTI_VERSION:
 
  533                 payloadSpec = cool.RecordSpecification()
 
  534                 payloadSpec.extend( 
'TileCalibBlob', cool.StorageType.Blob64k )
 
  535                 folderSpec = cool.FolderSpecification(folderMode, payloadSpec)
 
  536                 self.__folder = db.createFolder(folderPath, folderSpec, folderDescr, 
True)
 
  537         except Exception 
as e:
 
  538             self.log().critical( e )
 
  542         self.__chanDictRecord = {} 
 
  543         self.__chanDictDrawer = {} 
 
  546         self.__calibDrawerType = calibDrawerType
 
  547         if   calibDrawerType==
'Flt':
 
  548             self.__defVec = cppyy.gbl.std.vector(
'std::vector<float>')()
 
  549         elif calibDrawerType==
'Bch' or calibDrawerType==
'Int':
 
  550             self.__defVec = cppyy.gbl.std.vector(
'std::vector<unsigned int>')()
 
  552             raise Exception(
"Unknown calibDrawerType: %s" % calibDrawerType)
 
 
 
◆ getComment()
      
        
          | def python.TileCalibTools.TileBlobWriter.getComment | ( |  | self, | 
        
          |  |  |  | split = False | 
        
          |  | ) |  |  | 
      
 
Returns the general comment (default if none is set)
 
Definition at line 664 of file TileCalibTools.py.
  664     def getComment(self, split=False):
 
  666         Returns the general comment (default if none is set) 
  670             data = self.__chanDictRecord.
get(chanNum)
 
  672                 return "<No general comment!>" 
  673             blob = data[
'TileCalibBlob']
 
  676                 return (cmt.getAuthor(),cmt.getComment(),cmt.getDate())
 
  678                 return cmt.getFullComment()
 
  679         except Exception 
as e:
 
  680             self.log().critical( e )
 
 
 
◆ getDrawer()
      
        
          | def python.TileCalibTools.TileBlobWriter.getDrawer | ( |  | self, | 
        
          |  |  |  | ros, | 
        
          |  |  |  | drawer, | 
        
          |  |  |  | calibDrawerTemplate = None | 
        
          |  | ) |  |  | 
      
 
Returns a TileCalibDrawer object of requested type
for the given ROS and drawer.
 
Definition at line 683 of file TileCalibTools.py.
  683     def getDrawer(self, ros, drawer, calibDrawerTemplate=None):
 
  685         Returns a TileCalibDrawer object of requested type 
  686         for the given ROS and drawer. 
  692             calibDrawer = self.__chanDictDrawer.
get(chanNum,
None)
 
  698                 spec = self.__folder.payloadSpecification()
 
  699                 data = cool.Record( spec )
 
  700                 self.__chanDictRecord[chanNum] = data
 
  701                 blob = data[
'TileCalibBlob']
 
  704                 if   self.__calibDrawerType==
'Flt':
 
  706                 elif self.__calibDrawerType==
'Int':
 
  708                 elif self.__calibDrawerType==
'Bch':
 
  711                     raise Exception( 
"Invalid blob type requested: %s" % type )
 
  714             if calibDrawerTemplate:
 
  715                 calibDrawer.clone(calibDrawerTemplate)
 
  718             self.__chanDictDrawer[chanNum] = calibDrawer
 
  721         except Exception 
as e:
 
  722             self.log().critical( e )
 
 
 
◆ register()
      
        
          | def python.TileCalibTools.TileBlobWriter.register | ( |  | self, | 
        
          |  |  |  | since = (MINRUN,MINLBK), | 
        
          |  |  |  | until = (MAXRUN,MAXLBK), | 
        
          |  |  |  | tag = "", | 
        
          |  |  |  | option = 0 | 
        
          |  | ) |  |  | 
      
 
Registers the folder in the database.
- since: lower limit of IOV
- until: upper limit of IOV
- tag  : The cool folder tag to write to
The interpretation of the 'since' and 'until' inputs depends on their type:
- tuple(int,int) : run and lbk number
- integer        : Values are interpreted as unix time stamps
           If since<0, current time is assumed
           If until<0, infinity is assumed
- string         : time stamp of format 'yyyy-mm-dd hh:mm:ss'
 
Definition at line 556 of file TileCalibTools.py.
  556     def register(self, since=(MINRUN,MINLBK), until=(MAXRUN,MAXLBK), tag=
"", option=0):
 
  558         Registers the folder in the database. 
  559         - since: lower limit of IOV 
  560         - until: upper limit of IOV 
  561         - tag  : The cool folder tag to write to 
  563         The interpretation of the 'since' and 'until' inputs depends on their type: 
  564         - tuple(int,int) : run and lbk number 
  565         - integer        : Values are interpreted as unix time stamps 
  566                            If since<0, current time is assumed 
  567                            If until<0, infinity is assumed 
  568         - string         : time stamp of format 'yyyy-mm-dd hh:mm:ss' 
  573             raise Exception(
"Inconsistent types: since=%s, until=%s" % (
type(since),
type(until)))
 
  577         if self.__folder.versioningMode()==cool.FolderVersioning.SINGLE_VERSION:
 
  581                 self.log().warning( 
"Trying to store with tag \"%s\" to SINGLE_VERSION folder", tag )
 
  582                 self.log().warning( 
"... resetting tag to \"\"!"                                     )
 
  588         if untilCool <= sinceCool:
 
  589             raise Exception(
"Until(%i) <= Since(%i)" % (untilCool,sinceCool))
 
  593         if isinstance(since, tuple):
 
  594             iovString = 
"[%i,%i] - [%i,%i]" % (since[0],since[1],until[0],until[1])
 
  596             sinceInfo = time.localtime( sinceCool//UNIX2COOL )
 
  597             untilInfo = time.localtime(
min(UNIXTMAX, (untilCool//UNIX2COOL)))
 
  598             untilStr = 
"<infinity>" 
  599             if untilCool<cool.ValidityKeyMax:
 
  600                 untilStr = time.asctime(untilInfo)
 
  601                 if (untilCool//UNIX2COOL)>UNIXTMAX:
 
  602                     untilStr = 
" > "+untilStr
 
  603             iovString = 
"[%s] - [%s]" % (time.asctime(sinceInfo), untilStr)
 
  609         comment=self.getComment()
 
  610         onlyComment = (option<0)
 
  611         noComment = (comment 
is None) 
or (comment == 
"None") 
or (comment.startswith(
"None") 
and comment.endswith(
"None")) 
or (option>0)
 
  612         self.log().
info( 
"Registering folder %s with tag \"%s\"", self.__folder.
fullPath(),folderTag)
 
  613         self.log().
info( 
"... with IOV          : %s" , iovString                          )
 
  616                 self.log().
info( 
"... WITHOUT comment field" )
 
  618             self.log().
info( 
"... with comment field: \"%s\"", self.getComment()                  )
 
  624             chanList = 
sorted(self.__chanDictRecord.
keys())
 
  626         for chanNum 
in chanList:
 
  627             if chanNum==1000 
and noComment:
 
  629             data = self.__chanDictRecord[chanNum]
 
  630             strout = 
"cool channel=%4i" % chanNum
 
  631             self.log().
debug(
"Registering %s %s", strout, data)
 
  632             channelId = cool.ChannelId(chanNum)
 
  633             self.__folder.storeObject(sinceCool, untilCool, data, channelId, folderTag, userTagOnly)
 
  636             self.log().
info( 
"... %d cool channels have been written in total", cnt )
 
  638             self.log().
info( 
"... 1 cool channel with comment field has been written" )
 
  640             self.log().
info( 
"... %d cool channels have been written in total (including comment field)", cnt )
 
 
 
◆ setComment()
      
        
          | def python.TileCalibTools.TileBlobWriter.setComment | ( |  | self, | 
        
          |  |  |  | author, | 
        
          |  |  |  | comment = None | 
        
          |  | ) |  |  | 
      
 
Sets a general comment in the comment channel.
 
Definition at line 643 of file TileCalibTools.py.
  643     def setComment(self, author, comment=None):
 
  645         Sets a general comment in the comment channel. 
  649             data = self.__chanDictRecord.
get(chanNum)
 
  651                 spec = self.__folder.payloadSpecification()
 
  652                 data = cool.Record( spec )
 
  653                 self.__chanDictRecord[chanNum] = data
 
  654             blob = data[
'TileCalibBlob']
 
  655             if isinstance(author,tuple) 
and len(author)==3:
 
  656                 tm=time.mktime(datetime.datetime.strptime(author[2], 
"%a %b %d %H:%M:%S %Y").timetuple())
 
  660         except Exception 
as e:
 
  661             self.log().critical( e )
 
 
 
◆ zeroBlob()
      
        
          | def python.TileCalibTools.TileBlobWriter.zeroBlob | ( |  | self, | 
        
          |  |  |  | ros, | 
        
          |  |  |  | drawer | 
        
          |  | ) |  |  | 
      
 
Resets blob size to zero
 
Definition at line 726 of file TileCalibTools.py.
  726     def zeroBlob(self, ros, drawer):
 
  728         Resets blob size to zero 
  732             data = self.__chanDictRecord.
get(chanNum)
 
  734                 spec = self.__folder.payloadSpecification()
 
  735                 data = cool.Record( spec )
 
  736                 self.__chanDictRecord[chanNum] = data
 
  737             blob = data[
'TileCalibBlob']
 
  739         except Exception 
as e:
 
  740             self.log().critical( e )
 
 
 
◆ __calibDrawerType
  
  | 
        
          | python.TileCalibTools.TileBlobWriter.__calibDrawerType |  | private | 
 
 
◆ __chanDictDrawer
  
  | 
        
          | python.TileCalibTools.TileBlobWriter.__chanDictDrawer |  | private | 
 
 
◆ __chanDictRecord
  
  | 
        
          | python.TileCalibTools.TileBlobWriter.__chanDictRecord |  | private | 
 
 
◆ __db
  
  | 
        
          | python.TileCalibTools.TileBlobWriter.__db |  | private | 
 
 
◆ __defVec
  
  | 
        
          | python.TileCalibTools.TileBlobWriter.__defVec |  | private | 
 
 
◆ __folder
  
  | 
        
          | python.TileCalibTools.TileBlobWriter.__folder |  | private | 
 
 
The documentation for this class was generated from the following file: