4from AthenaConfiguration.ComponentFactory
import CompFactory
7if __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:
38 objTable={
"RAMP":
"Ramp",
41 "PEDESTAL":
"Pedestal",
45 "MPHYSOVERMCAL":
"MphysOverMcal",
46 "MPHYSMCAL":
"MphysOverMcal",
47 "MPMC":
"MphysOverMcal",
50 "HVSCALECORR":
"HVScaleCorr",
51 "HVSCALE":
"HVScaleCorr",
53 "AUTOCORR":
"AutoCorr",
55 "CALIWAVE":
"CaliWave",
56 "PHYSWAVE":
"PhysWave",
62 "BCID":
"PileupAverage",
63 "PHYSAC":
"PhysAutoCorr",
68 for obj
in args.objects.split(
","):
70 if objU
not in objTable:
71 print(
"ERROR: Unknown conditions type",obj)
74 objects.add(objTable[objU])
75 if all(txt
not in obj.upper()
for txt
in [
"OFCCALI",
"WAVE",
"DSP",
"MINBIAS",
"BCID"])
and not args.offline:
76 objectsOnl.add(objTable[objU])
79 for fld
in args.folders.split(
","):
82 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
83 flags=initConfigFlags()
84 from LArCalibProcessing.LArCalibConfigFlags
import addLArCalibFlags
85 addLArCalibFlags(flags, args.isSC)
87 flags.Input.RunNumbers=[args.run]
88 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
89 flags.GeoModel.AtlasVersion=defaultGeometryTags.RUN3
93 flags.Input.isMC=args.isMC
94 flags.LArCalib.isSC=args.isSC
96 flags.LAr.doAlign=
False
98 flags.LAr.OFCShapeFolder=args.ofcfolder
100 from AthenaConfiguration.Enums
import LHCPeriod
101 if flags.Input.RunNumbers[0] < 222222:
103 flags.GeoModel.Run=LHCPeriod.Run1
104 flags.IOVDb.DatabaseInstance=
"OFLP200" if flags.Input.isMC
else "COMP200"
106 flags.GeoModel.Run=LHCPeriod.Run2
107 flags.IOVDb.DatabaseInstance=
"OFLP200" if flags.Input.isMC
else "CONDBR2"
110 flags.IOVDb.GlobalTag=args.dbtag
111 elif flags.Input.isMC:
112 flags.IOVDb.GlobalTag=
"OFLCOND-MC16-SDR-20"
113 elif flags.IOVDb.DatabaseInstance ==
"COMP200":
114 flags.IOVDb.GlobalTag=
"COMCOND-BLKPA-RUN1-09"
116 flags.IOVDb.GlobalTag=
"CONDBR2-BLKPA-2026-01"
118 flags.IOVDb.GlobalTag=
"CONDBR2-ES1PA-2026-01"
120 flags.Exec.OutputLevel=args.olevel
121 flags.Debug.DumpCondStore=
True
122 flags.Debug.DumpDetStore=
True
125 flags.IOVDb.SqliteInput=args.sqlite
126 flags.IOVDb.SqliteFolders=tuple(flds)
127 if len(objects)!=len(objectsOnl):
128 flags.IOVDb.DBConnection=
"COOLOFL_LAR/CONDBR2"
130 if "fSampl" in objects:
131 flags.Overlay.DataOverlay=
True
135 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
136 cfg=MainServicesCfg(flags)
139 from McEventSelector.McEventSelectorConfig
import McEventSelectorCfg
140 cfg.merge(McEventSelectorCfg(flags,
143 InitialTimeStamp = 0,
144 TimeStampInterval = 1))
147 if "fSampl" in objects:
148 from IOVDbSvc.IOVDbSvcConfig
import addOverride
149 cfg.merge(addOverride(flags,
"/LAR/ElecCalibMC/fSampl",
"LARElecCalibMCfSampl-G496-19213-FTFP_BERT_BIRK"))
152 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
153 cfg.merge(LArGMCfg(flags))
155 if flags.LArCalib.isSC:
157 from LArCabling.LArCablingConfig
import LArOnOffIdMappingSCCfg, LArCalibIdMappingSCCfg, LArLATOMEMappingCfg
158 cfg.merge(LArOnOffIdMappingSCCfg(flags))
159 if not flags.Input.isMC:
160 cfg.merge(LArCalibIdMappingSCCfg(flags))
161 cfg.merge(LArLATOMEMappingCfg(flags))
163 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBSCCfg
164 cfg.merge(LArElecCalibDBSCCfg(flags,objectsOnl))
167 from LArCabling.LArCablingConfig
import LArOnOffIdMappingCfg, LArCalibIdMappingCfg
168 cfg.merge(LArOnOffIdMappingCfg(flags))
169 cfg.merge(LArCalibIdMappingCfg(flags))
171 from LArConfiguration.LArElecCalibDBConfig
import LArElecCalibDBCfg
172 cfg.merge(LArElecCalibDBCfg(flags,objectsOnl))
174 from LArBadChannelTool.LArBadChannelConfig
import LArBadChannelCfg
175 bchtag =
"LARBadChannelsBadChannelsSC-RUN3-UPD1-00" if flags.LArCalib.isSC
else None
176 cfg.merge(LArBadChannelCfg(flags, tag=bchtag, isSC=flags.LArCalib.isSC))
178 bcKey =
"LArBadChannelSC" if flags.LArCalib.isSC
else "LArBadChannel"
180 if "Pedestal" in objects:
181 ckey =
"LArPedestalSC" if flags.LArCalib.isSC
else "LArPedestal"
182 cfg.addEventAlgo(CompFactory.LArPedestals2Ntuple(ContainerKey = ckey,
183 AddFEBTempInfo =
False,
185 isSC = flags.LArCalib.isSC,
189 if "AutoCorr" in objects:
190 from IOVDbSvc.IOVDbSvcConfig
import addFolders
191 if flags.LArCalib.isSC:
192 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOflSC/AutoCorrs/AutoCorr',modifiers=
'<key>LArAutoCorrSC</key>',className=
'LArAutoCorrComplete'))
195 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr',tag=
"".join(
'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr'.
split(
'/')) + args.ftag))
197 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/AutoCorr',className=
'LArAutoCorrComplete'))
198 ckey=
"LArAutoCorrSC" if flags.LArCalib.isSC
else "LArAutoCorr"
199 cfg.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey =
"LArAutoCorrSym" if flags.Input.isMC
else ckey,
200 AddFEBTempInfo =
False,
202 isSC = flags.LArCalib.isSC,
203 ApplyCorrection =
True,
209 if "PhysAutoCorr" in objects:
210 from IOVDbSvc.IOVDbSvcConfig
import addFolders
211 if flags.LArCalib.isSC:
212 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOflSC/AutoCorrs/PhysicsAutoCorr',modifiers=
'<key>LArAutoCorrSC</key>',className=
'LArAutoCorrComplete'))
215 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr',tag=
"".join(
'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr'.
split(
'/')) + args.ftag))
217 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOfl/AutoCorrs/PhysicsAutoCorr',className=
'LArAutoCorrComplete'))
218 ckey=
"LArPhysAutoCorrSC" if flags.LArCalib.isSC
else "LArPhysAutoCorr"
219 cfg.addEventAlgo(CompFactory.LArAutoCorr2Ntuple(ContainerKey = ckey,
220 AddFEBTempInfo =
False,
222 isSC = flags.LArCalib.isSC,
223 ApplyCorrection =
not flags.Input.isMC,
224 AddCorrUndo =
not flags.Input.isMC,
229 if "Ramp" in objects:
230 ckey =
"LArRampSC" if flags.LArCalib.isSC
else "LArRamp"
232 from IOVDbSvc.IOVDbSvcConfig
import addFolders
233 if flags.LArCalib.isSC:
234 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOflSC/Ramps/RampLinea',modifiers=
'<key>LArRampSC</key>',className=
'LArRampComplete'))
236 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOfl/Ramps/RampLinea',className=
'LArRampComplete'))
237 cfg.addEventAlgo(CompFactory.LArRamps2Ntuple(RampKey=
"LArRampSym" if flags.Input.isMC
else ckey,
238 AddFEBTempInfo =
False,
240 isSC = flags.LArCalib.isSC,
248 from IOVDbSvc.IOVDbSvcConfig
import addFolders
252 cfg.merge(addFolders(flags,fld,tag=
"".join(fld.split(
'/')) + args.ftag))
254 cfg.merge(addFolders(flags,fld))
256 ntname=
'OFC' if '1phase' in fld
else 'OFC_1ns'
259 ckey =
"LArOFCSC" if flags.LArCalib.isSC
else "LArOFC"
261 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple(AddFEBTempInfo =
False,
264 isSC = flags.LArCalib.isSC,
268 if "OFCCali" in objects:
270 from IOVDbSvc.IOVDbSvcConfig
import addFolders
274 cfg.merge(addFolders(flags,fld,tag=
"".join(foldername.split(
'/')) + args.ftag))
276 cfg.merge(addFolders(flags,fld))
277 ckey=
'LArOFC' if '1phase' in fld
else 'LArOFC'
280 ckey =
"LArOFCSCCali" if flags.LArCalib.isSC
else "LArOFCCali"
281 fldr =
"/LAR/ElecCalibFlatSC/OFCCali" if flags.LArCalib.isSC
else "/LAR/ElecCalibFlat/OFCCali"
282 dbString =
"<db>sqlite://;schema="+args.sqlite+
";dbname=CONDBR2" if args.sqlite
else "<db>COOLONL_LAR/CONDBR2</db>"
283 from IOVDbSvc.IOVDbSvcConfig
import addFolders
284 cfg.merge(addFolders(flags,fldr,detDb=dbString,className=
"CondAttrListCollection"))
285 LArOFCSCCondAlg = CompFactory.getComp(
"LArFlatConditionsAlg<LArOFCSC>")(
"LArOFCSCCaliCondAlg")
286 LArOFCSCCondAlg.ReadKey=fldr
287 LArOFCSCCondAlg. WriteKey=ckey
288 cfg.addCondAlgo(LArOFCSCCondAlg)
290 cfg.addEventAlgo(CompFactory.LArOFC2Ntuple(
"LArOFC2NtupleCali",
291 AddFEBTempInfo =
False,
293 NtupleName=
"OFCCali" if args.ntname==
'' else args.ntname,
294 isSC = flags.LArCalib.isSC,
299 if "Shape" in objects:
301 from IOVDbSvc.IOVDbSvcConfig
import addFolders
305 cfg.merge(addFolders(flags,fld,tag=
"".join(fld.split(
'/')) + args.ftag))
307 cfg.merge(addFolders(flags,fld))
309 ntname=
'SHAPE' if '1phase' in fld
else 'SHAPE_1ns'
312 ckey =
"LArShapeSC" if flags.LArCalib.isSC
else "LArShape"
316 cfg.addEventAlgo(CompFactory.LArShape2Ntuple(ContainerKey=ckey,
317 AddFEBTempInfo =
False,
319 isSC = flags.LArCalib.isSC,
323 if "MphysOverMcal" in objects:
325 from IOVDbSvc.IOVDbSvcConfig
import addFolders
326 if flags.LArCalib.isSC:
327 print(
'offline, adding /LAR/ElecCalibOflSC/MphysOverMcal/RTM folder')
328 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOflSC/MphysOverMcal/RTM',modifiers=
'<key>LArMphysOverMcalSC</key>',className=
'LArMphysOverMcalComplete'))
330 cfg.merge(addFolders(flags,
'/LAR/ElecCalibOfl/MphysOverMcal/RTM',className=
'LArMphysOverMcalComplete'))
332 cfg.addEventAlgo(CompFactory.LArMphysOverMcal2Ntuple(ContainerKey =
"LArMphysOverMcalSC" if flags.LArCalib.isSC
else "LArMphysOverMcal",
333 AddFEBTempInfo =
False,
335 isSC = flags.LArCalib.isSC,
340 if "DAC2uA" in objects
or "uA2MeV" in objects:
341 uackey =
"LAruA2MeVSC" if flags.LArCalib.isSC
else "LAruA2MeV"
342 dackey =
"LArDAC2uASC" if flags.LArCalib.isSC
else "LArDAC2uA"
343 ua2MeVKey=
"LAruA2MeVSym" if flags.Input.isMC
else uackey
344 dac2uAKey=
"LArDAC2uASym" if flags.Input.isMC
else dackey
346 cfg.addEventAlgo(CompFactory.LAruA2MeV2Ntuple(uA2MeVKey=ua2MeVKey
if "uA2MeV" in objects
else "",
347 DAC2uAKey=dac2uAKey
if "DAC2uA" in objects
else "",
348 isSC = flags.LArCalib.isSC,
353 if "HVScaleCorr" in objects:
355 iovDbSvc=cfg.getService(
"IOVDbSvc")
356 for i
in range(0,len(iovDbSvc.Folders)):
357 if (iovDbSvc.Folders[i].
find(
"HVScaleCorr")>=0):
358 iovDbSvc.Folders[i]+=
"<key>/LAR/ElecCalibFlatSC/HVScaleCorr</key>"
360 cfg.addEventAlgo(CompFactory.LArHVScaleCorr2Ntuple(ContainerKey=
"LArHVScaleCorrSC" if flags.LArCalib.isSC
else "LArHVScaleCorr",
361 AddFEBTempInfo =
False,
362 isSC = flags.LArCalib.isSC,
366 if "fSampl" in objects:
367 cfg.addEventAlgo(CompFactory.LArfSampl2Ntuple(ContainerKey=
"LArfSamplSC" if flags.LArCalib.isSC
else "LArfSamplSym",
368 isSC=flags.LArCalib.isSC
371 if "CaliWave" in objects:
373 print(
'No CaliWave in MC')
375 fld =
"/LAR/ElecCalibOflSC/CaliWaves/CaliWave" if flags.LArCalib.isSC
else "/LAR/ElecCalibOfl/CaliWaves/CaliWave"
376 from IOVDbSvc.IOVDbSvcConfig
import addFolders
377 cfg.merge(addFolders(flags,fld,modifiers=
'<key>LArCaliWave</key><typeName>LArCaliWaveContainer</typeName>'))
378 cfg.addEventAlgo(CompFactory.LArCaliWaves2Ntuple(KeyList = [
"LArCaliWave"],
379 NtupleName =
"CALIWAVE",
380 AddFEBTempInfo =
False,
381 SaveDerivedInfo =
True,
385 isSC = flags.LArCalib.isSC,
389 if "PhysWave" in objects:
391 print(
'No PhysWave in MC yet')
393 fld =
"/LAR/ElecCalibOflSC/PhysWaves/RTM" if flags.LArCalib.isSC
else "/LAR/ElecCalibOfl/PhysWaves/RTM"
396 if 'PhysWave' in fld1:
401 from IOVDbSvc.IOVDbSvcConfig
import addOverride
402 cfg.merge(addOverride(flags,fld,args.ftag))
403 from IOVDbSvc.IOVDbSvcConfig
import addFolders
404 cfg.merge(addFolders(flags,fld,modifiers=
'<key>LArPhysWave</key>'))
405 cfg.addEventAlgo(CompFactory.LArPhysWaves2Ntuple(KeyList = [
"LArPhysWave"],
406 NtupleName =
"PHYSWAVE",
407 AddFEBTempInfo =
False,
408 SaveDerivedInfo =
True,
411 isSC = flags.LArCalib.isSC,
415 if "DSPThr" in objects:
416 from IOVDbSvc.IOVDbSvcConfig
import addFoldersSplitOnline
417 f1 =
"/LAR/Configuration/DSPThresholdFlat/Thresholds"
418 f2 =
"/LAR/NoiseOfl/DSPThresholds"
419 cfg.merge(addFoldersSplitOnline(flags,
"LAR",f1,f2,splitMC=
True))
420 cfg.addEventAlgo(CompFactory.LArDSPThresholds2Ntuple(DumpFlat=
True,FlatFolder=f2
if flags.Input.isMC
else f1))
422 if "DSPTemp" in objects:
423 from IOVDbSvc.IOVDbSvcConfig
import addFolders
424 cfg.merge(addFolders(flags,
"/LAR/Configuration/DSPThresholdFlat/Templates",tag=args.ftag,detDb=
"LAR_ONL"))
425 cfg.addEventAlgo(CompFactory.LArDSPThresholds2Ntuple(DumpFlat=
True,FlatFolder=
"/LAR/Configuration/DSPThresholdFlat/Templates",OffId=
True,RealGeometry=
True))
427 if "PileupAverage" in objects:
428 from IOVDbSvc.IOVDbSvcConfig
import addFolders
430 myfld=
"/LAR/ElecCalibMC/LArPileupAverage"
434 myfld=
"/LAR/ElecCalibOfl/LArPileupAverage"
437 myfld=
"/LAR/LArPileup/LArPileupAverage"
440 cfg.merge(addFolders(flags,myfld,detDb=mydb,className=
"LArMinBiasAverageMC",tag=
"".join(myfld.split(
'/')) + args.ftag))
442 cfg.merge(addFolders(flags,myfld,detDb=mydb,className=
"LArMinBiasAverageMC"))
443 LArMinBiasAverageSymAlg = CompFactory.getComp(
"LArSymConditionsAlg<LArMinBiasAverageMC, LArMinBiasAverageSym>")
444 LArMCSymCondAlg=CompFactory.LArMCSymCondAlg
447 cfg.addEventAlgo(CompFactory.LArMinBias2Ntuple(ContainerKey=
"",ContainerKeyAv=
"LArSymPileupAverage"))
449 if "MinBias" in objects:
451 from IOVDbSvc.IOVDbSvcConfig
import addFolders
452 if not flags.Input.isMC:
453 print(
"MinBias available only for MC")
454 elif flags.LArCalib.isSC:
455 myfld=
"/LAR/ElecCalibMCSC/MinBias"
456 myfldav=
"/LAR/ElecCalibMCSC/MinBiasAverage"
459 cfg.merge(addFolders(flags,myfld,detDb=mydb,className=
"CondAttrListCollection",tag=
"".join(myfld.split(
'/')) + args.ftag))
460 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className=
"CondAttrListCollection",tag=
"".join(myfld.split(
'/')) + args.ftag))
462 cfg.merge(addFolders(flags,myfld,detDb=mydb,className=
"CondAttrListCollection"))
463 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className=
"CondAttrListCollection"))
465 larMinBiasSCCondAlg = CompFactory.getComp(
"LArFlatConditionsAlg<LArMinBiasSC>")
466 larMinBiasAverageSCCondAlg = CompFactory.getComp(
"LArFlatConditionsAlg<LArMinBiasAverageSC>")
469 cfg.addEventAlgo(CompFactory.LArMinBias2Ntuple(ContainerKey=
"LArMinBiasSC",ContainerKeyAv=
"LArMinBiasAverageSC",isSC=
True, BadChanKey=
"LArBadChannelSC"))
471 myfld=
"/LAR/ElecCalibMC/MinBias"
472 myfldav=
"/LAR/ElecCalibMC/MinBiasAverage"
476 cfg.merge(addFolders(flags,myfld,detDb=mydb,className=
"LArMinBiasMC",tag=
"".join(myfld.split(
'/')) + args.ftag))
477 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className=
"LArMinBiasAverageMC",tag=
"".join(myfld.split(
'/')) + args.ftag))
479 cfg.merge(addFolders(flags,myfld,detDb=mydb,className=
"LArMinBiasMC"))
480 cfg.merge(addFolders(flags,myfldav,detDb=mydb,className=
"LArMinBiasAverageMC"))
481 LArMinBiasSymAlg = CompFactory.getComp(
"LArSymConditionsAlg<LArMinBiasMC, LArMinBiasSym>")
482 LArMinBiasAverageSymAlg = CompFactory.getComp(
"LArSymConditionsAlg<LArMinBiasAverageMC, LArMinBiasAverageSym>")
483 LArMCSymCondAlg=CompFactory.LArMCSymCondAlg
485 cfg.addCondAlgo(
LArMinBiasSymAlg(ReadKey=
"LArMinBias",WriteKey=
"LArSymMinBias"))
487 cfg.addEventAlgo(CompFactory.LArMinBias2Ntuple(ContainerKey=
"LArSymMinBias",ContainerKeyAv=
"LArSymMinBiasAverage"))
490 if os.path.exists(rootfile):
492 cfg.addService(CompFactory.NTupleSvc(Output = [
"FILE1 DATAFILE='"+rootfile+
"' OPT='NEW'" ]))
493 cfg.setAppProperty(
"HistogramPersistency",
"ROOT")
495 if args.dbtag
and 'CALIB' in args.dbtag:
496 cfg.getService(
"IOVDbSvc").DBInstance=
""
499 cfg.getService(
"PoolSvc").ReadCatalog+=[
"xmlcatalog_file:%s"%args.poolcat,]
void print(char *figname, TCanvas *c1)
std::string find(const std::string &s)
return a remapped string
std::vector< std::string > split(const std::string &s, const std::string &t=":")
larMinBiasAverageSCCondAlg