File indexing completed on 2023-03-17 10:44:31
0001
0002
0003 """ Helper functions for time conversions """
0004 from __future__ import print_function
0005
0006 def pack(high,low):
0007 """pack high,low 32bit unsigned int to one unsigned 64bit long long
0008 Note:the print value of result number may appear signed, if the sign bit is used.
0009 """
0010 h=high<<32
0011 return (h|low)
0012
0013 def secondsFromString(i):
0014 """convert from a string in the format output from timeStamptoDate to a 32bit seconds from the epoch.
0015 The format accepted is \"DD/MM/YYYY HH:MM:SS\". The year must be the full number.
0016 """
0017 import time
0018 return int(time.mktime(time.strptime(i, "%d/%m/%Y %H:%M:%S")))
0019
0020 def packFromString(i):
0021 """pack from a string in the format output from timeStamptoUTC to a 64bit timestamp
0022 the format accepted is \"DD/MM/YYYY HH:MM:SS\" . The year must be the full number.
0023 """
0024 return pack(secondsFromString(i), 0)
0025
0026 def intervalSinceEpoch(i):
0027 """ compute the interval of time is seconds since the Epoch and return the packed 64bit value.
0028 """
0029 return( packFromString(i) - packFromString("01/01/1970 00:00:00") )
0030
0031 def unpack(i):
0032 """unpack 64bit unsigned long long into 2 32bit unsigned int, return tuple (high,low)
0033 """
0034 high=i>>32
0035 low=i&0xFFFFFFFF
0036 return(high,low)
0037
0038 def timeStamptoDate(i):
0039 """convert 64bit timestamp to local date in string format
0040 """
0041 import time
0042 return time.ctime(unpack(i)[0])
0043
0044 """ This script does the following:
0045 1- reads the list of iovs (by timestamp) in a sqlite file
0046 2- creates a cfg for each iov and runs them
0047 3- takes the output of each job and builds a single output with the content of each iov
0048 It is recommended to redirect the output to a file.
0049 """
0050
0051 import os
0052 import re
0053 import sys
0054
0055
0056 if len(sys.argv) < 3:
0057 print("Please provide the name of the sqlite file and the tag as in: ", end=' ')
0058 print("./CheckAllIOVs.py Example1a.db SiStripDetVOff_Fake_31X")
0059 sys.exit(1)
0060
0061 print("Reading all IOVs")
0062
0063
0064
0065
0066 database = sys.argv[1]
0067 iovs = os.popen("cmscond_list_iov -c sqlite_file:"+database+" -t "+sys.argv[2])
0068 iovsList = iovs.read()
0069 splittedList = re.split("payloadToken",iovsList)
0070 splittedList = re.split("Total",splittedList[1])
0071 splittedList = re.split("\[DB|\]\[.*\]\[.*\]\[.*\]\[.*\]", splittedList[0])
0072
0073 for i in range(0, len(splittedList), 2):
0074
0075 iov = re.split(" ", splittedList[i])
0076 if len(iov) > 1:
0077 start = iov[0].strip("\n")
0078 end = iov[2].strip("\n")
0079
0080
0081
0082 startDate = timeStamptoDate(int(start))
0083 endDate = timeStamptoDate(int(end))
0084 if end == "18446744073709551615":
0085 end = str(int(start) + 1)
0086 print("start date = ", startDate, end=' ')
0087 print(", end date = ", endDate)
0088 fullDates="_FROM_"+startDate.replace(" ", "_").replace(":", "_")+"_TO_"+endDate.replace(" ", "_").replace(":", "_")
0089 fileName="DetVOffPrint"+fullDates+"_cfg.py"
0090 os.system("cat templateCheckAllIOVs_cfg.py | sed -e \"s/STARTTIME/"+start+"/g\" | sed -e \"s/ENDTIME/"+end+"/g\" | sed -e \"s/DATE/"+fullDates+"/g\" | sed -e \"s/DATABASE/sqlite_file:"+database+"/g\" > "+fileName)
0091
0092 os.system("cmsRun "+fileName+" > /dev/null")
0093
0094 for line in open("DetVOffReaderDebug_"+fullDates+".log", "r"):
0095 if "IOV" in line or "OFF" in line or "ON" in line:
0096 print(line.strip("\n"))
0097
0098
0099
0100
0101
0102
0103
0104