2 Update the bookkeeping tables for G1 O2O. 7 from CondTools.SiStrip.o2o_db_manager
import make_dbtype, DbManager
12 from importlib
import import_module
14 from sqlalchemy.ext.declarative
import declared_attr
17 __tablename__ =
'STRIP_GAIN_O2O_PARTITION' 18 o2oid = sqlalchemy.Column(sqlalchemy.BigInteger, primary_key=
True)
19 iovstart = sqlalchemy.Column(sqlalchemy.BigInteger, nullable=
False)
20 o2otimestamp = sqlalchemy.Column(sqlalchemy.TIMESTAMP, nullable=
False)
21 subDetector = sqlalchemy.Column(sqlalchemy.String(256), primary_key=
True)
22 partitionname = sqlalchemy.Column(sqlalchemy.String(256), nullable=
False)
23 fecVersionMajorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
24 fecVersionMinorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
25 fedVersionMajorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
26 fedVersionMinorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
27 connectionVersionMajorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
28 connectionVersionMinorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
29 dcuInfoVersionMajorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
30 dcuInfoVersionMinorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
31 dcuPsuMapVersionMajorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
32 dcuPsuMapVersionMinorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
33 maskVersionMajorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
34 maskVersionMinorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
35 apvTimingVersionMajorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
36 apvTimingVersionMinorId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
False)
37 timingRunNumber = sqlalchemy.Column(sqlalchemy.BigInteger, nullable=
False)
40 __tablename__ =
'STRIP_GAIN_O2O_SKIPPED' 42 o2oid = sqlalchemy.Column(sqlalchemy.BigInteger, primary_key=
True)
43 itemid = sqlalchemy.Column(sqlalchemy.BigInteger, primary_key=
True)
45 fecCrate = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
46 fecSlot = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
47 fecRing = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
48 ccuAddr = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
49 ccuChan = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
50 lldChan = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
51 i2cAddr = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
53 fedId = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
54 feUnit = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
55 feChan = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
56 fedApv = sqlalchemy.Column(sqlalchemy.Integer, nullable=
True)
58 detid = sqlalchemy.Column(sqlalchemy.BigInteger, nullable=
True)
62 DbManager.__init__(self, db, authFile)
68 partitionDict = {
'PartTECM':
'TEC-',
'PartTECP':
'TEC+',
'PartTIBD':
'TIB/TID',
'PartTOB':
'TOB'}
69 o2otimestamp = datetime.datetime.utcnow()
70 for part
in partitionDict:
71 psetPart = p.SiStripConfigDb.Partitions.getParameter(part)
72 if not psetPart:
continue 76 o2otimestamp = o2otimestamp,
77 subDetector = partitionDict[part],
78 partitionname = psetPart.getParameter(
'PartitionName').
value(),
79 fecVersionMajorId = psetPart.getParameter(
'FecVersion')[0],
80 fecVersionMinorId = psetPart.getParameter(
'FecVersion')[1],
81 fedVersionMajorId = psetPart.getParameter(
'FedVersion')[0],
82 fedVersionMinorId = psetPart.getParameter(
'FedVersion')[1],
83 connectionVersionMajorId = psetPart.getParameter(
'CablingVersion')[0],
84 connectionVersionMinorId = psetPart.getParameter(
'CablingVersion')[1],
85 dcuInfoVersionMajorId = psetPart.getParameter(
'DcuDetIdsVersion')[0],
86 dcuInfoVersionMinorId = psetPart.getParameter(
'DcuDetIdsVersion')[1],
87 dcuPsuMapVersionMajorId = psetPart.getParameter(
'DcuPsuMapVersion')[0],
88 dcuPsuMapVersionMinorId = psetPart.getParameter(
'DcuPsuMapVersion')[1],
89 maskVersionMajorId = psetPart.getParameter(
'MaskVersion')[0],
90 maskVersionMinorId = psetPart.getParameter(
'MaskVersion')[1],
91 apvTimingVersionMajorId = psetPart.getParameter(
'ApvTimingVersion')[0],
92 apvTimingVersionMinorId = psetPart.getParameter(
'ApvTimingVersion')[1],
93 timingRunNumber = psetPart.getParameter(
'RunNumber').
value()
95 self.o2o_partitions.append(entry)
99 value =
lambda p:
None if p
is None else p.value()
100 for itemid, pset
in enumerate(p.SiStripCondObjBuilderFromDb.SkippedDevices):
104 fecCrate =
value(pset.getParameter(
'fecCrate')),
105 fecSlot =
value(pset.getParameter(
'fecSlot')),
106 fecRing =
value(pset.getParameter(
'fecRing')),
107 ccuAddr =
value(pset.getParameter(
'ccuAddr')),
108 ccuChan =
value(pset.getParameter(
'ccuChan')),
109 lldChan =
value(pset.getParameter(
'lldChan')),
110 i2cAddr =
value(pset.getParameter(
'i2cAddr')),
111 fedId =
value(pset.getParameter(
'fedId')),
112 feUnit =
value(pset.getParameter(
'feUnit')),
113 feChan =
value(pset.getParameter(
'feChan')),
114 fedApv =
value(pset.getParameter(
'fedApv')),
115 detid =
value(pset.getParameter(
'detid'))
117 self.o2o_skipped.append(entry)
120 """Insert bookkeeping info to the tables. 122 iov (int or str): IOV number 123 cfgname (str): name of the CMSSW cfg file. 124 The cfg file need to be placed in the current directory. 128 sys.path.append(os.getcwd())
129 if cfgname.endswith(
'.py'):
130 cfgname = cfgname.replace(
'.py',
'')
131 cfg = import_module(cfgname)
135 destSession = self.connect()
136 o2oid = destSession.query(self.GainO2OPartition.o2oid).order_by(self.GainO2OPartition.o2oid.desc()).
first()
144 destSession.add(entry)
148 destSession.add(entry)
151 logging.info(
'Inserted Gain O2O info to DB!')
154 if __name__ ==
'__main__':
157 dbmgr.update_gain_logs(1,
'test')
def __init__(self, db, authFile=None)
def _readPartitions(self, p)
def update_gain_logs(self, iov, cfgname)
def make_dbtype(backendName, schemaName, baseType)
def _readSkippedDevices(self, p)