ATLAS Offline Software
LArBadChannelConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from LArCabling.LArCablingConfig import LArOnOffIdMappingCfg, LArOnOffIdMappingSCCfg
6 from IOVDbSvc.IOVDbSvcConfig import addFolders, addFoldersSplitOnline
7 
8 def LArBadChannelCfg(configFlags, tag=None, isSC=False):
9 
10 
11 
12  result=ComponentAccumulator()
13  if not isSC:
14  result.merge(LArOnOffIdMappingCfg(configFlags))
15  rekey="/LAR/BadChannels/BadChannels"
16  algname="LArBadChannelCondAlg"
17  else:
18  result.merge(LArOnOffIdMappingSCCfg(configFlags))
19  rekey="/LAR/BadChannels/BadChannelsSC"
20  algname="LArBadChannelCondSCAlg"
21 
22  if configFlags.Overlay.DataOverlay:
23  # TODO: move this in a better location
24  result.merge(addFolders(configFlags, "/LAR/BadChannels/BadChannels", "LAR_OFL", className="CondAttrListCollection", tag="LARBadChannelsBadChannels-HECAQ3Missing", db="OFLP200"))
25  elif configFlags.Input.isMC:
26  folder = "/LAR/BadChannels/BadChannelsSC" if isSC else "/LAR/BadChannels/BadChannels"
27  result.merge(addFolders(configFlags,folder,"LAR_OFL",tag=tag,
28  className="CondAttrListCollection"))
29  else:
30  if not isSC:
31  result.merge(addFoldersSplitOnline(configFlags,"LAR","/LAR/BadChannels/BadChannels",
32  f"/LAR/BadChannelsOfl/BadChannels<key>{rekey}</key>",tag=tag,
33  className="CondAttrListCollection"))
34  else :
35  result.merge(addFolders(configFlags,"/LAR/BadChannels/BadChannelsSC",
36  "LAR_ONL",tag=tag,
37  className="CondAttrListCollection"))
38  theLArBadChannelCondAlgo=CompFactory.LArBadChannelCondAlg(name=algname,ReadKey=rekey,isSC=isSC)
39  if isSC:
40  theLArBadChannelCondAlgo.WriteKey="LArBadChannelSC"
41  theLArBadChannelCondAlgo.CablingKey="LArOnOffIdMapSC"
42  result.addCondAlgo(theLArBadChannelCondAlgo)
43  return result
44 
45 
46 def LArBadFebCfg(configFlags, tag=None):
47  result=ComponentAccumulator()
48  rekey="/LAR/BadChannels/MissingFEBs"
49 
50  if configFlags.Input.isMC:
51  result.merge(addFolders(configFlags,"/LAR/BadChannels/MissingFEBs","LAR_OFL",tag=tag,
52  className="AthenaAttributeList"))
53  else:
54  result.merge(addFoldersSplitOnline(configFlags,"LAR","/LAR/BadChannels/MissingFEBs",
55  f"/LAR/BadChannelsOfl/MissingFEBs<key>{rekey}</key>",tag=tag,
56  className="AthenaAttributeList"))
57  result.addCondAlgo(CompFactory.LArBadFebCondAlg(ReadKey=rekey))
58  return result
59 
60 def LArMaskedSCCfg(configFlags):
61  result=ComponentAccumulator()
62  result.merge(LArOnOffIdMappingSCCfg(configFlags))
63  from IOVDbSvc.IOVDbSvcConfig import addFolders
64  result.merge(addFolders(configFlags,"/LAR/BadChannels/MaskedSC","LAR_ONL",
65  tag="LARBadChannelsMaskedSC-RUN3-UPD1-00",
66  className="CondAttrListCollection",
67  extensible=configFlags.Common.isOnline )) # when run online, need folder to be extensible to force reload each event
68  condAlgo = CompFactory.LArBadChannelCondAlg(name="MaskedSCCondAlg",ReadKey="/LAR/BadChannels/MaskedSC",isSC=True,
69  CablingKey="LArOnOffIdMapSC",WriteKey="LArMaskedSC")
70  result.addCondAlgo(condAlgo)
71  return result
72 
73 
74 if __name__=="__main__":
75 
76  from AthenaConfiguration.AllConfigFlags import initConfigFlags
77  from AthenaCommon.Logging import log
78  from AthenaCommon.Constants import DEBUG
79  log.setLevel(DEBUG)
80 
82  flags.Input.isMC = False
83  flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data17_13TeV.00330470.physics_Main.daq.RAW._lb0310._SFO-1._0001.data"]
84  flags.lock()
85 
87 
88  cfg.merge(LArBadChannelCfg(flags))
89  cfg.merge(LArBadFebCfg(flags))
90  f=open("LArBCCondAlgos.pkl","wb")
91  cfg.store(f)
92  f.close()
93 
LArCablingConfig.LArOnOffIdMappingSCCfg
def LArOnOffIdMappingSCCfg(configFlags)
Definition: LArCablingConfig.py:65
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.LArBadChannelConfig.LArBadChannelCfg
def LArBadChannelCfg(configFlags, tag=None, isSC=False)
Definition: LArBadChannelConfig.py:8
python.LArBadChannelConfig.LArBadFebCfg
def LArBadFebCfg(configFlags, tag=None)
Definition: LArBadChannelConfig.py:46
Constants
some useful constants -------------------------------------------------—
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:81
LArCablingConfig.LArOnOffIdMappingCfg
def LArOnOffIdMappingCfg(configFlags)
Definition: LArCablingConfig.py:62
python.LArBadChannelConfig.LArMaskedSCCfg
def LArMaskedSCCfg(configFlags)
Definition: LArBadChannelConfig.py:60
python.IOVDbSvcConfig.addFoldersSplitOnline
def addFoldersSplitOnline(flags, detDb, onlineFolders, offlineFolders, className=None, extensible=False, addMCString='_OFL', splitMC=False, tag=None, forceDb=None, modifiers='')
Definition: IOVDbSvcConfig.py:162
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19