ATLAS Offline Software
MuonCablingConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 
6 def NRPCCablingConfigCfg(flags, name = "MuonNRPC_CablingAlg", **kwargs):
7  result = ComponentAccumulator()
8  if not flags.Muon.enableNRPC:
9  return result
10 
11 
12  from IOVDbSvc.IOVDbSvcConfig import addFolders
13  dbName = 'RPC_OFL' if flags.Input.isMC else 'RPC'
14  cablingFolder = "/RPC/NCABLING/JSON" if flags.Input.isMC else "/RPC/Onl/NCABLING/JSON"
15  cablingTag = "RpcNcablingJson-RUN3-02"
16  result.merge(addFolders(flags, [cablingFolder], detDb=dbName, className='CondAttrListCollection', tag=cablingTag))
17 
18 
19  NRPCCablingAlg = CompFactory.MuonNRPC_CablingAlg(name, **kwargs)
20  NRPCCablingAlg.MapFolders = cablingFolder
21 
22  result.addCondAlgo( NRPCCablingAlg, primary= True)
23  return result
24 
25 
27  acc = ComponentAccumulator()
28  if not flags.Detector.GeometryRPC: return acc
29  acc.merge(NRPCCablingConfigCfg(flags))
30 
31  dbName = 'RPC_OFL' if flags.Input.isMC else 'RPC'
32  dbRepo="MuonRPC_Cabling/ATLAS.data"
33  rpcCabMap="/RPC/CABLING/MAP_SCHEMA"
34  rpcCabMapCorr="/RPC/CABLING/MAP_SCHEMA_CORR"
35  rpcTrigEta="/RPC/TRIGGER/CM_THR_ETA"
36  rpcTrigPhi="/RPC/TRIGGER/CM_THR_PHI"
37 
38  from IOVDbSvc.IOVDbSvcConfig import addFolders
39  acc.merge(addFolders(flags, [rpcCabMap,rpcCabMapCorr], dbName, className='CondAttrListCollection' ))
40 
41  acc.merge(addFolders(flags, [rpcTrigEta,rpcTrigPhi], dbName, className='CondAttrListCollection'))
42 
43  RpcCablingCondAlg=CompFactory.RpcCablingCondAlg
44  RpcCablingAlg = RpcCablingCondAlg("RpcCablingCondAlg",DatabaseRepository=dbRepo)
45  acc.addCondAlgo( RpcCablingAlg )
46 
47  return acc
48 
49 
51  acc = ComponentAccumulator()
52 
53  filename = 'ASD2PP_diff_12_OFL.db' if flags.Input.isMC else 'ASD2PP_diff_12_ONL.db'
54  acc.setPrivateTools(CompFactory.TGCCablingDbTool(name = "TGCCablingDbTool",
55  filename_ASD2PP_DIFF_12 = filename))
56 
57  return acc
58 
59 
61  acc = ComponentAccumulator()
62 
63  svc = CompFactory.MuonTGC_CablingSvc()
64  tool = acc.popToolsAndMerge(TGCCablingDbToolCfg(flags))
65  # The same tool is used as a public tool by TGCCableASDToPP and a
66  # private tool by MuonTGC_CablingSvc - not great...
67  acc.addPublicTool(tool)
68  svc.TGCCablingDbTool = tool
69  acc.addService(svc, primary = True)
70 
71  return acc
72 
73 
75  acc = ComponentAccumulator()
76  if not flags.Detector.GeometryTGC: return acc
77 
78  # No ServiceHandle in TGCCablingServerSvc
79  acc.merge(MuonTGC_CablingSvcCfg(flags))
80 
81  acc.addService( CompFactory.Muon.TGCCablingServerSvc(), primary=True )
82 
83  from IOVDbSvc.IOVDbSvcConfig import addFolders
84  dbName = 'TGC_OFL' if flags.Input.isMC else 'TGC'
85  acc.merge(addFolders(flags, '/TGC/CABLING/MAP_SCHEMA', dbName))
86 
87  return acc
88 
89 # This should be checked by experts since I just wrote it based on
90 # athena/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCablingConfig.py
91 def MDTCablingConfigCfg(flags, name = "MuonMDT_CablingAlg", **kwargs):
92  acc = ComponentAccumulator()
93  from AthenaConfiguration.Enums import LHCPeriod
94  kwargs.setdefault("isRun3", flags.GeoModel.Run >= LHCPeriod.Run3 )
95  MDTCablingAlg = CompFactory.MuonMDT_CablingAlg(name, **kwargs)
96 
97  from IOVDbSvc.IOVDbSvcConfig import addFolders
98  if flags.Input.isMC is True:
99  MDTCablingAlg.MapFolders = "/MDT/Ofl/CABLING/MAP_SCHEMA"
100  MDTCablingAlg.MezzanineFolders = "/MDT/Ofl/CABLING/MEZZANINE_SCHEMA"
101  acc.merge( addFolders( flags, ["/MDT/Ofl/CABLING/MAP_SCHEMA",
102  "/MDT/Ofl/CABLING/MEZZANINE_SCHEMA"], 'MDT_OFL', className="CondAttrListCollection") )
103  else:
104  MDTCablingAlg.MapFolders = "/MDT/CABLING/MAP_SCHEMA"
105  MDTCablingAlg.MezzanineFolders = "/MDT/CABLING/MEZZANINE_SCHEMA"
106  acc.merge( addFolders( flags, ["/MDT/CABLING/MAP_SCHEMA",
107  "/MDT/CABLING/MEZZANINE_SCHEMA"], 'MDT', className="CondAttrListCollection") )
108 
109  acc.addCondAlgo( MDTCablingAlg, primary = True )
110 
111  return acc
112 
113 
114 # This should be checked by experts
116  acc = ComponentAccumulator()
117  if not flags.Detector.GeometryCSC: return acc
118  CSCcablingSvc=CompFactory.CSCcablingSvc
119  cscCablingSvc = CSCcablingSvc()
120 
121  acc.addService( cscCablingSvc, primary=True )
122 
123  return acc
124 
125 def NswCablingCfg(flags, name = "MuonNSW_CablingAlg", **kwargs):
126  result = ComponentAccumulator()
127 
128  if flags.Input.isMC or (not flags.Detector.GeometryMM and not flags.Detector.GeometrysTGC):
129  return result
130 
131  from IOVDbSvc.IOVDbSvcConfig import addFolders
132  cablingFolder = ["/MDT/MM/CABLING" if not flags.Common.isOnline else "/MDT/Onl/MM/CABLING"]
133  cablingTag = "MmCabling-FrontEndShifts-v1" if not flags.Common.isOnline else "MmOnlCabling-FrontEndShifts-v1"
134  kwargs.setdefault("CablingFolder",cablingFolder)
135  result.merge(addFolders(flags,kwargs["CablingFolder"], detDb=("MDT_OFL" if not flags.Common.isOnline else "MDT_ONL"), className="CondAttrListCollection", tag=cablingTag))
136 
137  the_alg = CompFactory.MuonNSW_CablingAlg(name, **kwargs)
138  result.addCondAlgo(the_alg, primary = True)
139  return result
140 #All the cabling configs together (convenience function)
142  acc = ComponentAccumulator()
143 
144  result = RPCCablingConfigCfg(flags)
145  acc.merge( result )
146 
147  result = TGCCablingConfigCfg(flags)
148  acc.merge( result )
149 
150  result = MDTCablingConfigCfg(flags)
151  acc.merge( result )
152 
153  result = CSCCablingConfigCfg(flags)
154  acc.merge( result )
155 
156  acc.merge(NswCablingCfg(flags))
157 
158  return acc
159 
160 if __name__ == '__main__':
161  from AthenaConfiguration.AllConfigFlags import initConfigFlags
162  from AthenaConfiguration.TestDefaults import defaultTestFiles, defaultGeometryTags
163  flags = initConfigFlags()
164  flags.Input.Files = defaultTestFiles.RAW_RUN2
165  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
166  flags.lock()
167 
169 
170  result = MuonCablingConfigCfg(flags)
171  acc.merge( result )
172 
173  f=open('MuonCabling.pkl','wb')
174  acc.store(f)
175  f.close()
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.MuonCablingConfig.NswCablingCfg
def NswCablingCfg(flags, name="MuonNSW_CablingAlg", **kwargs)
Definition: MuonCablingConfig.py:125
python.MuonCablingConfig.TGCCablingConfigCfg
def TGCCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:74
python.MuonCablingConfig.MDTCablingConfigCfg
def MDTCablingConfigCfg(flags, name="MuonMDT_CablingAlg", **kwargs)
Definition: MuonCablingConfig.py:91
CSCcablingSvc
Definition: CSCcablingSvc.h:23
python.MuonCablingConfig.NRPCCablingConfigCfg
def NRPCCablingConfigCfg(flags, name="MuonNRPC_CablingAlg", **kwargs)
Definition: MuonCablingConfig.py:6
RpcCablingCondAlg
Definition: RpcCablingCondAlg.h:20
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:72
python.MuonCablingConfig.TGCCablingDbToolCfg
def TGCCablingDbToolCfg(flags)
Definition: MuonCablingConfig.py:50
python.MuonCablingConfig.CSCCablingConfigCfg
def CSCCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:115
python.MuonCablingConfig.MuonCablingConfigCfg
def MuonCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:141
Trk::open
@ open
Definition: BinningType.h:40
python.MuonCablingConfig.RPCCablingConfigCfg
def RPCCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:26
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.MuonCablingConfig.MuonTGC_CablingSvcCfg
def MuonTGC_CablingSvcCfg(flags)
Definition: MuonCablingConfig.py:60