8 print (
"Syntax for UPD4 open-end IoV noise update")
9 print (
" The first parameter is the run number of IoV start, the second parameter is the lumiblock number for IoV start")
10 print (
" The third and fourth parameter are the Run/lb for IoV end (if run is -1, uses open ended IoV)")
16 runSince = sys.argv[1]
17 lbkSince = sys.argv[2]
18 runUntil = sys.argv[3]
19 lbkUntil = sys.argv[4]
22 print (
"runUntil ", runUntil, lbkUntil)
23 print (
"tag ", runTag)
26 from PyCool
import cool
27 from CaloCondBlobAlgs
import CaloCondTools, CaloCondLogger
34 inputFile =
"calopedestal.txt"
36 iovSince = CaloCondTools.iovFromRunLumi(runSince,lbkSince)
37 iovUntil = cool.ValidityKeyMax
38 print (
" iovUntil max ",iovUntil)
40 print (
" use run number to define iobUntil ", runUntil)
41 iovUntil = CaloCondTools.iovFromRunLumi(runUntil,lbkUntil)
43 print (
" iovSince ", iovSince)
44 print (
" iovUntil ", iovUntil)
49 tag =
"CALOOflPedestalCellPedestal-UPD4-00"
50 elif runTag ==
"UPD1":
51 tag =
"CALOOflPedestalCellPedestal-UPD1-00"
53 print(
"expected 'UPD4' or 'BOTH'")
56 comment =
"Updated pedestal shift values"
66 getattr(cppyy.gbl,
'std::vector<float>')
70 log = CaloCondLogger.getLogger(
"CaloNoiseWriter")
73 db = CaloCondTools.openDb(
'SQLITE',
'CONDBR2',
'UPDATE')
77 spec = cool.RecordSpecification()
78 spec.extend(
'CaloCondBlob16M', cool.StorageType.Blob16M )
79 fspec = cool.FolderSpecification(cool.FolderVersioning.MULTI_VERSION, spec)
82 folderPath = CaloCondTools.getCaloPrefix()+
"Ofl/Pedestal/CellPedestal"
84 log.info(
"Filling COOL folder %s with tag %s", folderPath, folderTag )
85 desc = CaloCondTools.getAthenaFolderDescr()
87 folder = db.getFolder(folderPath)
89 log.warning(
"Folder %s not found, creating it...", folderPath)
90 folder = db.createFolder(folderPath, fspec, desc,
True)
96 gainDefVec = g.std.vector(
'float')()
97 gainDefVec.push_back(0.)
98 gainDefVec.push_back(0.)
100 defVecLAr = g.std.vector(
'std::vector<float>')()
101 defVecLAr.push_back(gainDefVec)
102 defVecLAr.push_back(gainDefVec)
103 defVecLAr.push_back(gainDefVec)
105 defVecTile = g.std.vector(
'std::vector<float>')()
106 defVecTile.push_back(gainDefVec)
107 defVecTile.push_back(gainDefVec)
108 defVecTile.push_back(gainDefVec)
109 defVecTile.push_back(gainDefVec)
112 systemDict = { 0 : (31872, 0, defVecLAr ,
'EMEC, z<0'),
113 1 : (54784, 31872, defVecLAr ,
'EMB , z<0'),
114 2 : (54784, 86656, defVecLAr ,
'EMB , z>0'),
115 3 : (31872, 141440, defVecLAr ,
'EMEC, z>0'),
116 16 : ( 5632, 0, defVecLAr ,
'HEC' ),
117 32 : ( 3524, 0, defVecLAr ,
'FCAL' ),
118 48 : ( 5184, 0, defVecTile,
'TILE' )
121 for systemId, info
in systemDict.items():
126 log.info(
"Creating BLOB for %s", sysName)
127 data = cool.Record( spec )
128 blob = data[
'CaloCondBlob16M']
129 flt = g.CaloCondBlobFlt.getInstance(blob)
130 flt.init(defVec,nChannel,2,author,comment)
131 fltDict[systemId] = [data,flt]
133 log.info(
"---> BLOB size is %4.1f kB", mbSize)
136 lines =
open(inputFile,
"r").readlines()
138 fields = line.split()
141 hash =
int(fields[1]) - systemDict[systemId][1]
142 gain = g.CaloCondUtils.getDbCaloGain(
int(fields[2]))
145 flt = fltDict[systemId][1]
147 flt.setData(hash,gain,0,noiseA)
148 flt.setData(hash,gain,1,noiseB)
151 for systemId, dataList
in fltDict.items():
153 sysName = systemDict[systemId][3]
154 log.info(
"Committing BLOB for %s", sysName)
155 channelId = cool.ChannelId(systemId)
156 log.info(
"Cool channel ID %s", channelId)
158 folder.storeObject(iovSince, iovUntil, data, channelId, folderTag)
160 except Exception
as e:
161 log.fatal(
"Exception caught:")