3 from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
    4 from AthenaConfiguration.ComponentFactory 
import CompFactory
 
    5 from AthenaConfiguration.AccumulatorCache 
import AccumulatorCache
 
    6 from AthenaConfiguration.Enums 
import ProductionStep
 
    7 from AtlasGeoModel.GeoModelConfig 
import GeoModelCfg
 
    8 from AthenaConfiguration.Enums 
import LHCPeriod
 
   12     trackingVolSvc = CompFactory.Trk.TrackingVolumesSvc(name=name, **kwargs)
 
   13     result.addService(trackingVolSvc, primary=
True)
 
   18     acc.addService( CompFactory.Muon.MuonIdHelperSvc(
"MuonIdHelperSvc",
 
   19         HasCSC=flags.Detector.GeometryCSC,
 
   20         HasSTGC=flags.Detector.GeometrysTGC,
 
   21         HasMM=flags.Detector.GeometryMM,
 
   22         HasMDT=flags.Detector.GeometryMDT,
 
   23         HasRPC=flags.Detector.GeometryRPC,
 
   24         HasTGC=flags.Detector.GeometryTGC), primary=
True )
 
   31     if flags.Muon.usePhaseIIGeoSetup:
 
   32         from MuonGeoModelR4.MuonGeoModelConfig 
import MuonGeoModelCfg 
as MuonGeoModelCfgR4
 
   33         result.merge(MuonGeoModelCfgR4(flags))
 
   34         from MuonGeoModelR4.MuonGeoModelConfig 
import MuonAlignStoreCfg
 
   36         if flags.Common.ProductionStep != ProductionStep.Simulation:
 
   37             from MuonGeometryCnv.MuonReadoutGeomCnvCfg 
import MuonReadoutGeometryCnvAlgCfg
 
   48     kwargs.setdefault(
"HasCSC", flags.Detector.GeometryCSC)
 
   49     kwargs.setdefault(
"HasSTgc", flags.Detector.GeometrysTGC)
 
   50     kwargs.setdefault(
"HasMM", flags.Detector.GeometryMM)
 
   52     kwargs.setdefault(
"UseConditionDb", flags.Muon.enableAlignment)
 
   53     kwargs.setdefault(
"UseAsciiConditionData", flags.Muon.enableAlignment)
 
   55     UseIlinesFromGM = 
False 
   56     EnableCscInternalAlignment = 
False 
   58     if flags.Muon.enableAlignment:
 
   59         if not flags.Input.isMC:
 
   60             kwargs.setdefault(
"BEENoShift", 
True)
 
   62         if flags.Muon.Align.UseILines 
and flags.Detector.GeometryCSC:
 
   63             if 'HLT' in flags.IOVDb.GlobalTag:
 
   65                 UseIlinesFromGM = 
True 
   66                 EnableCscInternalAlignment = 
False 
   69                 if (flags.Common.isOnline 
and not flags.Input.isMC):
 
   70                     EnableCscInternalAlignment = 
True 
   72                     UseIlinesFromGM = 
False 
   73                     EnableCscInternalAlignment =  
True 
   75     kwargs.setdefault(
"UseIlinesFromGM", UseIlinesFromGM)
 
   76     kwargs.setdefault(
"EnableCscInternalAlignment", EnableCscInternalAlignment)
 
   78     if not flags.GeoModel.SQLiteDB:
 
   80         AGDD2Geo = CompFactory.AGDDtoGeoSvc()
 
   81         muonAGDDTool = CompFactory.MuonAGDDTool(
"MuonSpectrometer", BuildNSW=
False)
 
   82         AGDD2Geo.Builders += [ muonAGDDTool ]
 
   83         if (flags.Detector.GeometrysTGC 
and flags.Detector.GeometryMM):
 
   84             nswAGDDTool = CompFactory.NSWAGDDTool(
"NewSmallWheel", Locked=
False)
 
   85             nswAGDDTool.Volumes = [
"NewSmallWheel"]
 
   86             nswAGDDTool.DefaultDetector = 
"Muon" 
   87             AGDD2Geo.Builders += [ nswAGDDTool ]
 
   90         acc.addService(AGDD2Geo, create=
True)
 
   95     detTool = CompFactory.MuonDetectorTool(name, **kwargs)
 
   96     acc.setPrivateTools(detTool)
 
  106     if flags.Muon.Align.UseAsBuilt:
 
  109         if(flags.Muon.Align.UsesTGCAsBuild):
 
  112     if not flags.Muon.Align.UseALines 
and not flags.Muon.Align.UseBLines:
 
  114     from IOVDbSvc.IOVDbSvcConfig 
import addFolders    
 
  116     onl = 
"/Onl" if ((flags.Common.isOnline 
or flags.IOVDb.GlobalTag.startswith(
"CONDBR2-HLTP")) 
and not flags.Input.isMC) 
else "" 
  117     ParlineFolders = [f
"/MUONALIGN{onl}/MDT/BARREL", 
 
  118                       f
"/MUONALIGN{onl}/MDT/ENDCAP/SIDEA",
 
  119                       f
"/MUONALIGN{onl}/MDT/ENDCAP/SIDEC", 
 
  120                       f
"/MUONALIGN{onl}/TGC/SIDEA",
 
  121                       f
"/MUONALIGN{onl}/TGC/SIDEC"]
 
  122     acc.merge(
addFolders( flags, ParlineFolders, 
'MUONALIGN' if len(onl) 
else 'MUONALIGN_OFL',  className=
'CondAttrListCollection'))
 
  125         ParlineFolders = [ x[ :x.find(onl)] + x[x.find(onl) + len(onl): ] 
for x 
in ParlineFolders]
 
  127     kwargs.setdefault(
"LoadALines", flags.Muon.Align.UseALines)
 
  128     kwargs.setdefault(
"LoadBLines", flags.Muon.Align.UseBLines)
 
  130     kwargs.setdefault(
"ParlineFolders", ParlineFolders)
 
  131     MuonAlign = CompFactory.MuonAlignmentCondAlg(name, **kwargs)
 
  132     acc.addCondAlgo(MuonAlign, primary = 
True)
 
  138     from IOVDbSvc.IOVDbSvcConfig 
