|
ATLAS Offline Software
|
|
def | getLastRunNumber () |
|
def | getPromptCalibRunNumber () |
|
def | getAliasFromFile (aliastype='Current') |
|
def | getTilePrefix (ofl=True, splitOnlInOflSchema=True) |
|
def | getTilePrefixes () |
|
def | getAthenaFolderDescr (type="run-lumi") |
|
def | getAthenaFolderType (folderDescr) |
|
def | openDb (db, instance, mode="READONLY", schema="COOLOFL_TILE", sqlfn="tileSqlite.db") |
|
def | openDbConn (connStr, mode="READONLY") |
|
def | coolTimeFromRunLumi (runNum, lbkNum) |
|
def | decodeTimeString (timeString) |
|
def | getCoolValidityKey (pointInTime, isSince=True) |
|
def | getFolderTag (db, folderPath, globalTag) |
|
def | runLumiFromCoolTime (iov) |
|
def | copyFolder (dbr, dbw, folder, tagr, tagw, chanNum, pointInTime1, pointInTime2) |
|
◆ coolTimeFromRunLumi()
def python.TileCalibTools.coolTimeFromRunLumi |
( |
|
runNum, |
|
|
|
lbkNum |
|
) |
| |
Returns COOL timeStamp build from run and lumi block numbers
Definition at line 319 of file TileCalibTools.py.
321 Returns COOL timeStamp build from run and lumi block numbers
323 return (
int(runNum)<<32) +
int(lbkNum)
◆ copyFolder()
def python.TileCalibTools.copyFolder |
( |
|
dbr, |
|
|
|
dbw, |
|
|
|
folder, |
|
|
|
tagr, |
|
|
|
tagw, |
|
|
|
chanNum, |
|
|
|
pointInTime1, |
|
|
|
pointInTime2 |
|
) |
| |
Definition at line 441 of file TileCalibTools.py.
441 def copyFolder(dbr, dbw, folder, tagr, tagw, chanNum, pointInTime1, pointInTime2):
443 log.info(
"Copy channel %i", chanNum)
445 folderR = dbr.getFolder(folder)
446 folderW = dbw.getFolder(folder)
448 chansel = cool.ChannelSelection(chanNum)
455 objs = folderR.browseObjects(iov1,iov2,chansel)
458 objs = folderR.browseObjects(iov1,iov2,chansel,tagr)
459 while objs.goToNext():
460 obj=objs.currentRef()
461 sinceCool=obj.since()
464 untilCool=obj.until()
468 log.debug(
"Copy entry: [%i,%i] - [%i,%i]: %s", sinceTup[0],sinceTup[1],untilTup[0],untilTup[1], data)
469 folderW.storeObject(sinceCool, untilCool, data, chanNum, tagw, multiVersion)
◆ decodeTimeString()
def python.TileCalibTools.decodeTimeString |
( |
|
timeString | ) |
|
Retruns UNIX time stamp given an input time string
Definition at line 327 of file TileCalibTools.py.
329 Retruns UNIX time stamp given an input time string
331 return int(time.mktime(time.strptime(timeString,
"%Y-%m-%d %H:%M:%S")))
◆ getAliasFromFile()
def python.TileCalibTools.getAliasFromFile |
( |
|
aliastype = 'Current' | ) |
|
Return name of top-level tag for 'Current' or 'CurrentES' or 'Next' or 'NextES' aliases
Definition at line 127 of file TileCalibTools.py.
129 Return name of top-level tag for 'Current' or 'CurrentES' or 'Next' or 'NextES' aliases
132 aliasfolder =
'/afs/cern.ch/atlas/conditions/poolcond/buffer/BestKnowledge'
134 falias =
open(
'%s/%s' % (aliasfolder, aliastype))
135 alias = falias.readline()
137 return alias.replace(
'\n',
'').
replace(
'*',
'')
140 aliasfolder = os.getcwd()+
'/BestKnowledge'
141 print(
"Looking for %s in %s" % (aliastype,aliasfolder))
143 falias =
open(
'%s/%s' % (aliasfolder, aliastype))
144 alias = falias.readline()
146 return alias.replace(
'\n',
'').
replace(
'*',
'')
148 return aliastype.upper()
◆ getAthenaFolderDescr()
def python.TileCalibTools.getAthenaFolderDescr |
( |
|
type = "run-lumi" | ) |
|
Returns the run-lumi type folder description needed to read back the folder content
as a CondAttrListCollection in Athena.
Definition at line 180 of file TileCalibTools.py.
182 Returns the run-lumi type folder description needed to read back the folder content
183 as a CondAttrListCollection in Athena.
185 desc =
'<timeStamp>'+type+
'</timeStamp>'
186 desc+=
'<addrHeader><address_header service_type="71" clid="1238547719" /></addrHeader>'
187 desc+=
'<typeName>CondAttrListCollection</typeName>'
◆ getAthenaFolderType()
def python.TileCalibTools.getAthenaFolderType |
( |
|
folderDescr | ) |
|
Definition at line 192 of file TileCalibTools.py.
193 type = re.compile(
".*<timeStamp>(.*)</timeStamp>.*").
search(folderDescr)
195 raise Exception(
"No folder type info found in \'%s\'" % folderDescr)
196 return type.groups()[0]
◆ getCoolValidityKey()
def python.TileCalibTools.getCoolValidityKey |
( |
|
pointInTime, |
|
|
|
isSince = True |
|
) |
| |
The interpretation of pointInTime depends on their type:
- tuple(int,int) : run and lbk number
- integer : Values are interpreted as unix time stamps
- string : time stamp of format 'yyyy-mm-dd hh:mm:ss'
Definition at line 335 of file TileCalibTools.py.
337 The interpretation of pointInTime depends on their type:
338 - tuple(int,int) : run and lbk number
339 - integer : Values are interpreted as unix time stamps
340 - string : time stamp of format 'yyyy-mm-dd hh:mm:ss'
346 if isinstance(pointInTime, str):
350 if isinstance(pointInTime, int):
352 validityKey = pointInTime * UNIX2COOL
355 validityKey =
int(time.time()) * UNIX2COOL
357 validityKey = cool.ValidityKeyMax
359 elif isinstance(pointInTime, tuple):
363 raise Exception(
"Unrecognized pointInTime type=%s" %
type(pointInTime))
364 return cool.ValidityKey(validityKey)
◆ getFolderTag()
def python.TileCalibTools.getFolderTag |
( |
|
db, |
|
|
|
folderPath, |
|
|
|
globalTag |
|
) |
| |
Definition at line 369 of file TileCalibTools.py.
372 if globalTag.startswith(
"/")
or globalTag.startswith(
"TileO"):
374 log.warning(
"Using tag as-is for folder %s", folderPath)
375 elif '/TILE/ONL01' in folderPath:
376 log.info(
"Using empty tag for single-version folder %s", folderPath)
377 elif globalTag.startswith(
" "):
378 log.warning(
"Using empty tag for folder %s", folderPath)
381 log.warning(
"Using tag with empty suffix for folder %s", folderPath)
383 schema=
'COOLOFL_TILE/CONDBR2'
384 if isinstance(db, six.string_types):
385 if 'OFLP200' in db
or 'MC' in db:
386 schema=
'COOLOFL_TILE/OFLP200'
387 if not globalTag.startswith(
"OFLCOND"):
388 if globalTag.startswith(
"RUN"):
389 globalTag=
'OFLCOND-'+globalTag
390 log.info(
"Using Simulation global tag \'%s\'", globalTag)
391 elif 'COMP200' in db
or 'RUN1' in db:
392 schema=
'COOLOFL_TILE/COMP200'
393 if globalTag!=
'UPD1' and globalTag!=
'UPD4' and (
'UPD1' in globalTag
or 'UPD4' in globalTag
or 'COND' not in globalTag):
394 log.info(
"Using suffix \'%s\' as it is", globalTag)
396 globalTag=
'COMCOND-BLKPA-RUN1-06'
397 log.info(
"Using RUN1 global tag \'%s\'", globalTag)
398 if schema ==
'COOLOFL_TILE/CONDBR2':
399 if globalTag==
'CURRENT' or globalTag==
'UPD4' or globalTag==
'':
401 log.info(
"Resolved CURRENT globalTag to \'%s\'", globalTag)
402 elif globalTag==
'CURRENTES' or globalTag==
'UPD1':
404 log.info(
"Resolved CURRENT ES globalTag to \'%s\'", globalTag)
405 elif globalTag==
'NEXT':
407 log.info(
"Resolved NEXT globalTag to \'%s\'", globalTag)
408 elif globalTag==
'NEXTES':
410 log.info(
"Resolved NEXT ES globalTag to \'%s\'", globalTag)
411 globalTag=globalTag.replace(
'*',
'')
412 if 'UPD1' in globalTag
or 'UPD4' in globalTag
or 'COND' not in globalTag:
414 log.info(
"Resolved localTag \'%s\' to folderTag \'%s\'", globalTag,tag)
416 if not isinstance(db, six.string_types):
418 folder = db.getFolder(folderPath)
419 tag = folder.resolveTag(globalTag)
420 log.info(
"Resolved globalTag \'%s\' to folderTag \'%s\'", globalTag,tag)
422 except Exception
as e:
424 log.warning(
"Using %s to resolve globalTag",schema)
427 folder = dbr.getFolder(folderPath)
428 tag = folder.resolveTag(globalTag)
430 log.info(
"Resolved globalTag \'%s\' to folderTag \'%s\'", globalTag,tag)
◆ getLastRunNumber()
def python.TileCalibTools.getLastRunNumber |
( |
| ) |
|
Return the run number of next run to be taken in the pit
Definition at line 56 of file TileCalibTools.py.
58 Return the run number of next run to be taken in the pit
61 urls = [
"http://atlas-service-db-runlist.web.cern.ch/atlas-service-db-runlist/cgi-bin/latestRun.py",
62 "http://pcata007.cern.ch/cgi-bin/getLastRunNumber.py",
63 "http://pcata007.cern.ch/latestRun"]
68 for line
in urlopen(url).readlines():
78 return max(run+1,222222)
◆ getPromptCalibRunNumber()
def python.TileCalibTools.getPromptCalibRunNumber |
( |
| ) |
|
Return the minimal run number of runs in prompt calibration loop
Definition at line 82 of file TileCalibTools.py.
84 Return the minimal run number of runs in prompt calibration loop
90 fin =
open(
"/afs/cern.ch/user/a/atlcond/scratch0/nemo/prod/web/calibruns.txt",
"r").
read().
split()
94 promptCalibRuns.append(
int(line) )
100 if len(promptCalibRuns)==0:
102 urls = [
"http://pcata007.cern.ch/cgi-bin/getBulkRunNumber.py",
103 "http://pcata007.cern.ch/latestRun"]
108 for line
in urlopen(url).readlines():
114 promptCalibRuns=[run]
119 if len(promptCalibRuns) >= 1:
120 promptCalibRuns.sort()
121 return promptCalibRuns[0]
◆ getTilePrefix()
def python.TileCalibTools.getTilePrefix |
( |
|
ofl = True , |
|
|
|
splitOnlInOflSchema = True |
|
) |
| |
Returns the common Tile prefix used for all COOL folders.
ofl = False ... single version folders
ofl = True ... multiversion folders
splitOnlInOflSchema = False ... offline only folders or
splitOnline folders in Online schema
splitOnlInOflSchema = True ... splitOnlineFolders in
offline schema
Definition at line 152 of file TileCalibTools.py.
154 Returns the common Tile prefix used for all COOL folders.
155 ofl = False ... single version folders
156 ofl = True ... multiversion folders
157 splitOnlInOflSchema = False ... offline only folders or
158 splitOnline folders in Online schema
159 splitOnlInOflSchema = True ... splitOnlineFolders in
163 if splitOnlInOflSchema:
164 return "/TILE/OFL02/"
166 return "/TILE/OFL01/"
168 return "/TILE/ONL01/"
◆ getTilePrefixes()
def python.TileCalibTools.getTilePrefixes |
( |
| ) |
|
Returns a list of all TILE folder prefixes
Definition at line 172 of file TileCalibTools.py.
174 Returns a list of all TILE folder prefixes
176 return [
"/TILE/ONL01/",
"/TILE/OFL01/",
"/TILE/OFL02/"]
◆ openDb()
def python.TileCalibTools.openDb |
( |
|
db, |
|
|
|
instance, |
|
|
|
mode = "READONLY" , |
|
|
|
schema = "COOLOFL_TILE" , |
|
|
|
sqlfn = "tileSqlite.db" |
|
) |
| |
Opens a COOL db connection.
- db: The DB type. The following names are recognized:
* SQLITE: Opens file mentioned in sqlfn parameter
* ORACLE or FRONTIER: Opens ORACLE DB, forces READONLY
- instance: One of valid instances - CONDBR2 OFLP200 COMP200 CMCP200
- mode: Can be READONLY (default), RECREATE or UPDATE
- schema: One of valid schemas - COOLONL_CALO COOLOFL_CALO COOLONL_LAR COOLOFL_LAR COOLONL_TILE COOLOFL_TILE
- sqlfn: Name of sqlite file if db is SQLITE
Definition at line 200 of file TileCalibTools.py.
200 def openDb(db, instance, mode="READONLY", schema="COOLOFL_TILE", sqlfn="tileSqlite.db"):
202 Opens a COOL db connection.
203 - db: The DB type. The following names are recognized:
204 * SQLITE: Opens file mentioned in sqlfn parameter
205 * ORACLE or FRONTIER: Opens ORACLE DB, forces READONLY
206 - instance: One of valid instances - CONDBR2 OFLP200 COMP200 CMCP200
207 - mode: Can be READONLY (default), RECREATE or UPDATE
208 - schema: One of valid schemas - COOLONL_CALO COOLOFL_CALO COOLONL_LAR COOLOFL_LAR COOLONL_TILE COOLOFL_TILE
209 - sqlfn: Name of sqlite file if db is SQLITE
213 validDb = [
"SQLITE",
"ORACLE",
"FRONTIER"]
214 if db
not in validDb:
215 raise Exception(
"DB not valid: %s, valid DBs are: %s" % (db,validDb) )
216 elif db ==
"ORACLE" or db ==
"FRONTIER":
220 validInstance = [
"COMP200",
"CONDBR2",
"CMCP200",
"OFLP200"]
221 if instance
not in validInstance:
222 raise Exception(
"Instance not valid: %s, valid instance are: %s" % (instance,validInstance) )
225 validSchema = [
"COOLONL_TILE",
"COOLOFL_TILE"]
226 if schema
not in validSchema:
227 raise Exception(
"Schema not valid: %s, valid schemas are: %s" % (schema,validSchema) )
232 if mode==
"READONLY" and not os.path.exists(sqlfn):
233 raise Exception(
"Sqlite file %s does not exist" % (sqlfn) )
234 if (mode==
"RECREATE" or mode==
"UPDATE")
and not os.path.exists(os.path.dirname(sqlfn)):
235 dirn=os.path.dirname(sqlfn)
238 connStr=
"sqlite://X;schema=%s;dbname=%s" % (sqlfn,instance)
240 connStr=
'frontier://ATLF/()/;schema=ATLAS_%s;dbname=%s' % (schema,instance)
242 connStr=
'oracle://%s;schema=ATLAS_%s;dbname=%s' % (
'ATLAS_COOLPROD',schema,instance)
244 connStr=schema+
'/'+instance
◆ openDbConn()
def python.TileCalibTools.openDbConn |
( |
|
connStr, |
|
|
|
mode = "READONLY" |
|
) |
| |
Opens a COOL db connection.
- connStr: The DB connection string
- mode: Can be READONLY (default), RECREATE or UPDATE
or ORACLE or FRONTIER if connStr is only short name of the database
Definition at line 250 of file TileCalibTools.py.
252 Opens a COOL db connection.
253 - connStr: The DB connection string
254 - mode: Can be READONLY (default), RECREATE or UPDATE
255 or ORACLE or FRONTIER if connStr is only short name of the database
259 splitname=connStr.split(
'/')
260 if (len(splitname)!=2):
264 instance=splitname[1]
266 connStr_new=
'oracle://%s;schema=ATLAS_%s;dbname=%s' % (
'ATLAS_COOLPROD',schema,instance)
268 connStr_new=
'frontier://ATLF/()/;schema=ATLAS_%s;dbname=%s' % (schema,instance)
271 dbSvc = cool.DatabaseSvcFactory.databaseService()
272 log.info(
"---------------------------------------------------------------------------------" )
273 log.info(
"-------------------------- TileCalibTools.openDbConn ----------------------------" )
274 log.info(
"- using COOL version %s", dbSvc.serviceVersion() )
275 log.info(
"- opening TileDb: %s",connStr_new )
276 log.info(
"- mode: %s", mode )
277 log.info(
"---------------------------------------------------------------------------------" )
280 if mode
in [
"READONLY",
"ORACLE",
"FRONTIER",
"",
None]:
283 db=dbSvc.openDatabase(connStr_new,
True)
284 except Exception
as e:
286 log.critical(
"Could not connect to %s" % connStr_new )
289 elif mode==
"RECREATE":
291 dbSvc.dropDatabase(connStr_new)
293 db = dbSvc.createDatabase(connStr_new)
294 except Exception
as e:
296 log.critical(
"Could not create database, giving up..." )
302 db=dbSvc.openDatabase(connStr_new,
False)
303 except Exception
as e:
305 log.warning(
"Could not connect to \'%s\', trying to create it....", connStr_new )
307 db=dbSvc.createDatabase(connStr_new)
308 except Exception
as e:
310 log.critical(
"Could not create database, giving up..." )
314 log.error(
"Mode \"%s\" not recognized", mode )
◆ runLumiFromCoolTime()
def python.TileCalibTools.runLumiFromCoolTime |
( |
|
iov | ) |
|
◆ LASPARTCHAN
python.TileCalibTools.LASPARTCHAN |
◆ log
python.TileCalibTools.log |
◆ MAXLBK
python.TileCalibTools.MAXLBK |
◆ MAXRUN
python.TileCalibTools.MAXRUN |
◆ MINLBK
python.TileCalibTools.MINLBK |
◆ MINRUN
python.TileCalibTools.MINRUN |
◆ UNIX2COOL
python.TileCalibTools.UNIX2COOL |
◆ UNIXTMAX
python.TileCalibTools.UNIXTMAX |
IovVectorMap_t read(const Folder &theFolder, const SelectionCriterion &choice, const unsigned int limit=10)
std::string replace(std::string s, const std::string &s2, const std::string &s3)
void search(TDirectory *td, const std::string &s, std::string cwd, node *n)
recursive directory search for TH1 and TH2 and TProfiles
void print(std::FILE *stream, std::format_string< Args... > fmt, Args &&... args)
static std::string getFullTag(const std::string &folder, const std::string &tag)
Returns the full tag string, composed of camelized folder name and tag part.