4 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
5 from AthenaConfiguration.ComponentFactory
import CompFactory
6 from IOVDbSvc.IOVDbSvcConfig
import addFolders
9 return "sqlite://;schema="+sqlitefile+
";dbname=CONDBR2"
11 def mergeDBCfg(flags, InputKeys=[], InputSQLiteFiles=[]):
14 print(
"mergeDBCfg",len(InputSQLiteFiles),
" SQLite files: ",InputSQLiteFiles)
15 print(len(InputKeys),
" InputKeys: ",InputKeys)
18 if not flags.LArCalib.isSC: GroupingType =
"ExtendedSubDetector"
19 else: GroupingType =
"SuperCells"
21 if ( flags.LArCalib.Output.POOLFile ):
22 if os.path.exists(flags.LArCalib.Output.POOLFile):
23 os.remove(flags.LArCalib.Output.POOLFile)
27 print(
"Working for: ",key)
31 if 'Pedestal' == key
or 'PhysWave' == key
or 'CaliWave' or 'MphysOverMcal' == key
or 'Ramp' == key
or 'Params' in key:
36 KeyInput=
'LArAutoCorr'
45 ofcphyskeytmp = key.split(
"OFCPhys")[1]
46 if 'Mu' in ofcphyskeytmp:
47 ofcphyskey=ofcphyskeytmp.replace(
"Mu",
"")
49 ofcphyskey=ofcphyskeytmp
54 shapekey = key.split(
"Shape")[1]
60 if [i
for i
in flags._flagdict.keys()
if FlagInput
in i]:
62 Folder = flags._get(
'LArCalib.'+FlagInput+
'.Folder')
63 except Exception
as e:
65 print(flags._flagdict)
68 print(
'No folder in flags for '+FlagInput)
69 print(flags._flagdict.keys())
72 if shapekey
is not None:
73 if Folder.endswith(
"/"):
78 if ofcphyskey
is not None and ofcphyskey !=
"":
79 print(
"Folder: ",Folder,
" ofcphyskey: ",ofcphyskey)
80 if "4samples" in Folder:
81 Folder = Folder.replace(
"4samples", ofcphyskey)
82 elif Folder.endswith(
"/"):
85 Folder+=
"/"+ofcphyskey
87 if "OFCPhys" in FlagInput:
88 print(
"Folder: ",Folder)
90 from PyCool
import cool
91 dbSvc=cool.DatabaseSvcFactory.databaseService()
94 db=dbSvc.openDatabase(db_string)
95 except Exception
as e:
96 print (
'Problem opening database',e)
99 cool_folder=db.getFolder(Folder)
100 tags = [ x
for x
in cool_folder.listTags() ]
102 TagSpec =
str(tags[0])
104 if flags.LArCalib.OFC.Ncoll > 0
or 'Mu' in key:
105 TagSpec = [
str(tag)
for tag
in tags
if "-mu-" in str(tag)][0]
107 TagSpec = [
str(tag)
for tag
in tags
if "-mu-" not in str(tag)][0]
109 from LArCalibProcessing.utils
import FolderTagResolver
as FolderTagResover
110 FolderTagResover._globalTag=flags.IOVDb.GlobalTag
114 FolderTag = rs.getFolderTagSuffix(Folder)
117 from LArCalibProcessing.LArCalibConfigFlags
import LArCalibFolderTag
121 if 'Wave' in KeyInput:
122 OutputObjectSpec = KeyInput+
"Container#"+KeyOutput+
"#"+Folder
124 OutputObjectSpec = KeyInput+
"Complete#"+KeyOutput+
"#"+Folder
125 OutputObjectSpecTag = TagSpec
127 print(
"**",KeyInput,FlagInput,
"folder **",Folder)
128 print(
"** TagSpec: ",TagSpec)
129 print(
"** keyOutput: ",KeyOutput)
131 result.addEventAlgo(CompFactory.getComp(
'LArBlockCorrections')())
133 result.addEventAlgo(CompFactory.getComp(
'LArBlockCorrections')())
138 for sqf
in InputSQLiteFiles:
139 thiskey = KeyInput+
str(InputSQLiteFiles.index(sqf))
140 if 'OFC' in key
and 'Mu' in key:
142 if 'OFC' in key
and 'Cali' in key:
144 inkeys.append(thiskey)
145 if 'Wave' in KeyInput:
146 inobjs.append(KeyInput+
"Container#"+thiskey)
148 inobjs.append(KeyInput+
"Complete#"+thiskey)
150 if 'Wave' in KeyInput
or 'Params' in KeyInput:
151 result.merge(
addFolders(flags,Folder,tag=TagSpec,detDb=sqf,modifiers=
"<key>"+thiskey+
"</key>"))
153 result.merge(
addFolders(flags,Folder,tag=TagSpec,detDb=sqf,modifiers=
"<key>"+thiskey+
"</key>", className=KeyInput+
"Complete"))
156 if 'Wave' in KeyInput:
157 result.addCondAlgo(CompFactory.getComp(
'ForceLoadCondObj')(KeyOutput,ObjectList=inobjs))
158 result.addCondAlgo(CompFactory.getComp(
'LArConditionsMergerAlg<LArDAC2uAComplete,'+KeyInput+
'Container>')(key+
"Merger",
159 GroupingType = GroupingType, WriteKey = KeyOutput, DetStoreReadKeys = inkeys))
160 elif 'Params' in KeyInput:
161 result.addCondAlgo(CompFactory.getComp(
'ForceLoadCondObj')(KeyOutput,ObjectList=inobjs))
162 result.addCondAlgo(CompFactory.getComp(
'LArConditionsMergerAlg<LArDAC2uAComplete,'+KeyInput+
'Complete>')(key+
"Merger",
163 GroupingType = GroupingType, WriteKey = KeyOutput, DetStoreReadKeys = inkeys))
165 result.addCondAlgo(CompFactory.getComp(
'LArConditionsMergerAlg<'+KeyInput+
'Complete, LArPhysWaveContainer>')(key+
"Merger",
166 GroupingType = GroupingType, WriteKey = KeyOutput, ReadKeys = inkeys))
168 if ( flags.LArCalib.Output.POOLFile ):
170 from RegistrationServices.OutputConditionsAlgConfig
import OutputConditionsAlgCfg
171 result.merge(
OutputConditionsAlgCfg(flags,name=
"OutputConditionsAlg"+KeyInput, outputFile=flags.LArCalib.Output.POOLFile,
172 ObjectList=[OutputObjectSpec], IOVTagList=[OutputObjectSpecTag],
173 Run1 = flags.LArCalib.IOVStart, Run2= flags.LArCalib.IOVEnd, WriteIOV=
True))
176 result.addService(CompFactory.IOVRegistrationSvc(RecreateFolders =
False))
179 from McEventSelector.McEventSelectorConfig
import McEventSelectorCfg
181 RunNumber = flags.LArCalib.Input.RunNumbers[0],
184 InitialTimeStamp = 0,
185 TimeStampInterval = 1))
187 result.printConfig(withDetails=
True, printDefaults=
True)
191 if __name__==
"__main__":
195 return arg.split(
',')
198 parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
199 parser.add_argument(
'-r',
'--run', dest=
'run', default=
str(0x7FFFFFFF), help=
'Run number to query input DB', type=str)
200 parser.add_argument(
'-i',
'--insqlite', dest=
'insql', default=
"", help=
'List of input sqlite files, comma separated, if empty all *.db files in current dir.', type=list_of_strings)
201 parser.add_argument(
'-k',
'--inkeys', dest=
'inkeys', default=[
"LArPedestal"], help=
'List of input keys to process', type=list_of_strings)
202 parser.add_argument(
'-o',
'--outsqlite', dest=
'outsql', default=
"freshConstants_merged.db", help=
'Output sqlite file', type=str)
203 parser.add_argument(
'-p',
'--poolfile', dest=
'poolfile', default=
"freshConstants_pp.pool.root", help=
'Output pool file', type=str)
204 parser.add_argument(
'-d',
'--dbname', dest=
'dbname', default=
"COOLOFL_LAR/CONDBR2", help=
'DB to query for tags', type=str)
205 parser.add_argument(
'--iovstart',dest=
"iovstart", default=0, help=
"IOV start (run-number)", type=int)
206 parser.add_argument(
'--isSC', dest=
'supercells', default=
False, help=
'is SC data ?', action=
'store_true')
207 parser.add_argument(
'-c',
'--poolcat', dest=
'poolcat', default=
"freshConstants.xml", help=
'Catalog of POOL files', type=str)
208 parser.add_argument(
'--Ncoll',dest=
'Ncoll', default=60, help=
'Number of MinBias collision assumed for OFCs folder', type=int)
209 args = parser.parse_args()
210 if help
in args
and args.help
is not None and args.help:
214 if len(args.insql)==0:
215 InputSQLiteFiles = [ db
for db
in os.listdir(
".")
if db.endswith(
".db") ]
217 InputSQLiteFiles = args.insql
219 if len(InputSQLiteFiles) == 1:
221 shutil.copyfile(InputSQLiteFiles[0],args.outsql)
224 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
225 from LArCalibProcessing.LArCalibConfigFlags
import addLArCalibFlags
230 flags.LArCalib.Input.RunNumbers = [
int(args.run),]
231 flags.LArCalib.Input.Database = args.insql
232 flags.LArCalib.Input.Database2 = args.dbname
234 flags.LArCalib.Output.POOLFile = args.poolfile
239 flags.IOVDb.GlobalTag =
"LARCALIB-RUN2-00"
242 flags.LArCalib.Input.Files = [ ]
243 flags.LArCalib.OFC.Ncoll = args.Ncoll
244 flags.LArCalib.IOVStart = args.iovstart
246 flags.LAr.doAlign=
False
247 flags.Input.RunNumbers=flags.LArCalib.Input.RunNumbers
249 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
250 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
252 flags.Debug.DumpDetStore=
True
253 flags.Debug.DumpCondStore=
True
258 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
260 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
264 from AthenaPoolCnvSvc.PoolCommonConfig
import PoolSvcCfg
267 cfg.merge(
mergeDBCfg(flags,args.inkeys, InputSQLiteFiles))
269 cfg.getService(
"PoolSvc").ReadCatalog+=[
"xmlcatalog_file:%s"%args.poolcat,]
270 cfg.getService(
"PoolSvc").WriteCatalog=
"xmlcatalog_file:%s"%args.poolcat
271 cfg.getService(
"IOVDbSvc").DBInstance=
""
273 cfg.printConfig(withDetails=
True, summariseProps=
True, printDefaults=
True)