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)
28 parser.add_argument(
'--oLevel', dest=
'olevel', default=3, help=
'OutputLevel of the job', type=int)
30 args = parser.parse_args()
31 if help
in args
and args.help
is not None and args.help:
37 objTable={
"RAMP":
"Ramp",
40 "PEDESTAL":
"Pedestal",
44 "MPHYSOVERMCAL":
"MphysOverMcal",
45 "MPHYSMCAL":
"MphysOverMcal",
46 "MPMC":
"MphysOverMcal",
49 "HVSCALECORR":
"HVScaleCorr",
50 "HVSCALE":
"HVScaleCorr",
52 "AUTOCORR":
"AutoCorr",
54 "CALIWAVE":
"CaliWave",
55 "PHYSWAVE":
"PhysWave",
60 "PHYSAC":
"PhysAutoCorr",
65 for obj
in args.objects.split(
","):
67 if objU
not in objTable:
68 print(
"ERROR: Unknown conditions type",obj)
71 objects.add(objTable[objU])
72 if "OFCCALI" not in obj.upper()
and 'WAVE' not in obj.upper()
and 'DSPTHR' not in obj.upper()
and 'MINBIAS' not in obj.upper()
and not args.offline:
73 objectsOnl.add(objTable[objU])
76 for fld
in args.folders.split(
","):
79 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
81 from LArCalibProcessing.LArCalibConfigFlags
import addLArCalibFlags
84 flags.Input.RunNumbers=[args.run]
85 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
86 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
90 flags.Input.isMC=args.isMC
91 flags.LArCalib.isSC=args.isSC
93 flags.LAr.doAlign=
False
95 flags.LAr.OFCShapeFolder=args.ofcfolder
97 from AthenaConfiguration.Enums
import LHCPeriod
98 if flags.Input.RunNumbers[0] < 222222:
100 flags.GeoModel.Run=LHCPeriod.Run1
101 flags.IOVDb.DatabaseInstance=
"OFLP200" if flags.Input.isMC
else "COMP200"
103 flags.GeoModel.Run=LHCPeriod.Run2
104 flags.IOVDb.DatabaseInstance=
"OFLP200" if flags.Input.isMC
else "CONDBR2"
107 flags.IOVDb.GlobalTag=args.dbtag
108 elif flags.Input.isMC:
109 flags.IOVDb.GlobalTag=
"OFLCOND-MC16-SDR-20"
110 elif flags.IOVDb.DatabaseInstance ==
"COMP200":
111 flags.IOVDb.GlobalTag=
"COMCOND-BLKPA-RUN1-09"
113 flags.IOVDb.GlobalTag=
"CONDBR2-ES1PA-2024-01"
115 flags.Exec.OutputLevel=args.olevel
116 flags.Debug.DumpCondStore=
True
117 flags.Debug.DumpDetStore=
True
120 flags.IOVDb.SqliteInput=args.sqlite
121 flags.IOVDb.SqliteFolders=tuple(flds)
122 if len(objects)!=len(objectsOnl):
123 flags.IOVDb.DBConnection=
"COOLOFL_LAR/CONDBR2"
127 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
131 from McEventSelector.McEventSelectorConfig
import McEventSelectorCfg
135 InitialTimeStamp = 0,
136 TimeStampInterval = 1))
141 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
144 if flags.LArCalib.isSC:
146 from LArCabling.LArCablingConfig
import LArOnOffIdMappingSCCfg, LArCalibIdMappingSCCfg, LArLATOMEMappingCfg
151 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBSCCfg
155 from LArCabling.LArCablingConfig
import LArOnOffIdMappingCfg, LArCalibIdMappingCfg
159 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBCfg
162 from LArBadChannelTool.LArBadChannelConfig
import LArBadChannelCfg
165 bcKey =
"LArBadChannelSC" if flags.LArCalib.isSC
else "LArBadChannel"
167 if "Pedestal" in objects:
168 ckey =
"LArPedestalSC" if flags.LArCalib.isSC
else "LArPedestal"
169 cfg.addEventAlgo(CompFactory.LArPedestals2Ntuple(ContainerKey = ckey,
170 AddFEBTempInfo =
False,
172 isSC = flags.LArCalib.isSC,
176 if "AutoCorr" in objects:
177 from IOVDbSvc.IOVDbSvcConfig
import addFolders
178 if flags.LArCalib.isSC:
179 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOflSC/AutoCorrs/AutoCorr',modifiers=
'<key>LArAutoCorrSC</key>',className=
'LArAutoCorrComplete'))
182 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr',tag=
"".
join(
'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr'.
split(
'/')) + args.ftag))
184 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr',className=
'LArAutoCorrComplete'))
185 ckey=
"LArAutoCorrSC" if flags.LArCalib.isSC
else "LArAutoCorr"
186 cfg.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey =
"LArAutoCorrSym" if flags.Input.isMC
else ckey,
187 AddFEBTempInfo =
False,
189 isSC = flags.LArCalib.isSC,
190 ApplyCorrection =
True,
196 if "PhysAutoCorr" in objects:
197 from IOVDbSvc.IOVDbSvcConfig
import addFolders
198 if flags.LArCalib.isSC:
199 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOflSC/AutoCorrs/PhysicsAutoCorr',modifiers=
'<key>LArAutoCorrSC</key>',className=
'LArAutoCorrComplete'))
202 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr',tag=
"".
join(
'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr'.
split(
'/')) + args.ftag))
204 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr',className=
'LArAutoCorrComplete'))
205 ckey=
"LArPhysAutoCorrSC" if flags.LArCalib.isSC
else "LArPhysAutoCorr"
206 cfg.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey = ckey,
207 AddFEBTempInfo =
False,
209 isSC = flags.LArCalib.isSC,
210 ApplyCorrection =
not flags.Input.isMC,
211 AddCorrUndo =
not flags.Input.isMC,
216 if "Ramp" in objects:
217 ckey =
"LArRampSC" if flags.LArCalib.isSC
else "LArRamp"
219 from IOVDbSvc.IOVDbSvcConfig
import addFolders
220 if flags.LArCalib.isSC:
221 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOflSC/Ramps/RampLinea',modifiers=
'<key>LArRampSC</key>',className=
'LArRampComplete'))
223 cfg.merge(
addFolders(flags,
'/LAR/ElecCalibOfl/Ramps/RampLinea',className=
'LArRampComplete'))
224 cfg.addEventAlgo(CompFactory.LArRamps2Ntuple(RampKey=
"LArRampSym" if flags.Input.isMC
else ckey,
225 AddFEBTempInfo =
False,
227 isSC = flags.LArCalib.isSC,
235 from IOVDbSvc.IOVDbSvcConfig
import addFolders
239 cfg.merge(
addFolders(flags,fld,tag=
"".
join(foldername.split(
'/')) + args.ftag))
242 ckey=
'LArOFC' if '1phase' in fld
else 'LArLArOFCPhys4samples'
243 ntname=
'OFC' if '1phase' in fld
else 'OFC_1ns'
246 ckey =
"LArOFCSC" if flags.LArCalib.isSC
else "LArOFC"
248 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple(AddFEBTempInfo =
False,
251 isSC = flags.LArCalib.isSC,
255 if "OFCCali" in objects:
257 from IOVDbSvc.IOVDbSvcConfig
import addFolders
261 cfg.merge(
addFolders(flags,fld,tag=
"".
join(foldername.split(
'/')) + args.ftag))
264 ckey=
'LArOFC' if '1phase' in fld
else 'LArOFC'
267 ckey =
"LArOFCSCCali" if flags.LArCalib.isSC
else "LArOFCCali"
268 fldr =
"/LAR/ElecCalibFlatSC/OFCCali" if flags.LArCalib.isSC
else "/LAR/ElecCalibFlat/OFCCali"
269 dbString =
"<db>sqlite://;schema="+args.sqlite+
";dbname=CONDBR2" if args.sqlite
else "<db>COOLONL_LAR/CONDBR2</db>"
270 from IOVDbSvc.IOVDbSvcConfig
import addFolders
271 cfg.merge(
addFolders(flags,fldr,detDb=dbString,className=
"CondAttrListCollection"))
272 LArOFCSCCondAlg = CompFactory.getComp(
"LArFlatConditionsAlg<LArOFCSC>")(
"LArOFCSCCaliCondAlg")
273 LArOFCSCCondAlg.ReadKey=fldr
274 LArOFCSCCondAlg. WriteKey=ckey
275 cfg.addCondAlgo(LArOFCSCCondAlg)
277 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple(
"LArOFC2NtupleCali",
278 AddFEBTempInfo =
False,
280 NtupleName=
"OFCCali" if args.ntname==
'' else args.ntname,
281 isSC = flags.LArCalib.isSC,
286 if "Shape" in objects:
287 ckey =
"LArShapeSC" if flags.LArCalib.isSC
else "LArShape"
290 cfg.addEventAlgo(CompFactory.LArShape2Ntuple(ContainerKey=ckey,
291 AddFEBTempInfo =
False,
293 isSC = flags.LArCalib.isSC,
297 if "MphysOverMcal" in objects:
298 cfg.addEventAlgo(CompFactory.LArMphysOverMcal2Ntuple(ContainerKey =
"LArMphysOverMcalSC" if flags.LArCalib.isSC
else "LArMphysOverMcal",
299 AddFEBTempInfo =
False,
301 isSC = flags.LArCalib.isSC,
306 if "DAC2uA" in objects
or "uA2MeV" in objects:
307 uackey =
"LAruA2MeVSC" if flags.LArCalib.isSC
else "LAruA2MeV"
308 dackey =
"LArDAC2uASC" if flags.LArCalib.isSC
else "LArDAC2uA"
309 ua2MeVKey=
"LAruA2MeVSym" if flags.Input.isMC
else uackey
310 dac2uAKey=
"LArDAC2uASym" if flags.Input.isMC
else dackey
312 cfg.addEventAlgo(CompFactory.LAruA2MeV2Ntuple(uA2MeVKey=ua2MeVKey
if "uA2MeV" in objects
else "",
313 DAC2uAKey=dac2uAKey
if "DAC2uA" in objects
else "",
314 isSC = flags.LArCalib.isSC,
319 if "HVScaleCorr" in objects:
321 iovDbSvc=cfg.getService(
"IOVDbSvc")
322 for i
in range(0,len(iovDbSvc.Folders)):
323 if (iovDbSvc.Folders[i].
find(
"HVScaleCorr")>=0):
324 iovDbSvc.Folders[i]+=
"<key>/LAR/ElecCalibFlatSC/HVScaleCorr</key>"
326 cfg.addEventAlgo(CompFactory.LArHVScaleCorr2Ntuple(ContainerKey=
"LArHVScaleCorrSC" if flags.LArCalib.isSC
else "LArHVScaleCorr",
327 AddFEBTempInfo =
False,
328 isSC = flags.LArCalib.isSC,
332 if "fSampl" in objects:
333 cfg.addEventAlgo(CompFactory.LArfSampl2Ntuple(ContainerKey=
"LArfSamplSC" if flags.LArCalib.isSC
else "LArfSamplSym",
334 isSC=flags.LArCalib.isSC
337 if "CaliWave" in objects:
339 print(
'No CaliWave in MC')
341 fld =
"/LAR/ElecCalibOflSC/CaliWaves/CaliWave" if flags.LArCalib.isSC
else "/LAR/ElecCalibOfl/CaliWaves/CaliWave"
342 from IOVDbSvc.IOVDbSvcConfig
import addFolders
343 cfg.merge(
addFolders(flags,fld,modifiers=
'<key>LArCaliWave</key><typeName>LArCaliWaveContainer</typeName>'))
344 cfg.addEventAlgo(CompFactory.LArCaliWaves2Ntuple(KeyList = [
"LArCaliWave"],
345 NtupleName =
"CALIWAVE",
346 AddFEBTempInfo =
False,
347 SaveDerivedInfo =
True,
351 isSC = flags.LArCalib.isSC,
355 if "PhysWave" in objects:
357 print(
'No PhysWave in MC yet')
359 fld =
"/LAR/ElecCalibOflSC/PhysWaves/RTM" if flags.LArCalib.isSC
else "/LAR/ElecCalibOfl/PhysWaves/RTM"
360 from IOVDbSvc.IOVDbSvcConfig
import addFolders
362 cfg.addEventAlgo(CompFactory.LArPhysWaves2Ntuple(KeyList = [
"LArPhysWave"],
363 NtupleName =
"PHYSWAVE",
364 AddFEBTempInfo =
False,
365 SaveDerivedInfo =
True,
368 isSC = flags.LArCalib.isSC,
372 if "DSPThr" in objects:
373 from IOVDbSvc.IOVDbSvcConfig
import addFolders
374 cfg.merge(
addFolders(flags,
"/LAR/Configuration/DSPThresholdFlat/Thresholds",detDb=
"LAR_ONL"))
375 cfg.addEventAlgo(CompFactory.LArDSPThresholds2Ntuple(DumpFlat=
True,FlatFolder=
"/LAR/Configuration/DSPThresholdFlat/Thresholds"))
377 if "MinBias" in objects:
379 from IOVDbSvc.IOVDbSvcConfig
import addFolders
381 myfld=
"/LAR/ElecCalibOfl/LArPileupAverage"
384 myfld=
"/LAR/LArPileup/LArPileupAverage"
387 cfg.merge(
addFolders(flags,myfld,detDb=mydb,className=
"LArMinBiasAverageMC",tag=
"".
join(myfld.split(
'/')) + args.ftag))
389 cfg.merge(
addFolders(flags,myfld,detDb=mydb,className=
"LArMinBiasAverageMC"))
390 LArMinBiasAverageSymAlg = CompFactory.getComp(
"LArSymConditionsAlg<LArMinBiasAverageMC, LArMinBiasAverageSym>")
391 LArMCSymCondAlg=CompFactory.LArMCSymCondAlg
394 cfg.addEventAlgo(CompFactory.LArMinBias2Ntuple(ContainerKey=
"",ContainerKeyAv=
"LArSymPileupAverage"))
397 if os.path.exists(rootfile):
399 cfg.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+rootfile+
"' OPT='NEW'" ]))
400 cfg.setAppProperty(
"HistogramPersistency",
"ROOT")
402 if args.dbtag
and 'CALIB' in args.dbtag:
403 cfg.getService(
"IOVDbSvc").DBInstance=
""
406 cfg.getService(
"PoolSvc").ReadCatalog+=[
"xmlcatalog_file:%s"%args.poolcat,]