diff --git a/InnerDetector/InDetDetDescr/TRT_GeoModel/CMakeLists.txt b/InnerDetector/InDetDetDescr/TRT_GeoModel/CMakeLists.txt index bb2815df1d421d5bdb167682ee4986afaaae4763..e5575eaeb154df43282bbc4625c7f4a59f8410f8 100644 --- a/InnerDetector/InDetDetDescr/TRT_GeoModel/CMakeLists.txt +++ b/InnerDetector/InDetDetDescr/TRT_GeoModel/CMakeLists.txt @@ -39,3 +39,11 @@ atlas_add_component( TRT_GeoModel INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} LINK_LIBRARIES ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${GEOMODEL_LIBRARIES} AthenaKernel GeoModelUtilities GaudiKernel TRT_ConditionsServicesLib InDetGeoModelUtils InDetReadoutGeometry SGTools StoreGateLib SGtests AthenaPoolUtilities DetDescrConditions IdDictDetDescr TRT_ConditionsData InDetIdentifier ) +atlas_add_test( TRT_GMConfig_test + SCRIPT test/TRT_GMConfig_test.py + PROPERTIES TIMEOUT 300 ) + +# Install files from the package: +atlas_install_python_modules( python/*.py ) +atlas_install_scripts( test/*.py ) + diff --git a/InnerDetector/InDetDetDescr/TRT_GeoModel/python/TRT_GeoModelConfig.py b/InnerDetector/InDetDetDescr/TRT_GeoModel/python/TRT_GeoModelConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..80c868a2eb874e5eade1286a7b61a8679c0e620b --- /dev/null +++ b/InnerDetector/InDetDetDescr/TRT_GeoModel/python/TRT_GeoModelConfig.py @@ -0,0 +1,54 @@ +# +# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.AthConfigFlags import AthConfigFlags +from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline + +def TRT_GeometryCfg( flags ): + from AtlasGeoModel.GeoModelConfig import GeoModelCfg + acc,geoModelSvc = GeoModelCfg( flags ) + from GeometryDBSvc.GeometryDBSvcConf import GeometryDBSvc + acc.addService(GeometryDBSvc("InDetGeometryDBSvc")) + from TRT_GeoModel.TRT_GeoModelConf import TRT_DetectorTool + trtDetectorTool = TRT_DetectorTool() + trtDetectorTool.DoXenonArgonMixture = flags.Detector.SimulateTRT + trtDetectorTool.DoKryptonMixture = flags.Detector.SimulateTRT + trtDetectorTool.useDynamicAlignFolders = flags.GeoModel.Align.Dynamic + geoModelSvc.DetectorTools += [ trtDetectorTool ] + acc.addService(geoModelSvc) + # Inner Detector alignment + acc.merge(addFoldersSplitOnline(flags,"TRT","/TRT/Onl/Calib/DX","/TRT/Calib/DX")) + if flags.Detector.SimulateTRT: # revert to old style CondHandle in case of simulation + # Dead/Noisy Straw Lists + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Cond/Status","/TRT/Cond/Status")) + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Cond/StatusPermanent","/TRT/Cond/StatusPermanent")) + # Argon straw list + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Cond/StatusHT","/TRT/Cond/StatusHT")) + else: + # Dead/Noisy Straw Lists + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Cond/Status","/TRT/Cond/Status",className='TRTCond::StrawStatusMultChanContainer')) + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Cond/StatusPermanent","/TRT/Cond/StatusPermanent",className='TRTCond::StrawStatusMultChanContainer')) + # Argon straw list + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Cond/StatusHT","/TRT/Cond/StatusHT",className='TRTCond::StrawStatusMultChanContainer')) + # TRT Condition Algorithm + from TRT_ConditionsAlgs.TRT_ConditionsAlgsConf import TRTAlignCondAlg + TRTAlignCondAlg = TRTAlignCondAlg(name = "TRTAlignCondAlg", + UseDynamicFolders = flags.GeoModel.Align.Dynamic) + if flags.GeoModel.Align.Dynamic: + acc.merge(addFoldersSplitOnline(flags,"TRT","/TRT/Onl/AlignL1/TRT","/TRT/AlignL1/TRT",className="CondAttrListCollection")) + acc.merge(addFoldersSplitOnline(flags,"TRT","/TRT/Onl/AlignL2","/TRT/AlignL2",className="AlignableTransformContainer")) + TRTAlignCondAlg.ReadKeyDynamicGlobal = "/TRT/AlignL1/TRT" + TRTAlignCondAlg.ReadKeyDynamicRegular = "/TRT/AlignL2" + else: + if (not flags.Detector.SimulateTRT) or flags.Detector.OverlayTRT: + acc.merge(addFoldersSplitOnline(flags,"TRT","/TRT/Onl/Align","/TRT/Align",className="AlignableTransformContainer")) + else: + acc.merge(addFoldersSplitOnline(flags,"TRT","/TRT/Onl/Align","/TRT/Align")) + import os + if "AthSimulation_DIR" not in os.environ: # Protection for AthSimulation builds + if (not flags.Detector.SimulateTRT) or flags.Detector.OverlayTRT: + acc.addCondAlgo(TRTAlignCondAlg) + + return acc diff --git a/InnerDetector/InDetDetDescr/TRT_GeoModel/test/TRT_GMConfig_test.py b/InnerDetector/InDetDetDescr/TRT_GeoModel/test/TRT_GMConfig_test.py new file mode 100755 index 0000000000000000000000000000000000000000..4bd3f95734a230d6a8488ad479d154c80fe13457 --- /dev/null +++ b/InnerDetector/InDetDetDescr/TRT_GeoModel/test/TRT_GMConfig_test.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +"""Run tests on TRT_GeoModel configuration + +Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +""" +if __name__ == "__main__": + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior=1 + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from AthenaConfiguration.TestDefaults import defaultTestFiles + + ConfigFlags.Input.Files = defaultTestFiles.HITS + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16" + ConfigFlags.Detector.SimulatePixel = False + ConfigFlags.Detector.SimulateSCT = False + ConfigFlags.Detector.SimulateTRT = False + ConfigFlags.GeoModel.Align.Dynamic = False + ConfigFlags.lock() + + from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + from TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg + acc = TRT_GeometryCfg(ConfigFlags) + f=open('TRT_GeometryCfg.pkl','w') + acc.store(f) + f.close()