ATLAS Offline Software
LArGMConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AtlasGeoModel.GeoModelConfig import GeoModelCfg
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.Enums import LHCPeriod, ProductionStep
6 from IOVDbSvc.IOVDbSvcConfig import addFolders
7 
8 def LArGMCfg(flags):
9  result=GeoModelCfg(flags)
10 
11  tool = CompFactory.LArDetectorToolNV(ApplyAlignments=flags.LAr.doAlign, EnableMBTS=flags.Detector.GeometryMBTS)
12  if flags.Common.ProductionStep != ProductionStep.Simulation and flags.Common.ProductionStep != ProductionStep.FastChain:
13  tool.GeometryConfig = "RECO"
14 
15  result.getPrimary().DetectorTools += [ tool ]
16 
17  if flags.LAr.doAlign:
18  if flags.Input.isMC:
19  #Monte Carlo case:
20  if not flags.GeoModel.Align.LegacyConditionsAccess:
21  result.merge(addFolders(flags,"/LAR/Align","LAR_OFL",className="DetCondKeyTrans"))
22  result.merge(addFolders(flags,"/LAR/LArCellPositionShift","LAR_OFL",className="CaloRec::CaloCellPositionShift"))
23  else:
24  result.merge(addFolders(flags,"/LAR/Align","LAR_OFL"))
25  result.merge(addFolders(flags,"/LAR/LArCellPositionShift","LAR_OFL"))
26  else:
27  result.merge(addFolders(flags,"/LAR/Align","LAR_ONL",className="DetCondKeyTrans"))
28  result.merge(addFolders(flags,"/LAR/LArCellPositionShift","LAR_ONL",className="CaloRec::CaloCellPositionShift"))
29 
30  if not flags.GeoModel.Align.LegacyConditionsAccess:
31  result.addCondAlgo(CompFactory.LArAlignCondAlg())
32  result.addCondAlgo(CompFactory.CaloAlignCondAlg())
33  AthReadAlg_ExtraInputs = set()
34  caloCellsInInput = "CaloCellContainer" in [i.split('#')[0] for i in flags.Input.TypedCollections]
35  sCellsInInput = False
36  caloCellKeys = []
37  if caloCellsInInput:
38  from SGComps.AddressRemappingConfig import AddressRemappingCfg
39  result.merge(AddressRemappingCfg())
40 
41  caloCellKeys = [i.split('#')[1] for i in flags.Input.TypedCollections if "CaloCellContainer"==i.split('#')[0] ]
42  for key in caloCellKeys:
43  if key != 'AllCalo':
44  sCellsInInput = True
45 
46  AthReadAlg_ExtraInputs.add(('CaloDetDescrManager', 'ConditionStore+CaloDetDescrManager'))
47  if (flags.GeoModel.Run >= LHCPeriod.Run3 and flags.Detector.GeometryTile) or sCellsInInput:
48  # TODO: avoid depending on Tile in SuperCell alignment
49  from TileGeoModel.TileGMConfig import TileGMCfg
50  result.merge(TileGMCfg(flags))
51  result.addCondAlgo(CompFactory.CaloSuperCellAlignCondAlg())
52  AthReadAlg_ExtraInputs.add(('CaloSuperCellDetDescrManager', 'ConditionStore+CaloSuperCellDetDescrManager'))
53 
54 
55  if caloCellsInInput:
56  for key in caloCellKeys:
57  AthReadAlg=CompFactory.AthReadAlg
58  AthReadAlg_CaloCellCont = AthReadAlg (f'AthReadAlg_{key}',
59  Key = f'CaloCellContainer/{key}',
60  Aliases = [],
61  ExtraInputs = AthReadAlg_ExtraInputs)
62  result.addCondAlgo(AthReadAlg_CaloCellCont)
63  else:
64  # Build unalinged CaloDetDescrManager instance in the Condition Store
65  if not flags.GeoModel.Align.LegacyConditionsAccess:
66  result.addCondAlgo(CompFactory.CaloAlignCondAlg(LArAlignmentStore="",CaloCellPositionShiftFolder=""))
67  if flags.GeoModel.Run >= LHCPeriod.Run3 and flags.Detector.GeometryTile and flags.Common.ProductionStep != ProductionStep.Overlay:
68  # TODO: avoid depending on Tile in SuperCell alignment
69  from TileGeoModel.TileGMConfig import TileGMCfg
70  result.merge(TileGMCfg(flags))
71  result.addCondAlgo(CompFactory.CaloSuperCellAlignCondAlg())
72 
73  return result
74 
75 if __name__ == "__main__":
76  from AthenaConfiguration.AllConfigFlags import initConfigFlags
77  from AthenaConfiguration.TestDefaults import defaultTestFiles, defaultGeometryTags
78 
79  flags = initConfigFlags()
80  flags.Input.Files = defaultTestFiles.RAW_RUN2
81  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
82  flags.lock()
83 
84  acc = LArGMCfg(flags)
85  f=open('LArGMCfg.pkl','wb')
86  acc.store(f)
87  f.close()
AddressRemappingConfig.AddressRemappingCfg
def AddressRemappingCfg(renameMaps=[], overwriteMaps=[])
Definition: AddressRemappingConfig.py:10
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:72
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.GeoModelConfig.GeoModelCfg
def GeoModelCfg(flags)
Definition: GeoModelConfig.py:16
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7