4 from AthenaConfiguration.ComponentFactory
import CompFactory
7 if __name__==
'__main__':
13 parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
14 parser.add_argument(
'-r',
'--run', dest=
'run', default=0x7fffffff, help=
'Run number', type=int)
15 parser.add_argument(
'--sqlite', dest=
'sqlite', default=
None, help=
'sqlite file to read from (default: oracle)', type=str)
16 parser.add_argument(
'-t',
'--tag',dest=
'dbtag',default=
None,help=
"Global conditions tag", type=str)
17 parser.add_argument(
'-f',
'--ftag',dest=
'ftag',default=
None,help=
"folder tag suffig", type=str)
18 parser.add_argument(
'-o',
'--out', dest=
'out', default=
"LArConditions.root", help=
'Output root file', type=str)
19 parser.add_argument(
'--ofcfolder',dest=
'ofcfolder',default=
"", help=
"OFC flavor",type=str)
20 parser.add_argument(
'-s',
'--isSC', dest=
'isSC', action=
'store_true', default=
False, help=
'is SC?')
21 parser.add_argument(
'-m',
'--isMC', dest=
'isMC', action=
'store_true', default=
False, help=
'is MC?')
23 parser.add_argument(
"--objects",dest=
"objects",default=
"PEDESTAL,RAMP",help=
"List of conditions types to be dumped",type=str)
24 parser.add_argument(
"--folders",dest=
"folders",default=
"/LAR/ElecCalibFlat/Pedestal,/LAR/ElecCalibFlat/Ramp",help=
"List of folders to be taken from sqlite",type=str)
25 parser.add_argument(
'--offline',dest=
"offline", action=
'store_true', default=
False, help=
'is offline folder?')
26 parser.add_argument(
'--poolcat',dest=
"poolcat", default=
"", type=str, help=
'is offline folder?')
27 parser.add_argument(
'-n',
'--ntuple', dest=
'ntname', default=
'', help=
'output ntuple name (if different from default)', type=str)
29 args = parser.parse_args()
30 if help
in args
and args.help
is not None and args.help:
36 objTable={
"RAMP":
"Ramp",
39 "PEDESTAL":
"Pedestal",
43 "MPHYSOVERMCAL":
"MphysOverMcal",
44 "MPHYSMCAL":
"MphysOverMcal",
45 "MPMC":
"MphysOverMcal",
48 "HVSCALECORR":
"HVScaleCorr",
49 "HVSCALE":
"HVScaleCorr",
51 "AUTOCORR":
"AutoCorr",
53 "CALIWAVE":
"CaliWave",
54 "PHYSWAVE":
"PhysWave",
61 for obj
in args.objects.split(
","):
63 if objU
not in objTable:
64 print(
"ERROR: Unknown conditions type",obj)
67 objects.add(objTable[objU])
68 if "OFCCALI" not in obj.upper()
and 'WAVE' not in obj.upper()
and not args.offline:
69 objectsOnl.add(objTable[objU])
72 for fld
in args.folders.split(
","):
75 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
77 from LArCalibProcessing.LArCalibConfigFlags
import addLArCalibFlags
80 flags.Input.RunNumbers=[args.run]
81 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
82 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
86 flags.Input.isMC=args.isMC
87 flags.LArCalib.isSC=args.isSC
89 flags.LAr.doAlign=
False
91 flags.LAr.OFCShapeFolder=args.ofcfolder
93 from AthenaConfiguration.Enums
import LHCPeriod
94 if flags.Input.RunNumbers[0] < 222222:
96 flags.GeoModel.Run=LHCPeriod.Run1
97 flags.IOVDb.DatabaseInstance=
"OFLP200" if flags.Input.isMC
else "COMP200"
99 flags.GeoModel.Run=LHCPeriod.Run2
100 flags.IOVDb.DatabaseInstance=
"OFLP200" if flags.Input.isMC
else "CONDBR2"
103 flags.IOVDb.GlobalTag=args.dbtag
104 elif flags.Input.isMC:
105 flags.IOVDb.GlobalTag=
"OFLCOND-MC16-SDR-20"
106 elif flags.IOVDb.DatabaseInstance ==
"COMP200":
107 flags.IOVDb.GlobalTag=
"COMCOND-BLKPA-RUN1-09"
109 flags.IOVDb.GlobalTag=
"CONDBR2-ES1PA-2024-01"
114 flags.IOVDb.SqliteInput=args.sqlite
115 flags.IOVDb.SqliteFolders=tuple(flds)
116 if len(objects)!=len(objectsOnl):
117 flags.IOVDb.DBConnection=
"COOLOFL_LAR/CONDBR2"
121 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
125 from McEventSelector.McEventSelectorConfig
import McEventSelectorCfg
129 InitialTimeStamp = 0,
130 TimeStampInterval = 1))
135 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
138 if flags.LArCalib.isSC:
140 from LArCabling.LArCablingConfig
import LArOnOffIdMappingSCCfg, LArCalibIdMappingSCCfg, LArLATOMEMappingCfg
145 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBSCCfg
149 from LArCabling.LArCablingConfig
import LArOnOffIdMappingCfg, LArCalibIdMappingCfg
153 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBCfg
156 from LArBadChannelTool.LArBadChannelConfig
import LArBadChannelCfg
159 bcKey =
"LArBadChannelSC" if flags.LArCalib.isSC
else "LArBadChannel"
161 if "Pedestal" in objects:
162 ckey =
"LArPedestalSC" if flags.LArCalib.isSC
else "LArPedestal"
163 cfg.addEventAlgo(CompFactory.LArPedestals2Ntuple(ContainerKey = ckey,
164 AddFEBTempInfo =
False,
166 isSC = flags.LArCalib.isSC,
170 if "AutoCorr" in objects:
171 from IOVDbSvc.IOVDbSvcConfig
import addFolders
172 if flags.LArCalib.isSC:
173 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOflSC/AutoCorrs/AutoCorr',modifiers=
'<key>LArAutoCorrSC</key>',className=
'LArAutoCorrComplete'))
175 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr',className=
'LArAutoCorrComplete'))
176 ckey=
"LArAutoCorrSC" if flags.LArCalib.isSC
else "LArAutoCorr"
177 cfg.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey =
"LArAutoCorrSym" if flags.Input.isMC
else ckey,
178 AddFEBTempInfo =
False,
180 isSC = flags.LArCalib.isSC,
181 ApplyCorrection =
True,
186 if "Ramp" in objects:
187 ckey =
"LArRampSC" if flags.LArCalib.isSC
else "LArRamp"
189 from IOVDbSvc.IOVDbSvcConfig
import addFolders
190 if flags.LArCalib.isSC:
191 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOflSC/Ramps/RampLinea',modifiers=
'<key>LArRampSC</key>',className=
'LArRampComplete'))
193 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOfl/Ramps/RampLinea',className=
'LArRampComplete'))
194 cfg.addEventAlgo(CompFactory.LArRamps2Ntuple(RampKey=
"LArRampSym" if flags.Input.isMC
else ckey,
195 AddFEBTempInfo =
False,
197 isSC = flags.LArCalib.isSC,
205 from IOVDbSvc.IOVDbSvcConfig
import addFolders
209 cfg.merge(
addFolders(flags,fld,tag=
"".
join(foldername.split(
'/')) + args.ftag))
212 ckey=
'LArOFC' if '1phase' in fld
else 'LArLArOFCPhys4samples'
215 ckey =
"LArOFCSC" if flags.LArCalib.isSC
else "LArOFC"
216 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple(AddFEBTempInfo =
False,
218 isSC = flags.LArCalib.isSC,
222 if "OFCCali" in objects:
224 from IOVDbSvc.IOVDbSvcConfig
import addFolders
228 cfg.merge(
addFolders(flags,fld,tag=
"".
join(foldername.split(
'/')) + args.ftag))
231 ckey=
'LArOFC' if '1phase' in fld
else 'LArOFC'
234 ckey =
"LArOFCSCCali" if flags.LArCalib.isSC
else "LArOFCCali"
235 fldr =
"/LAR/ElecCalibFlatSC/OFCCali" if flags.LArCalib.isSC
else "/LAR/ElecCalibFlat/OFCCali"
236 dbString =
"<db>sqlite://;schema="+args.sqlite+
";dbname=CONDBR2" if args.sqlite
else "<db>COOLONL_LAR/CONDBR2</db>"
237 from IOVDbSvc.IOVDbSvcConfig
import addFolders
238 cfg.merge(
addFolders(flags,fldr,detDb=dbString,className=
"CondAttrListCollection"))
239 LArOFCSCCondAlg = CompFactory.getComp(
"LArFlatConditionsAlg<LArOFCSC>")(
"LArOFCSCCaliCondAlg")
240 LArOFCSCCondAlg.ReadKey=fldr
241 LArOFCSCCondAlg. WriteKey=ckey
242 cfg.addCondAlgo(LArOFCSCCondAlg)
244 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple(
"LArOFC2NtupleCali",
245 AddFEBTempInfo =
False,
247 NtupleName=
"OFCCali" if args.ntname==
'' else args.ntname,
248 isSC = flags.LArCalib.isSC,
253 if "Shape" in objects:
254 ckey =
"LArShapeSC" if flags.LArCalib.isSC
else "LArShape"
257 cfg.addEventAlgo(CompFactory.LArShape2Ntuple(ContainerKey=ckey,
258 AddFEBTempInfo =
False,
260 isSC = flags.LArCalib.isSC,
264 if "MphysOverMcal" in objects:
265 cfg.addEventAlgo(CompFactory.LArMphysOverMcal2Ntuple(ContainerKey =
"LArMphysOverMcalSC" if flags.LArCalib.isSC
else "LArMphysOverMcal",
266 AddFEBTempInfo =
False,
268 isSC = flags.LArCalib.isSC,
273 if "DAC2uA" in objects
or "uA2MeV" in objects:
274 uackey =
"LAruA2MeVSC" if flags.LArCalib.isSC
else "LAruA2MeV"
275 dackey =
"LArDAC2uASC" if flags.LArCalib.isSC
else "LArDAC2uA"
276 ua2MeVKey=
"LAruA2MeVSym" if flags.Input.isMC
else uackey
277 dac2uAKey=
"LArDAC2uASym" if flags.Input.isMC
else dackey
279 cfg.addEventAlgo(CompFactory.LAruA2MeV2Ntuple(uA2MeVKey=ua2MeVKey
if "uA2MeV" in objects
else "",
280 DAC2uAKey=dac2uAKey
if "DAC2uA" in objects
else "",
281 isSC = flags.LArCalib.isSC,
286 if "HVScaleCorr" in objects:
287 cfg.addEventAlgo(CompFactory.LArHVScaleCorr2Ntuple(ContainerKey=
"LArHVScaleCorrSC" if flags.LArCalib.isSC
else "LArHVScaleCorr",
288 AddFEBTempInfo =
False,
289 isSC = flags.LArCalib.isSC,
293 if "fSampl" in objects:
294 cfg.addEventAlgo(CompFactory.LArfSampl2Ntuple(ContainerKey=
"LArfSamplSC" if flags.LArCalib.isSC
else "LArfSamplSym",
295 isSC=flags.LArCalib.isSC
298 if "CaliWave" in objects:
300 print(
'No CaliWave in MC')
302 fld =
"/LAR/ElecCalibOflSC/CaliWaves/CaliWave" if flags.LArCalib.isSC
else "/LAR/ElecCalibOfl/CaliWaves/CaliWave"
303 from IOVDbSvc.IOVDbSvcConfig
import addFolders
304 cfg.merge(
addFolders(flags,fld,modifiers=
'<key>LArCaliWave</key><typeName>LArCaliWaveContainer</typeName>'))
305 cfg.addEventAlgo(CompFactory.LArCaliWaves2Ntuple(KeyList = [
"LArCaliWave"],
306 NtupleName =
"CALIWAVE",
307 AddFEBTempInfo =
False,
308 SaveDerivedInfo =
True,
312 isSC = flags.LArCalib.isSC,
316 if "PhysWave" in objects:
318 print(
'No PhysWave in MC yet')
320 fld =
"/LAR/ElecCalibOflSC/PhysWaves/RTM" if flags.LArCalib.isSC
else "/LAR/ElecCalibOfl/PhysWaves/RTM"
321 from IOVDbSvc.IOVDbSvcConfig
import addFolders
323 cfg.addEventAlgo(CompFactory.LArPhysWaves2Ntuple(KeyList = [
"LArPhysWave"],
324 NtupleName =
"PHYSWAVE",
325 AddFEBTempInfo =
False,
326 SaveDerivedInfo =
True,
329 isSC = flags.LArCalib.isSC,
334 if os.path.exists(rootfile):
336 cfg.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+rootfile+
"' OPT='NEW'" ]))
337 cfg.setAppProperty(
"HistogramPersistency",
"ROOT")
339 if args.dbtag
and 'CALIB' in args.dbtag:
340 cfg.getService(
"IOVDbSvc").DBInstance=
""
343 cfg.getService(
"PoolSvc").ReadCatalog+=[
"xmlcatalog_file:%s"%args.poolcat,]