import addFolders
 
  139     acc.merge(
addFolders(flags, 
"/MUONALIGN/ERRS", 
"MUONALIGN_OFL", className=
"CondAttrListCollection"))
 
  140     acc.addCondAlgo(CompFactory.MuonAlignmentErrorDbAlg(
"MuonAlignmentErrorDbAlg"))
 
  146     if flags.GeoModel.Run < LHCPeriod.Run3:
 
  148     kwargs.setdefault(
"MicroMegaJSON",
"")
 
  150     kwargs.setdefault(
"ReadMmAsBuiltParamsKey",
"/MUONALIGN/ASBUILTPARAMS/MM")
 
  153     from IOVDbSvc.IOVDbSvcConfig 
import addFolders
 
  154     if(
not (kwargs[
"MicroMegaJSON"] 
or not kwargs[
"ReadMmAsBuiltParamsKey"]) ) : 
 
  155         result.merge(
addFolders( flags, kwargs[
"ReadMmAsBuiltParamsKey"]  , 
'MUONALIGN_OFL', className=
'CondAttrListCollection'))
 
  156     the_alg = CompFactory.NswAsBuiltCondAlg(name, **kwargs)
 
  157     result.addCondAlgo(the_alg, primary = 
True)     
 
  163     if flags.GeoModel.Run < LHCPeriod.Run3 
or not flags.Muon.Align.UsesTGCAsBuild:
 
  165     kwargs.setdefault(
"readFromJSON",
"")
 
  166     if not kwargs[
"readFromJSON"]:
 
  167         kwargs.setdefault(
"ReadKey",
"/MUONALIGN/ASBUILTPARAMS/STGC")
 
  168         from IOVDbSvc.IOVDbSvcConfig 
import addFolders
 
  169         result.merge(
addFolders( flags, kwargs[
"ReadKey"], 
'MUONALIGN_OFL', className=
'CondAttrListCollection', tag = 
'MUONALIGN_STG_IntAl_alCons_noQL3_v01'))
 
  170     the_alg = CompFactory.sTGCAsBuiltCondAlg(name,**kwargs)
 
  171     result.addCondAlgo(the_alg, primary=
True)
 
  179     from IOVDbSvc.IOVDbSvcConfig 
import addFolders
 
  180     if "readFromJSON" not in kwargs 
or not kwargs[
"readFromJSON"]:
 
  181         result.merge(
addFolders( flags, 
'/MUONALIGN/MDT/ASBUILTPARAMS' , 
'MUONALIGN_OFL', className=
'CondAttrListCollection'))
 
  182     the_alg = CompFactory.MdtAsBuiltCondAlg(name = name, **kwargs)
 
  183     result.addCondAlgo(the_alg, primary = 
True)    
 
  188     if not flags.Muon.Align.UseILines: 
 
  190     from IOVDbSvc.IOVDbSvcConfig 
import addFolders
 
  191     if (flags.Common.isOnline 
and not flags.Input.isMC):
 
  192         result.merge(
addFolders( flags, [
'/MUONALIGN/Onl/CSC/ILINES'], 
'MUONALIGN', className=
'CondAttrListCollection'))
 
  194         result.merge(
addFolders( flags, [
'/MUONALIGN/CSC/ILINES'], 
'MUONALIGN_OFL', className=
'CondAttrListCollection'))
 
  196     the_alg = CompFactory.CscILinesCondAlg(name, **kwargs)
 
  197     result.addCondAlgo(the_alg, primary = 
True)
 
  206     kwargs.setdefault(
"applyMmPassivation", flags.Muon.applyMMPassivation)
 
  208     if kwargs[
"applyMmPassivation"]:
 
  209         from MuonConfig.MuonCondAlgConfig 
import NswPassivationDbAlgCfg
 
  211     if flags.Muon.enableAlignment:
 
  213     kwargs.setdefault(
"applyALines", flags.Muon.Align.UseALines)
 
  214     kwargs.setdefault(
"applyBLines", flags.Muon.Align.UseBLines)
 
  215     kwargs.setdefault(
"applyILines", flags.Muon.Align.UseILines)
 
  216     kwargs.setdefault(
"applyNswAsBuilt", len([alg 
for alg 
in result.getCondAlgos() 
if alg.name == 
"NswAsBuiltCondAlg"])>0)
 
  217     kwargs.setdefault(
"applysTGCAsBuilt", len([alg 
for alg 
in result.getCondAlgos() 
if alg.name == 
"sTGCAsBuiltCondAlg"])>0)
 
  218     kwargs.setdefault(
"applyMdtAsBuilt", len([alg 
for alg 
in result.getCondAlgos() 
if alg.name == 
"MdtAsBuiltCondAlg"])>0)
 
  222     MuonDetectorManagerCond = CompFactory.MuonDetectorCondAlg(name, **kwargs)
 
  224     result.addCondAlgo(MuonDetectorManagerCond, primary = 
True)
 
  230     geoModelSvc = result.getPrimaryAndMerge(
GeoModelCfg(flags))