ATLAS Offline Software
Loading...
Searching...
No Matches
MuonCablingConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5
6def NRPCCablingConfigCfg(flags, name = "MuonNRPC_CablingAlg", **kwargs):
7 result = ComponentAccumulator()
8
9
10 kwargs.setdefault("JSONFile", "")
11 if len(kwargs["JSONFile"]) == 0:
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-09"
16 from AthenaConfiguration.Enums import LHCPeriod
17 if flags.Muon.usePhaseIIGeoSetup:
18 if flags.GeoModel.Run <= LHCPeriod.Run3:
19 if flags.Input.isMC:
20 cablingTag = "RpcNcablingJson-RUN3-FantasyCabling-5"
21 else:
22 cablingTag = "RpcNcablingJson-RUN3-FantasyHybridCabling-1"
23 elif flags.Input.isMC: #Run4 MC
24 cablingTag = "RpcNcablingJson-RUN4-FantasyCabling-8"
25 result.merge(addFolders(flags, [cablingFolder], detDb=dbName, className='CondAttrListCollection', tag=cablingTag))
26 kwargs.setdefault("MapFolders", cablingFolder)
27
28
29 NRPCCablingAlg = CompFactory.Muon.NRpcCablingAlg(name, **kwargs)
30
31 result.addCondAlgo( NRPCCablingAlg, primary= True)
32 return result
33
34
36 acc = ComponentAccumulator()
37 if not flags.Detector.GeometryRPC: return acc
38 if flags.Muon.enableNRPC:
39 acc.merge(NRPCCablingConfigCfg(flags))
40 acc.merge(RPCLegacyCablingConfigCfg(flags))
41 return acc
42
44 acc = ComponentAccumulator()
45 dbName = 'RPC_OFL' if flags.Input.isMC else 'RPC'
46 dbRepo="MuonRPC_Cabling/ATLAS.data"
47 rpcCabMap="/RPC/CABLING/MAP_SCHEMA"
48 rpcCabMapCorr="/RPC/CABLING/MAP_SCHEMA_CORR"
49 rpcTrigEta="/RPC/TRIGGER/CM_THR_ETA"
50 rpcTrigPhi="/RPC/TRIGGER/CM_THR_PHI"
51
52 from IOVDbSvc.IOVDbSvcConfig import addFolders
53 acc.merge(addFolders(flags, [rpcCabMap,rpcCabMapCorr], dbName, className='CondAttrListCollection' ))
54
55 acc.merge(addFolders(flags, [rpcTrigEta,rpcTrigPhi], dbName, className='CondAttrListCollection'))
56
57 RpcCablingCondAlg=CompFactory.RpcCablingCondAlg
58 RpcCablingAlg = RpcCablingCondAlg("RpcCablingCondAlg",DatabaseRepository=dbRepo)
59 acc.addCondAlgo( RpcCablingAlg )
60
61 return acc
62
63
64def TGCCablingConfigCfg(flags, name="TgcCablingCondAlg", **kwargs):
65 acc = ComponentAccumulator()
66 if not flags.Detector.GeometryTGC: return acc
67
68 from AthenaConfiguration.Enums import LHCPeriod
69 kwargs.setdefault("isRun4", flags.GeoModel.Run > LHCPeriod.Run3)
70 kwargs.setdefault("databaseASDtoPPdiff", 'ASD2PP_diff_12_OFL.db' if flags.Input.isMC else 'ASD2PP_diff_12_ONL.db')
71 the_alg = CompFactory.Muon.TgcCablingCondAlg(name, **kwargs)
72 acc.addCondAlgo(the_alg, primary = True)
73 return acc
74
75# This should be checked by experts since I just wrote it based on
76# athena/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCablingConfig.py
77def MDTCablingConfigCfg(flags, name = "MuonMDT_CablingAlg", **kwargs):
78 acc = ComponentAccumulator()
79 if not flags.Detector.GeometryMDT: return acc
80 from AthenaConfiguration.Enums import LHCPeriod
81
82 kwargs.setdefault("UseJSONFormat", flags.Muon.usePhaseIIGeoSetup and \
83 flags.GeoModel.Run >= LHCPeriod.Run4)
84
85 kwargs.setdefault("MezzanineJSON", "")
86 kwargs.setdefault("CablingJSON", "")
87
88 kwargs.setdefault("isRun3", flags.GeoModel.Run >= LHCPeriod.Run3 )
89 from IOVDbSvc.IOVDbSvcConfig import addFolders
90 if len(kwargs["MezzanineJSON"]) == 0 and len(kwargs["CablingJSON"]) == 0:
91 if flags.Input.isMC is True:
92 dbTagMezz = None
93 dbTagSchema = None
94 if flags.Muon.usePhaseIIGeoSetup and \
95 flags.GeoModel.Run >= LHCPeriod.Run4:
96 dbTagMezz = "MDTMezMapSchemaJSON_RUN4BestKnowledge_v1"
97 dbTagSchema = "MDTCablingMapSchemaJSON_RUN4BestKnowledge_v1"
98 elif flags.GeoModel.Run >= LHCPeriod.Run4:
99 dbTagSchema = "MDTOflCablingMapSchema_RUN124_MC15_02"
100 dbTagMezz = "MDTOflCablingMezzanineSchema_RUN124_MC15_02"
101 if kwargs["UseJSONFormat"]:
102 kwargs.setdefault("MapFolders", "/MDT/CABLING/MAP_SCHEMA_JSON")
103 kwargs.setdefault("MezzanineFolders", "/MDT/CABLING/MEZZANINE_SCHEMA_JSON")
104 else:
105 kwargs.setdefault("MapFolders", "/MDT/Ofl/CABLING/MAP_SCHEMA")
106 kwargs.setdefault("MezzanineFolders", "/MDT/Ofl/CABLING/MEZZANINE_SCHEMA")
107 acc.merge( addFolders( flags, [kwargs["MapFolders"]], 'MDT_OFL',
108 className="CondAttrListCollection", tag = dbTagSchema))
109 acc.merge( addFolders( flags, [kwargs["MezzanineFolders"]], 'MDT_OFL',
110 className="CondAttrListCollection", tag = dbTagMezz) )
111 else:
112 if kwargs["UseJSONFormat"]:
113 kwargs.setdefault("MapFolders", "/MDT/CABLING/MAP_SCHEMA_JSON")
114 kwargs.setdefault("MezzanineFolders", "/MDT/CABLING/MEZZANINE_SCHEMA_JSON")
115 else:
116 kwargs.setdefault("MapFolders", "/MDT/CABLING/MAP_SCHEMA")
117 kwargs.setdefault("MezzanineFolders", "/MDT/CABLING/MEZZANINE_SCHEMA")
118 acc.merge( addFolders( flags, [kwargs["MapFolders"], kwargs["MezzanineFolders"]], 'MDT',
119 className="CondAttrListCollection") )
120
121
122 MDTCablingAlg = CompFactory.MuonMDT_CablingAlg(name, **kwargs)
123 acc.addCondAlgo( MDTCablingAlg, primary = True )
124
125 return acc
126
127def MdtTwinTubeMapCondAlgCfg(flags, name="MdtTwinTubeCondAlg", **kwargs):
128 result = ComponentAccumulator()
129 if not flags.Detector.GeometryMDT: return result
130 kwargs.setdefault("JSONFile","")
131 if(not kwargs["JSONFile"]):
132 kwargs.setdefault("FolderName","/MDT/TWINMAPPING")
133 from IOVDbSvc.IOVDbSvcConfig import addFolders
134 result.merge(addFolders(flags,[kwargs["FolderName"]], ("MDT_OFL" if flags.Input.isMC else "MDT"),className="CondAttrListCollection", tag="MDTTwinMapping_compactFormat_Run123"))
135 else:
136 kwargs["FolderName"] = ""
137
138 the_alg = CompFactory.Muon.TwinTubeMappingCondAlg(name, **kwargs)
139 result.addCondAlgo(the_alg, primary = True)
140 return result
141
142# This should be checked by experts
144 acc = ComponentAccumulator()
145 if not flags.Detector.GeometryCSC: return acc
146 CSCcablingSvc=CompFactory.CSCcablingSvc
147 cscCablingSvc = CSCcablingSvc()
148
149 acc.addService( cscCablingSvc, primary=True )
150
151 return acc
152
153def MmCablingCfg(flags, name = "MuonMm_CablingAlg", **kwargs):
154 result = ComponentAccumulator()
155
156 if flags.Input.isMC or (not flags.Detector.GeometryMM):
157 return result
158
159 from IOVDbSvc.IOVDbSvcConfig import addFolders
160 cablingFolder = ["/MDT/MM/CABLING" if not flags.Common.isOnline else "/MDT/Onl/MM/CABLING"]
161 kwargs.setdefault("CablingFolder",cablingFolder)
162 result.merge(addFolders(flags, kwargs["CablingFolder"], detDb=("MDT_OFL" if not flags.Common.isOnline else "MDT_ONL"), className="CondAttrListCollection"))
163
164 the_alg = CompFactory.MuonNSW_CablingAlg(name, **kwargs)
165 result.addCondAlgo(the_alg, primary = True)
166 return result
167
168def sTgcCablingCfg(flags, name = "MuonsTgc_CablingAlg", **kwargs):
169 result = ComponentAccumulator()
170
171 if flags.Input.isMC or (not flags.Detector.GeometrysTGC):
172 return result
173
174 from IOVDbSvc.IOVDbSvcConfig import addFolders
175 cablingFolder = ["/TGC/NSW/CABLING" if not flags.Common.isOnline else "/TGC/Onl/NSW/CABLING"]
176 kwargs.setdefault("CablingFolder",cablingFolder)
177 kwargs.setdefault("WriteKey",'stgcCablingMap')
178 result.merge(addFolders(flags, kwargs["CablingFolder"], detDb=("TGC_OFL" if not flags.Common.isOnline else "TGC_ONL"), className="CondAttrListCollection"))
179
180 the_alg = CompFactory.MuonNSW_CablingAlg(name, **kwargs)
181 result.addCondAlgo(the_alg, primary = True)
182 return result
183
184
185
186#All the cabling configs together (convenience function)
188 acc = ComponentAccumulator()
189 acc.merge( RPCCablingConfigCfg(flags) )
190 acc.merge( TGCCablingConfigCfg(flags) )
191
192 acc.merge( MDTCablingConfigCfg(flags) )
193
194 acc.merge( CSCCablingConfigCfg(flags) )
195
196 acc.merge(MmCablingCfg(flags))
197 acc.merge(sTgcCablingCfg(flags))
198
199 return acc
200
201if __name__ == '__main__':
202 from AthenaConfiguration.AllConfigFlags import initConfigFlags
203 from AthenaConfiguration.TestDefaults import defaultTestFiles, defaultGeometryTags
204 flags = initConfigFlags()
205 flags.Input.Files = defaultTestFiles.RAW_RUN2
206 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
207 flags.lock()
208
209 acc = ComponentAccumulator()
210
211 result = MuonCablingConfigCfg(flags)
212 acc.merge( result )
213
214 f=open('MuonCabling.pkl','wb')
215 acc.store(f)
216 f.close()
if(pathvar)
sTgcCablingCfg(flags, name="MuonsTgc_CablingAlg", **kwargs)
MDTCablingConfigCfg(flags, name="MuonMDT_CablingAlg", **kwargs)
NRPCCablingConfigCfg(flags, name="MuonNRPC_CablingAlg", **kwargs)
TGCCablingConfigCfg(flags, name="TgcCablingCondAlg", **kwargs)
MdtTwinTubeMapCondAlgCfg(flags, name="MdtTwinTubeCondAlg", **kwargs)
MmCablingCfg(flags, name="MuonMm_CablingAlg", **kwargs)