diff --git a/LArCalorimeter/LArCafJobs/python/LArNoiseConfig.py b/LArCalorimeter/LArCafJobs/python/LArNoiseConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..8da1782b7c320863c4fb3eb5f7b1788869d2be47 --- /dev/null +++ b/LArCalorimeter/LArCafJobs/python/LArNoiseConfig.py @@ -0,0 +1,150 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + +def LArNoiseCfg(flags): + + result=ComponentAccumulator() + + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + result.merge(PoolReadCfg(flags)) + + from LArGeoAlgsNV.LArGMConfig import LArGMCfg + result.merge(LArGMCfg(flags)) + from TileGeoModel.TileGMConfig import TileGMCfg + result.merge(TileGMCfg(flags)) + + #Setup cabling + from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg + result.merge(LArOnOffIdMappingCfg(flags)) + # setup bad chan and missing febs + from LArBadChannelTool.LArBadChannelConfig import LArBadChannelCfg,LArBadFebCfg + LArBadChannelCfg(flags) + LArBadFebCfg(flags) + + from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg + result.merge(BunchCrossingCondAlgCfg(flags)) + + from LArCellRec.LArCollisionTimeConfig import LArCollisionTimeCfg + result.merge(LArCollisionTimeCfg(flags)) + + from AthenaMonitoring.TriggerInterface import getTrigDecisionTool + result.merge(getTrigDecisionTool(flags)) + result.getPublicTool("TrigDecisionTool").TrigConfigSvc="TrigConf::TrigConfigSvc/TrigConfigSvc" + + + noiseAlg=CompFactory.LArNoiseBursts("LArNoiseBursts") + noiseAlg.SigmaCut = flags.LArNoise.SigmaCut + noiseAlg.NumberOfBunchesInFront = flags.LArNoise.NumberOfBunchesInFront + noiseAlg.KeepOnlyCellID = flags.LArNoise.KeepOnlyCellID + result.addEventAlgo(noiseAlg) + + if (flags.LArNoise.outNtupLAr!=""): + result.addService(CompFactory.THistSvc(Output=["TTREE DATAFILE='"+flags.LArNoise.outNtupLAr+"' OPT='RECREATE'",])) + + if (flags.LArNoise.HECNoiseNtup!=""): + hecAlg=CompFactory.LArHECNoise("LArHECNoise") + hecAlg.MinDigitADC = flags.LArNoise.MinDigitADC + hecAlg.MaxDeltaT = flags.LArNoise.MaxDeltaT + from IOVDbSvc.IOVDbSvcConfig import addFolders + result.merge(addFolders(flags, "/LAR/ElecCalibFlat/Pedestal", "LAR_ONL", className="CondAttrListCollection", db="CONDBR2")) + LArPedestalCondAlg = CompFactory.getComp("LArFlatConditionsAlg") + result.addCondAlgo(LArPedestalCondAlg(ReadKey="/LAR/ElecCalibFlat/Pedestal", WriteKey="LArPedestal")) + + result.addEventAlgo(hecAlg) + if result.getService("THistSvc") is not None: + result.getService("THistSvc").Output += ["HEC DATAFILE='"+flags.LArNoise.HECNoiseNtup+"' OPT='RECREATE'",] + else: + result.addService(CompFactory.THistSvc(Output=["HEC DATAFILE='"+flags.LArNoise.HECNoiseNtup+"' OPT='RECREATE'",])) + + return result + +def LArNoiseFromRawCfg(flags): + + result=ComponentAccumulator() + result.debugMode = "trackCA trackEventAlgo" + + from LArByteStream.LArRawDataReadingConfig import LArRawDataReadingCfg + result.merge(LArRawDataReadingCfg(flags)) + + #Setup cabling + from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg + result.merge(LArOnOffIdMappingCfg(flags)) + # setup bad chan and missing febs + from LArBadChannelTool.LArBadChannelConfig import LArBadChannelCfg,LArBadFebCfg + LArBadChannelCfg(flags) + LArBadFebCfg(flags) + + from CaloRec.CaloRecoConfig import CaloRecoCfg + result.merge(CaloRecoCfg(flags)) + + from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg + result.merge(BunchCrossingCondAlgCfg(flags)) + + from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg + result.merge(CaloNoiseCondAlgCfg(flags,"totalNoise")) + + from LArROD.LArFebErrorSummaryMakerConfig import LArFebErrorSummaryMakerCfg + result.merge(LArFebErrorSummaryMakerCfg(flags)) + result.getEventAlgo("LArFebErrorSummaryMaker").CheckAllFEB=False + + if (flags.LArNoise.outNtupLAr != "" or flags.LArNoise.HECNoiseNtup!=""): + from LArCellRec.LArTimeVetoAlgConfig import LArTimeVetoAlgCfg + result.merge(LArTimeVetoAlgCfg(flags)) + + if (flags.LArNoise.outHistLAr == ""): + from AthenaMonitoring.TriggerInterface import getTrigDecisionTool + result.merge(getTrigDecisionTool(flags)) + result.getPublicTool("TrigDecisionTool").TrigConfigSvc="TrigConf::TrigConfigSvc/TrigConfigSvc" + + + if (flags.LArNoise.outNtupLAr != ""): + noiseAlg=CompFactory.LArNoiseBursts("LArNoiseBursts") + noiseAlg.SigmaCut = flags.LArNoise.SigmaCut + noiseAlg.NumberOfBunchesInFront = flags.LArNoise.NumberOfBunchesInFront + noiseAlg.KeepOnlyCellID = flags.LArNoise.KeepOnlyCellID + result.addEventAlgo(noiseAlg) + + result.addService(CompFactory.THistSvc(Output=["TTREE DATAFILE='"+flags.LArNoise.outNtupLAr+"' OPT='RECREATE'",])) + + if (flags.LArNoise.HECNoiseNtup!=""): + hecAlg=CompFactory.LArHECNoise("LArHECNoise") + hecAlg.MinDigitADC = flags.LArNoise.MinDigitADC + hecAlg.MaxDeltaT = flags.LArNoise.MaxDeltaT + from IOVDbSvc.IOVDbSvcConfig import addFolders + result.merge(addFolders(flags, "/LAR/ElecCalibFlat/Pedestal", "LAR_ONL", className="CondAttrListCollection", db="CONDBR2")) + LArPedestalCondAlg = CompFactory.getComp("LArFlatConditionsAlg") + result.addCondAlgo(LArPedestalCondAlg(ReadKey="/LAR/ElecCalibFlat/Pedestal", WriteKey="LArPedestal")) + + result.addEventAlgo(hecAlg) + if result.getService("THistSvc") is not None: + result.getService("THistSvc").Output += ["HEC DATAFILE='"+flags.LArNoise.HECNoiseNtup+"' OPT='RECREATE'",] + else: + result.addService(CompFactory.THistSvc(Output=["HEC DATAFILE='"+flags.LArNoise.HECNoiseNtup+"' OPT='RECREATE'",])) + + if (flags.LArNoise.outHistLAr != ""): + from LArCellRec.LArNoisyROSummaryConfig import LArNoisyROSummaryCfg + result.merge(LArNoisyROSummaryCfg(flags)) + from LArMonitoring.LArNoisyROMonAlg import LArNoisyROMonConfig + result.merge(LArNoisyROMonConfig(flags, inKey="LArNoisyROSummary")) + + return result + + + +if __name__=="__main__": + + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from LArNoiseFlags import addNoiseFlags + addNoiseFlags(ConfigFlags) + #ConfigFlags.Input.Files=['/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/MetadataTests/data18/data18_13TeV.00363979.physics_Main.daq.ESD.0750._0001.pool.root'] + ConfigFlags.Input.Files=['/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecExOnline/data16_13TeV.00302347.express_express.merge.RAW._lb0432._SFO-ALL._0001.1'] + + from AthenaConfiguration.MainServicesConfig import MainServicesCfg + + cfg=MainServicesCfg(ConfigFlags) + #cfg.merge(LArNoiseCfg(ConfigFlags)) + cfg.merge(LArNoiseFromRawCfg(ConfigFlags)) + + cfg.run(10) diff --git a/LArCalorimeter/LArCafJobs/python/LArNoiseFlags.py b/LArCalorimeter/LArCafJobs/python/LArNoiseFlags.py new file mode 100644 index 0000000000000000000000000000000000000000..90649ff51efecefac1669a78e40011e403dc5269 --- /dev/null +++ b/LArCalorimeter/LArCafJobs/python/LArNoiseFlags.py @@ -0,0 +1,19 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +def addNoiseFlags(flags): + + flags.Input.isMC=False + + flags.addFlag("LArNoise.outNtupLAr","") + flags.addFlag("LArNoise.outHistLAr","") + flags.addFlag("LArNoise.HECNoiseNtup","") + flags.addFlag("LArNoise.SigmaCut",3.0) + flags.addFlag("LArNoise.NumberOfBunchesInFront",30) + flags.addFlag("LArNoise.KeepOnlyCellID",False) + #these are for LArHECNoise alg: + flags.addFlag("LArNoise.MinDigitADC",20) + flags.addFlag("LArNoise.MaxDeltaT",5) + + + + diff --git a/LArCalorimeter/LArCafJobs/python/LArNoiseFromRawSkeleton.py b/LArCalorimeter/LArCafJobs/python/LArNoiseFromRawSkeleton.py new file mode 100644 index 0000000000000000000000000000000000000000..5eb8d9526ba2fa1eb421b494926dface52ea04dd --- /dev/null +++ b/LArCalorimeter/LArCafJobs/python/LArNoiseFromRawSkeleton.py @@ -0,0 +1,71 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +import sys + +from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags +from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude +from LArCafJobs.LArNoiseConfig import LArNoiseFromRawCfg +from AthenaConfiguration.MainServicesConfig import MainServicesCfg + + +def fromRunArgs(runArgs): + from AthenaConfiguration.AllConfigFlags import ConfigFlags + + from LArCafJobs.LArNoiseFlags import addNoiseFlags + addNoiseFlags(ConfigFlags) + + commonRunArgsToFlags(runArgs, ConfigFlags) + + processPreInclude(runArgs, ConfigFlags) + processPreExec(runArgs, ConfigFlags) + + ConfigFlags.Input.Files=runArgs.inputBSFile + + if hasattr(runArgs,"outputHIST_LARNOISEFile"): + ConfigFlags.LArNoise.outHistLAr=runArgs.outputHIST_LARNOISEFile + ConfigFlags.Output.HISTFileName =runArgs.outputHIST_LARNOISEFile + + if hasattr(runArgs,"outputNTUP_LARNOISEFile"): + ConfigFlags.LArNoise.outNtupLAr=runArgs.outputNTUP_LARNOISEFile + + if hasattr(runArgs,"outputNTUP_HECNOISEFile"): + ConfigFlags.LArNoise.HECNoiseNtup=runArgs.outputNTUP_HECNOISEFile + + if not hasattr(runArgs,"conditionsTag") or runArgs.conditionsTag=="CURRENT": + print("Resolving 'CURRENT' express conditions tag ...") + sys.path.append('/afs/cern.ch/user/a/atlcond/utils22/') + from CondUtilsLib.AtlCoolBKLib import resolveAlias + resolver=resolveAlias() + currentGlobalES=resolver.getCurrentES().replace("*","ST") + print("Found ",currentGlobalES) + ConfigFlags.IOVDb.GlobalTag=currentGlobalES + else: + ConfigFlags.IOVDb.GlobalTag=runArgs.conditionsTag + + if hasattr(runArgs,"skipEvents"): + ConfigFlags.Exec.SkipEvents=runArgs.skipEvents + + if hasattr(runArgs,"maxEvents"): + ConfigFlags.Exec.MaxEvents=runArgs.maxEvents + + ConfigFlags.Trigger.doID=False + ConfigFlags.Trigger.doMuon=False + ConfigFlags.Trigger.doLVL1=False + ConfigFlags.Trigger.doL1Topo=False + ConfigFlags.Trigger.doHLT=False + + ConfigFlags.Calo.Cell.doDeadCellCorr=True + + ConfigFlags.lock() + + cfg=MainServicesCfg(ConfigFlags) + cfg.merge(LArNoiseFromRawCfg(ConfigFlags)) + + #OFL LUMI tag not connected to ES tak, doing it here: + cfg.getService("IOVDbSvc").overrideTags+=['/TRIGGER/OFLLUMI/OflPrefLumiOflPrefLumi-RUN2-UPD4-12'] + processPostInclude(runArgs, ConfigFlags, cfg) + processPostExec(runArgs, ConfigFlags, cfg) + + # Run the final accumulator + sc = cfg.run() + sys.exit(not sc.isSuccess()) diff --git a/LArCalorimeter/LArCafJobs/python/LArNoiseSkeleton.py b/LArCalorimeter/LArCafJobs/python/LArNoiseSkeleton.py new file mode 100644 index 0000000000000000000000000000000000000000..2098132c8a102c00fcb8d32eb31620454d60d81b --- /dev/null +++ b/LArCalorimeter/LArCafJobs/python/LArNoiseSkeleton.py @@ -0,0 +1,58 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +import sys + +from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags +from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude +from LArCafJobs.LArNoiseConfig import LArNoiseCfg +from AthenaConfiguration.MainServicesConfig import MainServicesCfg + + +def fromRunArgs(runArgs): + from AthenaConfiguration.AllConfigFlags import ConfigFlags + + from LArCafJobs.LArNoiseFlags import addNoiseFlags + addNoiseFlags(ConfigFlags) + + commonRunArgsToFlags(runArgs, ConfigFlags) + + processPreInclude(runArgs, ConfigFlags) + processPreExec(runArgs, ConfigFlags) + + ConfigFlags.Input.Files=runArgs.inputESDFile + if hasattr(runArgs,"outputNTUP_LARNOISEFile"): + ConfigFlags.LArNoise.outNtupLAr=runArgs.outputNTUP_LARNOISEFile + + if hasattr(runArgs,"outputNTUP_HECNOISEFile"): + ConfigFlags.LArNoise.HECNoiseNtup=runArgs.outputNTUP_HECNOISEFile + + if not hasattr(runArgs,"conditionsTag") or runArgs.conditionsTag=="CURRENT": + print("Resolving 'CURRENT' express conditions tag ...") + sys.path.append('/afs/cern.ch/user/a/atlcond/utils22/') + from CondUtilsLib.AtlCoolBKLib import resolveAlias + resolver=resolveAlias() + currentGlobalES=resolver.getCurrentES().replace("*","ST") + print("Found ",currentGlobalES) + ConfigFlags.IOVDb.GlobalTag=currentGlobalES + else: + ConfigFlags.IOVDb.GlobalTag=runArgs.conditionsTag + + if hasattr(runArgs,"skipEvents"): + ConfigFlags.Exec.SkipEvents=runArgs.skipEvents + + if hasattr(runArgs,"maxEvents"): + ConfigFlags.Exec.MaxEvents=runArgs.maxEvents + + ConfigFlags.Trigger.doID=False + + ConfigFlags.lock() + + cfg=MainServicesCfg(ConfigFlags) + cfg.merge(LArNoiseCfg(ConfigFlags)) + + processPostInclude(runArgs, ConfigFlags, cfg) + processPostExec(runArgs, ConfigFlags, cfg) + + # Run the final accumulator + sc = cfg.run() + sys.exit(not sc.isSuccess()) diff --git a/LArCalorimeter/LArCafJobs/python/LArShapeDumperSkeleton.py b/LArCalorimeter/LArCafJobs/python/LArShapeDumperSkeleton.py index 499a270059eff92feaa1ad9450ef9ff22e648c80..0e48760082dd01df274998327becebec010915c8 100644 --- a/LArCalorimeter/LArCafJobs/python/LArShapeDumperSkeleton.py +++ b/LArCalorimeter/LArCafJobs/python/LArShapeDumperSkeleton.py @@ -26,6 +26,10 @@ def fromRunArgs(runArgs): if hasattr(runArgs,"outputNTUP_HECNOISEFile"): ConfigFlags.LArShapeDump.HECNoiseNtup=runArgs.outputNTUP_HECNOISEFile + #protection for LArPEB event: + ConfigFlags.Trigger.L1.doMuon=False + ConfigFlags.Trigger.L1.doCalo=False + ConfigFlags.Trigger.L1.doTopo=False ConfigFlags.lock() diff --git a/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_fromraw_tf.py b/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_fromraw_tf.py index 62d987e98c6da21b57fce38d6724b9d3b2d7c9db..b7887da5c155d71032b15e68509fcb18a9dfe98d 100755 --- a/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_fromraw_tf.py +++ b/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_fromraw_tf.py @@ -1,8 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -from __future__ import print_function +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration __doc__ = """JobTransform to run LAr Noise Burst jobs""" @@ -16,7 +14,8 @@ import PyJobTransforms.trfArgClasses as trfArgClasses if __name__ == '__main__': executorSet = set() - executorSet.add(athenaExecutor(name = 'LArNoiseBursts_from_raw', skeletonFile = 'LArCafJobs/skeleton.LArNoise_fromraw.py', + executorSet.add(athenaExecutor(name = 'LArNoiseBursts_from_raw', skeletonFile = None, + skeletonCA='LArCafJobs.LArNoiseFromRawSkeleton', substep = 'r2e', inData = ['BS',], outData = ['NTUP_LARNOISE','NTUP_HECNOISE','HIST_LARNOISE'])) trf = transform(executor = executorSet) @@ -36,15 +35,9 @@ if __name__ == '__main__': help='Output HECNoise file', group='Ntuple Files') trf.parser.add_argument('--outputHIST_LARNOISEFile', nargs='+', - type=trfArgClasses.argFactory(trfArgClasses.argHISTFile, io='output'), + type=trfArgClasses.argFactory(trfArgClasses.argHISTFile, io='output',countable=False), help='Output Noise hist file', group='Hist Files') trf.parseCmdLineArgs(sys.argv[1:]) - - trf.execute() - print ("DataDict:") - print (trf.dataDictionary) - - trf.generateReport() diff --git a/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_tf.py b/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_tf.py index 872b2369c792db7d61852fbcc6575408462f49dd..636b97395248e6ac1e7d5380f94e8e527f512dd9 100755 --- a/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_tf.py +++ b/LArCalorimeter/LArCafJobs/share/LArNoiseBursts_tf.py @@ -1,8 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -from __future__ import print_function +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration __doc__ = """JobTransform to run LAr Noise Burst jobs""" @@ -16,9 +14,8 @@ import PyJobTransforms.trfArgClasses as trfArgClasses if __name__ == '__main__': executorSet = set() - executorSet.add(athenaExecutor(name = 'LArNoiseBursts_from_raw', skeletonFile = 'LArCafJobs/skeleton.LArNoise.py', - substep = 'r2e', inData = ['BS',], outData = ['NTUP_LARNOISE','NTUP_HECNOISE'])) - executorSet.add(athenaExecutor(name = 'LArNoiseBursts', skeletonFile = 'LArCafJobs/skeleton.LArNoise.py', + executorSet.add(athenaExecutor(name = 'LArNoiseBursts', skeletonFile = None, + skeletonCA='LArCafJobs.LArNoiseSkeleton', substep = 'e2a', inData = ['ESD',], outData = ['NTUP_LARNOISE','NTUP_HECNOISE'])) trf = transform(executor = executorSet) @@ -28,10 +25,6 @@ if __name__ == '__main__': type=trfArgClasses.argFactory(trfArgClasses.argPOOLFile, io='input'), help='Input pool file', group='Reco Files') - trf.parser.add_argument('--inputBSFile', nargs='+', - type=trfArgClasses.argFactory(trfArgClasses.argPOOLFile, io='input'), - help='Input BS file', group='Reco Files') - trf.parser.add_argument('--outputNTUP_LARNOISEFile', nargs='+', type=trfArgClasses.argFactory(trfArgClasses.argNTUPFile, io='output'), help='Output LAr Noise Burst file', group='Ntuple Files') @@ -41,11 +34,5 @@ if __name__ == '__main__': help='Output HECNoise file', group='Ntuple Files') trf.parseCmdLineArgs(sys.argv[1:]) - - trf.execute() - print ("DataDict:") - print (trf.dataDictionary) - - trf.generateReport() diff --git a/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx b/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx index fd09a31192c91d97ce605879e5fc8cefb7cf1200..f2b6bec21ff6b6c648cc13dad8a5d22e500a080a 100644 --- a/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx +++ b/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx @@ -265,6 +265,7 @@ StatusCode LArNoiseBursts::initialize() { ATH_CHECK( m_cablingKey.initialize() ); ATH_CHECK( m_BCKey.initialize() ); ATH_CHECK( m_totalNoiseKey.initialize() ); + ATH_CHECK( m_bcDataKey.initialize() ); // Retrieve online ID helper const LArOnlineID* LArOnlineIDHelper = nullptr;