9 __version__ =
"$Id: ParameterDbFiller.py,v 1.3 2008-11-13 12:25:23 schaffer Exp $"
10 __author__ =
"RD Schaffer <R.D.Schaffer@cern.ch>"
15 from PyCool
import cool
26 A simple class used to fill SQLite db file with parameters for simulation
63 if dbFileName
is None:
65 dbFileName =
"SimParams.db"
68 self.
genDb(dbFileName,
'SIMPARAM', self.
simParams,
'/Simulation/Parameters')
73 if dbFileName
is None:
75 dbFileName =
"DigitParams.db"
81 def genDb(self, dbFileName, dbName, params, folderPath, params64 = {}):
85 raise ParameterDbFillerError (
'Must set begin run number before generating db')
87 raise ParameterDbFillerError (
'Must set end run number before generating db')
89 raise ParameterDbFillerError (
'No parameters for db ' + dbName)
94 print (
"ParameterDbFiller.genDb: Removed db", dbFileName)
99 dbSvc=cool.DatabaseSvcFactory.databaseService()
102 dbstring=
"sqlite://;schema=" + dbFileName +
";dbname=" + dbName
104 db=dbSvc.createDatabase(dbstring)
105 except Exception
as e:
106 print (
'ParameterDbFiller.genDb: Problem creating database',e)
108 print (
"ParameterDbFiller.genDb: Created database",dbstring)
111 spec=cool.RecordSpecification()
113 spec.extend(key, cool.StorageType.String4k)
117 spec.extend(key, cool.StorageType.String64k)
120 desc =
'<timeStamp>run-event</timeStamp><addrHeader><address_header service_type="71" clid="40774348" /></addrHeader><typeName>AthenaAttributeList</typeName>'
126 folderSpec = cool.FolderSpecification(cool.FolderVersioning.SINGLE_VERSION, spec)
127 myfolder = db.createFolder(folderPath, folderSpec, desc,
True)
130 data = cool.Record(spec)
131 for k, v
in params.items():
133 for k, v
in params64.items():
136 print (
"ParameterDbFiller.genDb: Recording parameters", data)
140 print (
"ParameterDbFiller.genDb: Stored object")
150 print (
"ParameterDbFiller.dumpDb: Dumping database:", dbstring)
152 dbSvc = cool.DatabaseSvcFactory.databaseService()
155 db = dbSvc.openDatabase(dbstring,
False)
156 except Exception
as e:
157 print (
'ParameterDbFiller.dumpDb: Problem opening database',e)
161 folders = db.listAllNodes()
164 if (
not db.existsFolder(ff)):
168 print (
"ParameterDbFiller.dumpDb: Dumping folder " +
str(ff))
180 nobjs = f.countObjects( cool.ValidityKeyMin,
182 cool.ChannelSelection.all())
184 print (
"ParameterDbFiller.dumpDb: number of IOV payloads", nobjs)
186 objs = f.browseObjects( cool.ValidityKeyMin,
188 cool.ChannelSelection.all())
190 while objs.goToNext():
191 obj = objs.currentRef()
192 print (
"ParameterDbFiller.dumpDb: Payload", i, end=
'')
193 print (
"since [r,l]: [", obj.since() >> 32,
',',obj.since()%0x100000000,
']', end=
'')
194 print (
"until [r,l]: [", obj.until() >> 32,
',',obj.until()%0x100000000,
']', end=
'')
195 print (
"payload", obj.payload(), end=
'')
196 print (
"chan",obj.channelId() )