7 from PyCool
import cool
8 from CaloCondBlobAlgs
import CaloCondTools, CaloCondLogger
16 inputFile =
"/afs/cern.ch/user/g/gunal/scratch0/AtlasOffline-12.0.6/calonoise.txt"
20 iovSince = CaloCondTools.iovFromRunLumi(runSince,lbkSince)
21 iovUntil = cool.ValidityKeyMax
26 comment =
"Default cell noise values from Guillaume"
36 cppyy.makeClass(
'std::vector<float>')
39 log = CaloCondLogger.getLogger(
"CaloNoiseWriter")
42 db = CaloCondTools.openDb(
'SQLITE',
'COMP200',
'UPDATE')
46 spec = cool.RecordSpecification()
47 spec.extend(
'CaloCondBlob16M', cool.StorageType.Blob16M )
50 folderPath = CaloCondTools.getCaloPrefix()+
"Noise/CellNoise"
51 folderTag = g.CaloCondUtils.getFullTag(folderPath,tag)
52 log.info(
"Filling COOL folder %s with tag %s", folderPath, folderTag )
53 desc = CaloCondTools.getAthenaFolderDescr()
55 folder = db.getFolder(folderPath)
57 log.warning(
"Folder %s not found, creating it...", folderPath)
58 folder = db.createFolder(folderPath, spec, desc, cool.FolderVersioning.MULTI_VERSION,
True)
64 gainDefVec = g.std.vector(
'float')()
65 gainDefVec.push_back(0.)
66 gainDefVec.push_back(0.)
68 defVecLAr = g.std.vector(
'std::vector<float>')()
69 defVecLAr.push_back(gainDefVec)
70 defVecLAr.push_back(gainDefVec)
71 defVecLAr.push_back(gainDefVec)
73 defVecTile = g.std.vector(
'std::vector<float>')()
74 defVecTile.push_back(gainDefVec)
75 defVecTile.push_back(gainDefVec)
76 defVecTile.push_back(gainDefVec)
77 defVecTile.push_back(gainDefVec)
80 systemDict = { 0 : (31872, 0, defVecLAr ,
'EMEC, z<0'),
81 1 : (54784, 31872, defVecLAr ,
'EMB , z<0'),
82 2 : (54784, 86656, defVecLAr ,
'EMB , z>0'),
83 3 : (31872, 141440, defVecLAr ,
'EMEC, z>0'),
84 16 : ( 5632, 0, defVecLAr ,
'HEC' ),
85 32 : ( 3524, 0, defVecLAr ,
'FCAL' ),
86 48 : ( 5184, 0, defVecTile,
'TILE' )
89 for systemId, info
in systemDict.items():
93 log.info(
"Creating BLOB for %s", sysName)
94 data = cool.Record( spec )
95 blob = data[
'CaloCondBlob16M']
96 flt = g.CaloCondBlobFlt.getInstance(blob)
97 flt.init(defVec,nChannel,1,author,comment)
98 fltDict[systemId] = [data,flt]
99 mbSize =
float(blob.size()) / 1024.
100 log.info(
"---> BLOB size is %4.1f kB", mbSize)
103 lines =
open(inputFile,
"r").readlines()
105 fields = line.split()
108 hash =
int(fields[1]) - systemDict[systemId][1]
109 gain = g.CaloCondUtils.getDbCaloGain(
int(fields[2]))
112 flt = fltDict[systemId][1]
114 flt.setData(hash,gain,0,noiseA)
115 flt.setData(hash,gain,1,noiseB)
118 for systemId, dataList
in fltDict.items():
119 sysName = systemDict[systemId][3]
120 log.info(
"Committing BLOB for %s", sysName)
121 channelId = cool.ChannelId(systemId)
123 folder.storeObject(iovSince, iovUntil, data, channelId, folderTag)
127 log.fatal(
"Exception caught:")
128 log.fatal (traceback.format_exc())