ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCabling
python
LArHVMapDbFiller.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3
# @author: G.Unal
4
# @date: July 2008
5
#
6
#
7
8
9
__version__ =
"$Id: LArHVMapDbFiller.py"
10
__author__ =
"G.Unal"
11
12
import
sys, os
13
from
PyCool
import
cool
14
15
class
LArHVMapDbFillerError
(Exception):
16
def
__init__
(self, value):
17
self.
value
= value
18
super().
__init__
(value)
19
def
__str__
(self):
20
return
repr(self.
value
)
21
22
23
class
LArHVMapDbFiller
(object):
24
"""
25
A simple class used to fill SQLite db file with parameters for simulation
26
and/or digitization.
27
"""
28
29
def
__init__
(self):
30
object.__init__(self)
31
32
self.
beginTime
=
None
33
self.
endTime
=
None
34
self.
FileName
=
None
35
self.
FolderTag
=
None
36
self.
Params
= {}
37
return
38
39
#
40
def
setBegin
(self,run,lumi):
41
print
(
" setBegin run,lumi "
,run)
42
self.
beginTime
= (int(run) << 32) + int(lumi)
43
print
(
" time "
,self.
beginTime
)
44
return
45
46
def
setEnd
(self,run,lumi):
47
print
(
"setEnd runmlumi "
,run)
48
self.
endTime
= (int(run) << 32) + int(lumi)
49
print
(
" time "
,self.
endTime
)
50
return
51
52
def
setFileName
(self, fileName):
53
self.
FileName
= fileName
54
return
55
56
def
setFolderTag
(self,folderTag):
57
self.
FolderTag
= folderTag
58
return
59
60
def
readFile
(self):
61
value =
''
62
f = open(self.
FileName
,
'r'
)
63
for
lines
in
f:
64
value += lines
65
self.
Params
[
'LArHVMap'
] = value
66
return
67
68
def
genDb
(self):
69
70
dbFileName =
'HVmap.db'
71
dbName =
'COMP200'
72
folderPath =
'/LAR/IdentifierOfl/HVLineToElectrodeMap'
73
# Do checks
74
if
self.
beginTime
is
None
:
75
raise
LArHVMapDbFillerError (
'Must set begin run number before generating db'
)
76
if
self.
endTime
is
None
:
77
self.
endTime
= cool.ValidityKeyMax
78
if
self.
FileName
is
None
:
79
raise
LArHVMapDbFillerError (
'Must give an input file for LArHVToElectrode.data'
)
80
if
self.
FolderTag
is
None
:
81
raise
LArHVMapDbFillerError (
'Must give a folder tag'
)
82
83
self.
readFile
()
84
85
if
len(self.
Params
) == 0:
86
raise
LArHVMapDbFillerError (
'No parameters for db '
+ dbName)
87
88
# remove existing db, if any
89
try
:
90
os.remove(dbFileName)
91
print
(
"LArHVMapDbFiller.genDb: Removed db"
, dbFileName)
92
except
OSError:
93
pass
94
95
# get database service and open database
96
dbSvc=cool.DatabaseSvcFactory.databaseService()
97
98
# build dbstring - database accessed via physical name
99
dbstring=
"sqlite://;schema="
+ dbFileName +
";dbname="
+ dbName
100
try
:
101
db=dbSvc.createDatabase(dbstring)
102
except
Exception
as
e:
103
print
(
'LArHVMapDbFiller.genDb: Problem creating database'
,e)
104
sys.exit(-1)
105
print
(
"LArHVMapDbFiller.genDb: Created database"
,dbstring)
106
107
# setup a folder payload specification
108
spec=cool.RecordSpecification()
109
for
key
in
self.
Params
:
110
spec.extend(key, cool.StorageType.String16M)
111
112
# folder meta-data - note for Athena this has a special meaning
113
desc=
'<timeStamp>run-lumi</timeStamp><addrHeader><address_header service_type="71" clid="40774348" /></addrHeader><typeName>AthenaAttributeList</typeName>'
114
# create the folder - single version
115
# last argument is createParents - if true, automatically creates parent
116
# folders if needed
117
# note this will not work if the database already exists - delete mycool.db first
118
myfolder=db.createFolder(folderPath, spec, desc, cool.FolderVersioning.MULTI_VERSION,
True
)
119
# now fill in simlation parameters
120
data=cool.Record(spec)
121
for
k, v
in
self.
Params
.items():
122
data[k] = v
123
124
print
(
"LArHVMapDbFiller.genDb: Recording parameters"
, data)
125
126
# store object with IOV valid from 0-10, channel 3
127
myfolder.storeObject(self.
beginTime
, self.
endTime
, data, 0, self.
FolderTag
)
128
print
(
"LArHVMapDbFiller.genDb: Stored object"
)
129
130
# finalize
131
db.closeDatabase()
132
133
# Try to dump out db as test
134
self.
dumpDb
(dbstring)
135
136
def
dumpDb
(self, dbstring):
137
138
print
(
"LArHVMapDbFiller.dumpDb: Dumping database:"
, dbstring)
139
# get database service and open database
140
dbSvc = cool.DatabaseSvcFactory.databaseService()
141
# database accessed via physical name
142
try
:
143
db = dbSvc.openDatabase(dbstring,
False
)
144
except
Exception
as
e:
145
print
(
'LArHVMapDbFiller.dumpDb: Problem opening database'
,e)
146
sys.exit(-1)
147
148
# Loop over folders
149
folders = db.listAllNodes()
150
for
ff
in
folders:
151
# Get Folder
152
try
:
153
f = db.getFolder(ff)
154
print
(
"LArHVMapDbFiller.dumpDb: Dumping folder "
+ str(ff))
155
except
Exception:
156
#print ("Skipping " + str(ff))
157
continue
158
159
# get tags
160
# tags = f.listTags()
161
# print ("for tags ",)
162
# for tag in tags: print (tag)
163
164
# for tag in tags:
165
166
nobjs = f.countObjects( cool.ValidityKeyMin,
167
cool.ValidityKeyMax,
168
cool.ChannelSelection.all())
169
170
print
(
"LArHVMapDbFiller.dumpDb: number of IOV payloads"
, nobjs)
171
172
objs = f.browseObjects( cool.ValidityKeyMin,
173
cool.ValidityKeyMax,
174
cool.ChannelSelection.all())
175
i = 0
176
while
objs.goToNext():
177
obj = objs.currentRef()
178
print
(
"LArHVMapDbFiller.dumpDb: Payload"
, i,)
179
print
(
"since [r,l]: ["
, obj.since() ,
']'
,)
180
print
(
"until [r,l]: ["
, obj.until() ,
']'
,)
181
print
(
"payload"
, obj.payload(),)
182
print
(
"chan"
,obj.channelId() )
183
i += 1
184
185
objs.close()
186
187
# finish
188
db.closeDatabase()
LArHVMapDbFiller.LArHVMapDbFillerError
Definition
LArHVMapDbFiller.py:15
LArHVMapDbFiller.LArHVMapDbFillerError.__str__
__str__(self)
Definition
LArHVMapDbFiller.py:19
LArHVMapDbFiller.LArHVMapDbFillerError.value
value
Definition
LArHVMapDbFiller.py:17
LArHVMapDbFiller.LArHVMapDbFillerError.__init__
__init__(self, value)
Definition
LArHVMapDbFiller.py:16
LArHVMapDbFiller.LArHVMapDbFiller
Definition
LArHVMapDbFiller.py:23
LArHVMapDbFiller.LArHVMapDbFiller.Params
dict Params
Definition
LArHVMapDbFiller.py:36
LArHVMapDbFiller.LArHVMapDbFiller.setFileName
setFileName(self, fileName)
Definition
LArHVMapDbFiller.py:52
LArHVMapDbFiller.LArHVMapDbFiller.__init__
__init__(self)
Definition
LArHVMapDbFiller.py:29
LArHVMapDbFiller.LArHVMapDbFiller.setFolderTag
setFolderTag(self, folderTag)
Definition
LArHVMapDbFiller.py:56
LArHVMapDbFiller.LArHVMapDbFiller.genDb
genDb(self)
Definition
LArHVMapDbFiller.py:68
LArHVMapDbFiller.LArHVMapDbFiller.setBegin
setBegin(self, run, lumi)
Definition
LArHVMapDbFiller.py:40
LArHVMapDbFiller.LArHVMapDbFiller.endTime
tuple endTime
Definition
LArHVMapDbFiller.py:33
LArHVMapDbFiller.LArHVMapDbFiller.FileName
FileName
Definition
LArHVMapDbFiller.py:34
LArHVMapDbFiller.LArHVMapDbFiller.dumpDb
dumpDb(self, dbstring)
Definition
LArHVMapDbFiller.py:136
LArHVMapDbFiller.LArHVMapDbFiller.readFile
readFile(self)
Definition
LArHVMapDbFiller.py:60
LArHVMapDbFiller.LArHVMapDbFiller.setEnd
setEnd(self, run, lumi)
Definition
LArHVMapDbFiller.py:46
LArHVMapDbFiller.LArHVMapDbFiller.beginTime
tuple beginTime
Definition
LArHVMapDbFiller.py:32
LArHVMapDbFiller.LArHVMapDbFiller.FolderTag
FolderTag
Definition
LArHVMapDbFiller.py:35
Generated on
for ATLAS Offline Software by
1.17.0