ATLAS Offline Software
Loading...
Searching...
No Matches
LArGMConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AtlasGeoModel.GeoModelConfig import GeoModelCfg
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.Enums import LHCPeriod, ProductionStep
6from IOVDbSvc.IOVDbSvcConfig import addFolders
7
8def 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
75if __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()
STL class.
LArGMCfg(flags)
Definition LArGMConfig.py:8