|
| 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 534 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 541 of file TileCalibTools.py.
541 def __init__(self, db, folderPath, calibDrawerType,
542 isMultiVersionFolder=True, isRunLumiTimeStamp=True):
545 - db : db should be an open database connection
546 - folderPath: full folder path to create or update
550 TileCalibLogger.__init__(self,
"TileBlobWriter")
556 folderMode = cool.FolderVersioning.MULTI_VERSION
557 if not isMultiVersionFolder:
558 folderMode = cool.FolderVersioning.SINGLE_VERSION
562 if not isRunLumiTimeStamp:
568 if self.__db.existsFolder(folderPath):
569 self.__folder = self.__db.getFolder(folderPath)
571 modeInCool = self.__folder.versioningMode()
572 if modeInCool!=folderMode:
573 str =
"Incompatible folder mode detected, COOL folder has type "
574 if modeInCool==cool.FolderVersioning.MULTI_VERSION:
581 payloadSpec = cool.RecordSpecification()
582 payloadSpec.extend(
'TileCalibBlob', cool.StorageType.Blob64k )
583 folderSpec = cool.FolderSpecification(folderMode, payloadSpec)
584 self.__folder = db.createFolder(folderPath, folderSpec, folderDescr,
True)
585 except Exception
as e:
586 self.log().critical( e )
590 self.__chanDictRecord = {}
591 self.__chanDictDrawer = {}
594 self.__calibDrawerType = calibDrawerType
595 if calibDrawerType==
'Flt':
596 self.__defVec = cppyy.gbl.std.vector(
'std::vector<float>')()
597 elif calibDrawerType==
'Bch' or calibDrawerType==
'Int':
598 self.__defVec = cppyy.gbl.std.vector(
'std::vector<unsigned int>')()
600 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 712 of file TileCalibTools.py.
712 def getComment(self, split=False):
714 Returns the general comment (default if none is set)
718 data = self.__chanDictRecord.
get(chanNum)
720 return "<No general comment!>"
721 blob = data[
'TileCalibBlob']
724 return (cmt.getAuthor(),cmt.getComment(),cmt.getDate())
726 return cmt.getFullComment()
727 except Exception
as e:
728 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 731 of file TileCalibTools.py.
731 def getDrawer(self, ros, drawer, calibDrawerTemplate=None):
733 Returns a TileCalibDrawer object of requested type
734 for the given ROS and drawer.
740 calibDrawer = self.__chanDictDrawer.
get(chanNum,
None)
746 spec = self.__folder.payloadSpecification()
747 data = cool.Record( spec )
748 self.__chanDictRecord[chanNum] = data
749 blob = data[
'TileCalibBlob']
752 if self.__calibDrawerType==
'Flt':
754 elif self.__calibDrawerType==
'Int':
756 elif self.__calibDrawerType==
'Bch':
759 raise Exception(
"Invalid blob type requested: %s" % type )
762 if calibDrawerTemplate:
763 calibDrawer.clone(calibDrawerTemplate)
766 self.__chanDictDrawer[chanNum] = calibDrawer
769 except Exception
as e:
770 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 604 of file TileCalibTools.py.
604 def register(self, since=(MINRUN,MINLBK), until=(MAXRUN,MAXLBK), tag=
"", option=0):
606 Registers the folder in the database.
607 - since: lower limit of IOV
608 - until: upper limit of IOV
609 - tag : The cool folder tag to write to
611 The interpretation of the 'since' and 'until' inputs depends on their type:
612 - tuple(int,int) : run and lbk number
613 - integer : Values are interpreted as unix time stamps
614 If since<0, current time is assumed
615 If until<0, infinity is assumed
616 - string : time stamp of format 'yyyy-mm-dd hh:mm:ss'
621 raise Exception(
"Inconsistent types: since=%s, until=%s" % (
type(since),
type(until)))
625 if self.__folder.versioningMode()==cool.FolderVersioning.SINGLE_VERSION:
629 self.log().warning(
"Trying to store with tag \"%s\" to SINGLE_VERSION folder", tag )
630 self.log().warning(
"... resetting tag to \"\"!" )
636 if untilCool <= sinceCool:
637 raise Exception(
"Until(%i) <= Since(%i)" % (untilCool,sinceCool))
641 if isinstance(since, tuple):
642 iovString =
"[%i,%i] - [%i,%i]" % (since[0],since[1],until[0],until[1])
644 sinceInfo = time.localtime( sinceCool//UNIX2COOL )
645 untilInfo = time.localtime(
min(UNIXTMAX, (untilCool//UNIX2COOL)))
646 untilStr =
"<infinity>"
647 if untilCool<cool.ValidityKeyMax:
648 untilStr = time.asctime(untilInfo)
649 if (untilCool//UNIX2COOL)>UNIXTMAX:
650 untilStr =
" > "+untilStr
651 iovString =
"[%s] - [%s]" % (time.asctime(sinceInfo), untilStr)
657 comment=self.getComment()
658 onlyComment = (option<0)
659 noComment = (comment
is None)
or (comment ==
"None")
or (comment.startswith(
"None")
and comment.endswith(
"None"))
or (option>0)
660 self.log().
info(
"Registering folder %s with tag \"%s\"", self.__folder.
fullPath(),folderTag)
661 self.log().
info(
"... with IOV : %s" , iovString )
664 self.log().
info(
"... WITHOUT comment field" )
666 self.log().
info(
"... with comment field: \"%s\"", self.getComment() )
672 chanList =
sorted(self.__chanDictRecord.
keys())
674 for chanNum
in chanList:
675 if chanNum==1000
and noComment:
677 data = self.__chanDictRecord[chanNum]
678 strout =
"cool channel=%4i" % chanNum
679 self.log().
debug(
"Registering %s %s", strout, data)
680 channelId = cool.ChannelId(chanNum)
681 self.__folder.storeObject(sinceCool, untilCool, data, channelId, folderTag, userTagOnly)
684 self.log().
info(
"... %d cool channels have been written in total", cnt )
686 self.log().
info(
"... 1 cool channel with comment field has been written" )
688 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 691 of file TileCalibTools.py.
691 def setComment(self, author, comment=None):
693 Sets a general comment in the comment channel.
697 data = self.__chanDictRecord.
get(chanNum)
699 spec = self.__folder.payloadSpecification()
700 data = cool.Record( spec )
701 self.__chanDictRecord[chanNum] = data
702 blob = data[
'TileCalibBlob']
703 if isinstance(author,tuple)
and len(author)==3:
704 tm=time.mktime(datetime.datetime.strptime(author[2],
"%a %b %d %H:%M:%S %Y").timetuple())
708 except Exception
as e:
709 self.log().critical( e )
◆ zeroBlob()
| def python.TileCalibTools.TileBlobWriter.zeroBlob |
( |
|
self, |
|
|
|
ros, |
|
|
|
drawer |
|
) |
| |
Resets blob size to zero
Definition at line 774 of file TileCalibTools.py.
774 def zeroBlob(self, ros, drawer):
776 Resets blob size to zero
780 data = self.__chanDictRecord.
get(chanNum)
782 spec = self.__folder.payloadSpecification()
783 data = cool.Record( spec )
784 self.__chanDictRecord[chanNum] = data
785 blob = data[
'TileCalibBlob']
787 except Exception
as e:
788 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: