From 09ffa7b38ac0a7fe3eef93bd2f64eee9af107043 Mon Sep 17 00:00:00 2001 From: Rupert Tombs <rt500@cam.ac.uk> Date: Mon, 29 Apr 2019 14:44:32 +0100 Subject: [PATCH] Split OutputStreamCfg item lists for each module Move all OutputStreamCfg use to relevant modules. Give each an XXX_ItemList() function to avoid wildcard use. Remove unused imports. Import OutputStreamCfg and correct flags symbol. Add with SCTSiPropertiesCondAlg with addCondAlgo. Introduce TRT with ComponentAccumulator Implement TRT digitization and test in new config style. Add this to the combined digitization test. Add pixel digitization back, though not yet updated. Update pixel to recent changes. Remove dead code PixelConfigCondAlg from PixelConditionsSummaryConfig. Remove its redundant test. Clean PixelDigitizationConfigNew to match. Comment out OutputStreamCfg features with FIXME tags Remove early test exit. Fix comment comment. Move PixelConditions algorithms to their own config files. Link PixelConditionsAlgorithms python. Correct merge order. Replace keyword arguments --- .../PixelConditionsAlgorithms/CMakeLists.txt | 2 +- .../python/PixelConditionsConfig.py | 101 +++++++++ .../PixelConditionsTools/CMakeLists.txt | 6 - .../python/PixelConditionsSummaryConfig.py | 14 +- .../test/PixelConditionsConfig_test.py | 25 --- .../python/SCT_SiPropertiesConfig.py | 2 +- .../python/BCM_DigitizationConfigNew.py | 10 +- .../test/BCM_DigitizationConfigNew_test.py | 7 - .../PixelDigitization/CMakeLists.txt | 4 + .../python/PixelDigitizationConfigNew.py | 209 ++++++++++++++++++ .../test/PixelDigitizationConfigNew_test.py | 53 +++++ .../python/SCT_DigitizationConfigNew.py | 7 + .../test/SCT_DigitizationConfigNew_test.py | 53 +---- .../TRT_Digitization/CMakeLists.txt | 4 + .../python/TRT_DigitizationConfigNew.py | 146 ++++++++++++ .../test/TRT_DigitizationConfigNew_test.py | 44 ++++ .../python/TRT_PAI_ProcessConfigNew.py | 21 ++ .../python/CSC_DigitizationConfigNew.py | 9 + .../test/CSC_DigitizationConfigNew_test.py | 8 - .../python/MDT_DigitizationConfigNew.py | 9 + .../test/MDT_DigitizationConfigNew_test.py | 7 - .../python/RPC_DigitizationConfigNew.py | 11 +- .../test/RPC_DigitizationConfigNew_test.py | 7 - .../python/TGC_DigitizationConfigNew.py | 13 +- .../test/TGC_DigitizationConfigNew_test.py | 7 - .../test/DigitizationConfigNew_test.py | 35 +-- 26 files changed, 665 insertions(+), 149 deletions(-) create mode 100644 InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/PixelConditionsConfig.py delete mode 100755 InnerDetector/InDetConditions/PixelConditionsTools/test/PixelConditionsConfig_test.py create mode 100644 InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py create mode 100755 InnerDetector/InDetDigitization/PixelDigitization/test/PixelDigitizationConfigNew_test.py create mode 100644 InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfigNew.py create mode 100755 InnerDetector/InDetDigitization/TRT_Digitization/test/TRT_DigitizationConfigNew_test.py create mode 100644 InnerDetector/InDetSimUtils/TRT_PAI_Process/python/TRT_PAI_ProcessConfigNew.py diff --git a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/CMakeLists.txt b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/CMakeLists.txt index 17cd376f639..6542ea727d5 100644 --- a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/CMakeLists.txt +++ b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/CMakeLists.txt @@ -56,5 +56,5 @@ atlas_add_component( PixelConditionsAlgorithms PixelCablingLib PixelConditionsAlgorithmsLib PathResolver ) # Install files from the package: -#atlas_install_joboptions( share/*.py ) +atlas_install_python_modules( python/*.py ) diff --git a/InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/PixelConditionsConfig.py b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/PixelConditionsConfig.py new file mode 100644 index 00000000000..3b6b18a75f5 --- /dev/null +++ b/InnerDetector/InDetConditions/PixelConditionsAlgorithms/python/PixelConditionsConfig.py @@ -0,0 +1,101 @@ +"""Define functions to configure Pixel conditions algorithms + +Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +""" +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from IOVDbSvc.IOVDbSvcConfig import addFolders +from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import ( + PixelConfigCondAlg, PixelOfflineCalibCondAlg, PixelChargeCalibCondAlg +) + +def PixelConfigCondAlgCfg(flags, name="PixelConfigCondAlg", **kwargs): + """Return a ComponentAccumulator with configured PixelConfigCondAlg""" + acc = ComponentAccumulator() + acc.merge(addFolders(flags, "/PIXEL/PixMapOverlay", "PIXEL_OFL", className="CondAttrListCollection")) + # FIXME commented properties are not currently accepted by PixelConfigCondAlg + CondArgs = {} + CondArgs.update( + BunchSpace=25.0, + UseCalibConditions=True, + #BarrelAnalogThreshold=[-1,-1,-1,-1], + BarrelToTThreshold=[-1, 5, 5, 5], + BarrelCrossTalk=[0.06,0.06,0.06,0.06], + BarrelThermalNoise=[160.0,160.0,160.0,160.0], + #BarrelNoiseOccupancy=[5e-8,5e-8,5e-8,5e-8], + #BarrelDisableProbability=[9e-3,9e-3,9e-3,9e-3], + IBLNoiseShape=[0.0,1.0], + BLayerNoiseShape=[0.00000, 0.00596, 0.03491, 0.07058, 0.11991, 0.17971, 0.24105, 0.29884, 0.35167, 0.39912, 0.44188, 0.48016, 0.51471, 0.54587, 0.57405, 0.59958, 0.62288, 0.64411, 0.66360, 0.68159, 0.69823, 0.71362, 0.72781, 0.74096, 0.75304, 0.76415, 0.77438, 0.78383, 0.79256, 0.80066, 0.80821, 0.81547, 0.82246, 0.82918, 0.83501, 0.84054, 0.84576, 0.85078, 0.85558, 0.86018, 0.86455, 0.86875, 0.87273, 0.87653, 0.88020, 0.88369, 0.88705, 0.89027, 0.89336, 0.89633, 0.89921, 0.90195, 0.90460, 0.90714, 0.90961, 0.91198, 0.91426, 0.91644, 0.91853, 0.92055, 0.92250, 0.92435, 0.92611, 0.92782, 0.92947, 0.93105, 0.93257, 0.93404, 0.93547, 0.93688, 0.93822, 0.93953, 0.94079, 0.94201, 0.94318, 0.94432, 0.94542, 0.94649, 0.94751, 0.94851, 0.94949, 0.95045, 0.95137, 0.95227, 0.95314, 0.95399, 0.95483, 0.95563, 0.95646, 0.95729, 0.95812, 0.95896, 0.95980, 0.96063, 0.96144, 0.96224, 0.96301, 0.96377, 0.96451, 0.96521, 0.96590, 0.96657, 0.96722, 0.96787, 0.96849, 0.96911, 0.96971, 0.97031, 0.97090, 0.97148, 0.97204, 0.97260, 0.97314, 0.97367, 0.97421, 0.97474, 0.97525, 0.97576, 0.97627, 0.97676, 0.97722, 0.97769, 0.97815, 0.97861, 0.97906, 0.97950, 0.97992, 0.98033, 0.98073, 0.98111, 0.98147, 0.98182, 0.98216, 0.98249, 0.98281, 0.98312, 0.98343, 0.98374, 0.98402, 0.98430, 0.98456, 0.98482, 0.98507, 0.98532, 0.98555, 0.98579, 0.98602, 0.98624, 0.98646, 0.98668, 0.98690, 0.98711, 0.98732, 0.98753, 0.98773, 0.98793, 0.98813, 0.98832, 0.98851, 0.98870, 0.98888, 0.98907, 0.98925, 0.98943, 0.98961, 0.98979, 0.98996, 0.99014, 0.99031, 0.99048, 0.99064, 0.99081, 0.99098, 0.99114, 0.99131, 0.99147, 0.99163, 0.99179, 0.99194, 0.99210, 0.99225, 0.99240, 0.99256, 0.99271, 0.99286, 0.99300, 0.99315, 0.99329, 0.99344, 0.99358, 0.99372, 0.99386, 0.99400, 0.99414, 0.99427, 0.99440, 0.99453, 0.99466, 0.99479, 0.99491, 0.99503, 0.99515, 0.99527, 0.99538, 0.99549, 0.99560, 0.99571, 0.99582, 0.99592, 0.99602, 0.99613, 0.99623, 0.99633, 0.99643, 0.99653, 0.99662, 0.99672, 0.99682, 0.99691, 0.99701, 0.99710, 0.99719, 0.99728, 0.99737, 0.99746, 0.99755, 0.99764, 0.99772, 0.99781, 0.99790, 0.99798, 0.99806, 0.99814, 0.99823, 0.99831, 0.99839, 0.99847, 0.99855, 0.99863, 0.99871, 0.99879, 0.99887, 0.99895, 0.99902, 0.99910, 0.99918, 0.99925, 0.99933, 0.99940, 0.99948, 0.99955, 0.99963, 0.99971, 0.99978, 0.99985, 0.99993, 1.00000], + PixelNoiseShape=[0.00000, 0.00596, 0.03491, 0.07058, 0.11991, 0.17971, 0.24105, 0.29884, 0.35167, 0.39912, 0.44188, 0.48016, 0.51471, 0.54587, 0.57405, 0.59958, 0.62288, 0.64411, 0.66360, 0.68159, 0.69823, 0.71362, 0.72781, 0.74096, 0.75304, 0.76415, 0.77438, 0.78383, 0.79256, 0.80066, 0.80821, 0.81547, 0.82246, 0.82918, 0.83501, 0.84054, 0.84576, 0.85078, 0.85558, 0.86018, 0.86455, 0.86875, 0.87273, 0.87653, 0.88020, 0.88369, 0.88705, 0.89027, 0.89336, 0.89633, 0.89921, 0.90195, 0.90460, 0.90714, 0.90961, 0.91198, 0.91426, 0.91644, 0.91853, 0.92055, 0.92250, 0.92435, 0.92611, 0.92782, 0.92947, 0.93105, 0.93257, 0.93404, 0.93547, 0.93688, 0.93822, 0.93953, 0.94079, 0.94201, 0.94318, 0.94432, 0.94542, 0.94649, 0.94751, 0.94851, 0.94949, 0.95045, 0.95137, 0.95227, 0.95314, 0.95399, 0.95483, 0.95563, 0.95646, 0.95729, 0.95812, 0.95896, 0.95980, 0.96063, 0.96144, 0.96224, 0.96301, 0.96377, 0.96451, 0.96521, 0.96590, 0.96657, 0.96722, 0.96787, 0.96849, 0.96911, 0.96971, 0.97031, 0.97090, 0.97148, 0.97204, 0.97260, 0.97314, 0.97367, 0.97421, 0.97474, 0.97525, 0.97576, 0.97627, 0.97676, 0.97722, 0.97769, 0.97815, 0.97861, 0.97906, 0.97950, 0.97992, 0.98033, 0.98073, 0.98111, 0.98147, 0.98182, 0.98216, 0.98249, 0.98281, 0.98312, 0.98343, 0.98374, 0.98402, 0.98430, 0.98456, 0.98482, 0.98507, 0.98532, 0.98555, 0.98579, 0.98602, 0.98624, 0.98646, 0.98668, 0.98690, 0.98711, 0.98732, 0.98753, 0.98773, 0.98793, 0.98813, 0.98832, 0.98851, 0.98870, 0.98888, 0.98907, 0.98925, 0.98943, 0.98961, 0.98979, 0.98996, 0.99014, 0.99031, 0.99048, 0.99064, 0.99081, 0.99098, 0.99114, 0.99131, 0.99147, 0.99163, 0.99179, 0.99194, 0.99210, 0.99225, 0.99240, 0.99256, 0.99271, 0.99286, 0.99300, 0.99315, 0.99329, 0.99344, 0.99358, 0.99372, 0.99386, 0.99400, 0.99414, 0.99427, 0.99440, 0.99453, 0.99466, 0.99479, 0.99491, 0.99503, 0.99515, 0.99527, 0.99538, 0.99549, 0.99560, 0.99571, 0.99582, 0.99592, 0.99602, 0.99613, 0.99623, 0.99633, 0.99643, 0.99653, 0.99662, 0.99672, 0.99682, 0.99691, 0.99701, 0.99710, 0.99719, 0.99728, 0.99737, 0.99746, 0.99755, 0.99764, 0.99772, 0.99781, 0.99790, 0.99798, 0.99806, 0.99814, 0.99823, 0.99831, 0.99839, 0.99847, 0.99855, 0.99863, 0.99871, 0.99879, 0.99887, 0.99895, 0.99902, 0.99910, 0.99918, 0.99925, 0.99933, 0.99940, 0.99948, 0.99955, 0.99963, 0.99971, 0.99978, 0.99985, 0.99993, 1.00000], + FEI3BarrelLatency=[ -1, 151, 256, 256], + FEI3BarrelHitDuplication=[False, False, False, False], + FEI3BarrelSmallHitToT=[-1, -1, -1, -1], + FEI3BarrelTimingSimTune=[2015,2015,2015,2015], + FEI4BarrelHitDiscConfig=[2], + #EndcapAnalogThreshold=[-1,-1,-1,], + EndcapToTThreshold=[ 5, 5, 5], + EndcapCrossTalk=[0.06,0.06,0.06], + EndcapThermalNoise=[160.0,160.0,160.0], + #EndcapNoiseOccupancy=[5e-8,5e-8,5e-8], + #EndcapDisableProbability=[9e-3,9e-3,9e-3], + #EndcapNoiseShape=[[0.0,1.0],[0.0,1.0],[0.0,1.0]], + FEI3EndcapLatency=[256, 256, 256], + FEI3EndcapHitDuplication=[False, False, False], + FEI3EndcapSmallHitToT=[-1, -1, -1], + FEI3EndcapTimingSimTune=[2015,2015,2015], + #DBMAnalogThreshold=[-1,-1,-1], + DBMToTThreshold=[-1,-1,-1], + DBMCrossTalk=[0.06,0.06,0.06], + DBMThermalNoise=[160.0,160.0,160.0], + #DBMNoiseOccupancy=[5e-8,5e-8,5e-8], + #DBMDisableProbability=[9e-3,9e-3,9e-3], + #DBMNoiseShape=[[0.0,1.0],[0.0,1.0],[0.0,1.0]], + FEI4EndcapHitDiscConfig=[2,2,2], + ) + if flags.Beam.Type == "cosmics": + CondArgs.update( + UseComTime=True, + BarrelTimeJitter=[25.0,25.0,25.0,25.0], + EndcapTimeJitter=[25.0,25.0,25.0], + DBMTimeJitter=[25.0,25.0,25.0], + BarrelNumberOfBCID=[8,8,8,8], + EndcapNumberOfBCID=[8,8,8], + DBMNumberOfBCID=[8,8,8], + BarrelTimeOffset=[100.0,100.0,100.0,100.0], + EndcapTimeOffset=[100.0,100.0,100.0], + DBMTimeOffset=[100.0,100.0,100.0], + ) + else: + CondArgs.update( + UseComTime=False, + BarrelTimeJitter=[0.0,0.0,0.0,0.0], + EndcapTimeJitter=[0.0,0.0,0.0], + DBMTimeJitter=[0.0,0.0,0.0], + BarrelNumberOfBCID=[1,1,1,1], + EndcapNumberOfBCID=[1,1,1], + DBMNumberOfBCID=[1,1,1], + BarrelTimeOffset=[5.0,5.0,5.0,5.0], + EndcapTimeOffset=[5.0,5.0,5.0], + DBMTimeOffset=[5.0,5.0,5.0], + ) + # set default kwargs + CondArgs.update(kwargs) + acc.addCondAlgo(PixelConfigCondAlg(name, **CondArgs)) + return acc + +def PixelChargeCalibCondAlgCfg(flags, name="PixelChargeCalibCondAlg", **kwargs): + """Return a ComponentAccumulator with configured PixelChargeCalibCondAlg""" + acc = ComponentAccumulator() + acc.merge(addFolders(flags, "/PIXEL/PixCalib", "PIXEL_OFL", className="CondAttrListCollection")) + kwargs.setdefault("ReadKey", "/PIXEL/PixCalib") + acc.addCondAlgo(PixelChargeCalibCondAlg(name, **kwargs)) + return acc + +def PixelOfflineCalibCondAlgCfg(flags, name="PixelOfflineCalibCondAlg", **kwargs): + """Return a ComponentAccumulator with configured PixelOfflineCalibCondAlg""" + acc = ComponentAccumulator() + acc.merge(addFolders(flags, "/PIXEL/PixReco", "PIXEL_OFL", className="DetCondCFloat")) + kwargs.setdefault("ReadKey", "/PIXEL/PixReco") + kwargs.setdefault("InputSource", 2) + acc.addCondAlgo(PixelOfflineCalibCondAlg(name, **kwargs)) + return acc + diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt b/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt index 8c38cd1036d..0209bebcef7 100644 --- a/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt +++ b/InnerDetector/InDetConditions/PixelConditionsTools/CMakeLists.txt @@ -51,12 +51,6 @@ atlas_add_component( PixelConditionsTools INCLUDE_DIRS ${CORAL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} LINK_LIBRARIES ${CORAL_LIBRARIES} ${CLHEP_LIBRARIES} ${EIGEN_LIBRARIES} AthenaKernel GeoPrimitives GaudiKernel AthenaBaseComps SGTools AthenaPoolUtilities DetDescrConditions Identifier PixelConditionsData PixelCoralClientUtils InDetIdentifier GeoModelUtilities InDetReadoutGeometry PathResolver ${extra_lib} ) -if( NOT SIMULATIONBASE ) - atlas_add_test( PixelConditionsConfig_test - SCRIPT test/PixelConditionsConfig_test.py - PROPERTIES TIMEOUT 300 ) -endif() - # Install files from the package: atlas_install_headers( PixelConditionsTools ) atlas_install_joboptions( share/*.py ) diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/python/PixelConditionsSummaryConfig.py b/InnerDetector/InDetConditions/PixelConditionsTools/python/PixelConditionsSummaryConfig.py index 1f5af82d70f..22fccb9d3d1 100644 --- a/InnerDetector/InDetConditions/PixelConditionsTools/python/PixelConditionsSummaryConfig.py +++ b/InnerDetector/InDetConditions/PixelConditionsTools/python/PixelConditionsSummaryConfig.py @@ -1,13 +1,13 @@ -"""Define methods to configure PixelConditionsSummary +"""Define a function to configure PixelConditionsSummaryCfg Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from IOVDbSvc.IOVDbSvcConfig import addFolders, addFoldersSplitOnline +from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline, addFolders from PixelConditionsTools.PixelConditionsToolsConf import PixelConditionsSummaryTool from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelTDAQCondAlg -from PixelConditionsAlgorithms.PixelConditionsAlgorithmsConf import PixelConfigCondAlg from PixelConditionsTools.PixelDCSConditionsConfig import PixelDCSConditionsCfg +from PixelConditionsAlgorithms.PixelConditionsConfig import PixelConfigCondAlgCfg def PixelConditionsSummaryCfg(flags, name="PixelConditionsSummary", **kwargs): """Return configured ComponentAccumulator and tool for PixelDCSConditions""" @@ -27,9 +27,7 @@ def PixelConditionsSummaryCfg(flags, name="PixelConditionsSummary", **kwargs): acc.merge(addFolders(flags, PixelDeadMapFolder, "PIXEL_OFL","CondAttrListCollection")) acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/PixMapOverlay", "/PIXEL/PixMapOverlay", "CondAttrListCollection")) - acc.addCondAlgo(PixelConfigCondAlg(name=name + "CondAlg", - UseDeadMap=kwargs["UseDeadMap"], - ReadDeadMapKey=PixelDeadMapFolder)) - tool = PixelConditionsSummaryTool(name=name + "Tool", **kwargs) - return acc, tool + acc.merge(PixelConfigCondAlgCfg(flags, UseDeadMap=kwargs["UseDeadMap"], ReadDeadMapKey=PixelDeadMapFolder)) + acc.setPrivateTools(PixelConditionsSummaryTool(name=name + "Tool", **kwargs)) + return acc diff --git a/InnerDetector/InDetConditions/PixelConditionsTools/test/PixelConditionsConfig_test.py b/InnerDetector/InDetConditions/PixelConditionsTools/test/PixelConditionsConfig_test.py deleted file mode 100755 index 182a291c078..00000000000 --- a/InnerDetector/InDetConditions/PixelConditionsTools/test/PixelConditionsConfig_test.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python -"""Run tests on PixelConditionsTools/python/*Config.py scripts - -Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -""" -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from AthenaConfiguration.AllConfigFlags import ConfigFlags -from AthenaConfiguration.TestDefaults import defaultTestFiles -from AthenaCommon.Logging import log -from AthenaCommon.Constants import DEBUG -from AthenaCommon.Configurable import Configurable -from PixelConditionsTools.PixelDCSConditionsConfig import PixelDCSConditionsCfg -from PixelConditionsTools.PixelConditionsSummaryConfig import PixelConditionsSummaryCfg - -# test setup -log.setLevel(DEBUG) -Configurable.configurableRun3Behavior = True -ConfigFlags.Input.Files = defaultTestFiles.HITS -# test -DCSAcc = PixelDCSConditionsCfg(ConfigFlags, name="DCSTest") -SummaryAcc, SummaryTool = PixelConditionsSummaryCfg(ConfigFlags, name="SummaryTest") -# prevent raise on __del__ -DCSAcc.wasMerged() -SummaryAcc.wasMerged() - diff --git a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py index 5ce6c514b4d..d6922564b57 100644 --- a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py +++ b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py @@ -20,7 +20,7 @@ def SCT_SiPropertiesCfg(flags, name="SCTSiPropertiesCondAlg", **kwargs): acc = ComponentAccumulator() tool = kwargs.get("SiPropertiesTool", SCT_SiPropertiesToolCfg(flags)) alg = SCTSiPropertiesCondAlg(name, **kwargs) - acc.addEventAlgo(alg) + acc.addCondAlgo(alg) acc.setPrivateTools(tool) return acc diff --git a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py index cf5932a1494..65503e3ac15 100755 --- a/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py +++ b/InnerDetector/InDetDigitization/BCM_Digitization/python/BCM_DigitizationConfigNew.py @@ -5,6 +5,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration from RngComps.RandomServices import RNG, AthEngines from PileUpComps.PileUpCompsConf import PileUpXingFolder from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from BCM_Digitization.BCM_DigitizationConf import BCM_DigitizationTool, BCM_Digitization # The earliest and last bunch crossing times for which interactions will be sent @@ -15,7 +16,11 @@ def BCM_FirstXing(): def BCM_LastXing(): return 0 -def BCM_RangeCfg(flags, name="BCM_Range" , **kwargs): +def BCM_ItemList(): + """Return list of item names needed for BCM output""" + return ["InDetSimDataCollection#*", "BCM_RDO_Container#*"] + +def BCM_RangeCfg(flags, name="BCM_Range", **kwargs): """Return a BCM configured PileUpXingFolder tool""" kwargs.setdefault("FirstXing", BCM_FirstXing()) kwargs.setdefault("LastXing", BCM_LastXing()) @@ -62,6 +67,8 @@ def BCM_DigitizationCfg(flags, name="BCM_OverlayDigitization", **kwargs): tool = acc.popToolsAndMerge(BCM_DigitizationToolCfg(flags, **kwargs)) kwargs["DigitizationTool"] = tool acc.addEventAlgo(BCM_Digitization(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", BCM_ItemList())) return acc def BCM_OverlayDigitizationToolCfg(flags, name="BCM_OverlayDigitizationTool", **kwargs): @@ -75,5 +82,6 @@ def BCM_OverlayDigitizationCfg(flags, name="BCM_OverlayDigitization", **kwargs): tool = acc.popToolsAndMerge(BCM_OverlayDigitizationToolCfg(flags, **kwargs)) kwargs.setdefault("DigitizationTool", tool) acc.addEventAlgo(BCM_Digitization(name, **kwargs)) + acc.merge(OutputStreamCfg(flags, "RDO", BCM_ItemList())) return acc diff --git a/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py b/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py index a2b4330e42c..0575f83d9eb 100755 --- a/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py +++ b/InnerDetector/InDetDigitization/BCM_Digitization/test/BCM_DigitizationConfigNew_test.py @@ -12,7 +12,6 @@ from AthenaConfiguration.AllConfigFlags import ConfigFlags from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg -from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags from BCM_Digitization.BCM_DigitizationConfigNew import BCM_DigitizationCfg @@ -31,12 +30,6 @@ ConfigFlags.lock() acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(BCM_DigitizationCfg(ConfigFlags)) -# Add configuration to write HITS pool file -ItemList = [ - "InDetSimDataCollection#*", - "BCM_RDO_Container#*", -] -acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList)) # Dump config acc.getService("StoreGateSvc").Dump=True acc.getService("ConditionStore").Dump = True diff --git a/InnerDetector/InDetDigitization/PixelDigitization/CMakeLists.txt b/InnerDetector/InDetDigitization/PixelDigitization/CMakeLists.txt index 144705dfd91..efc5c66009b 100644 --- a/InnerDetector/InDetDigitization/PixelDigitization/CMakeLists.txt +++ b/InnerDetector/InDetDigitization/PixelDigitization/CMakeLists.txt @@ -44,6 +44,10 @@ atlas_add_component( PixelDigitization INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} LINK_LIBRARIES ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaBaseComps GaudiKernel CommissionEvent AthenaKernel PileUpToolsLib StoreGateLib SGtests Identifier xAODEventInfo GeneratorObjects PixelConditionsData SiPropertiesToolLib InDetIdentifier InDetReadoutGeometry SiDigitization InDetRawData InDetSimData InDetSimEvent HitManagement PathResolver ) +atlas_add_test( PixelDigitizationConfigNew_test + SCRIPT test/PixelDigitizationConfigNew_test.py + PROPERTIES TIMEOUT 300 ) + # Install files from the package: atlas_install_headers( PixelDigitization ) atlas_install_python_modules( python/*.py ) diff --git a/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py new file mode 100644 index 00000000000..934e1c82c4f --- /dev/null +++ b/InnerDetector/InDetDigitization/PixelDigitization/python/PixelDigitizationConfigNew.py @@ -0,0 +1,209 @@ +"""Define methods to construct configured Pixel Digitization tools and algorithms + +Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +""" +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline, addFolders +from PileUpComps.PileUpCompsConf import PileUpXingFolder +from PixelCabling.PixelCablingConfigNew import PixelCablingSvcCfg +from PixelDigitization.PixelDigitizationConf import ( + PixelDigitizationTool, PixelDigitization, ChargeCollProbSvc, + EnergyDepositionTool, SensorSimPlanarTool, SensorSim3DTool, + RD53SimTool, FEI4SimTool, FEI3SimTool, +) +from SiPropertiesTool.PixelSiPropertiesConfig import PixelSiPropertiesCfg +from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleCfg +from PixelConditionsTools.PixelConditionsSummaryConfig import PixelConditionsSummaryCfg +from PixelConditionsAlgorithms.PixelConditionsConfig import PixelChargeCalibCondAlgCfg, PixelOfflineCalibCondAlgCfg +from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg +from StoreGate.StoreGateConf import StoreGateSvc +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + +# The earliest and last bunch crossing times for which interactions will be sent +# to the Pixel Digitization code +def Pixel_FirstXing(flags): + if flags.Beam.estimatedLuminosity > 0.5e33: + return -25 + else: + return -50 + +def Pixel_LastXing(flags): + if flags.Beam.estimatedLuminosity > 0.5e33: + if flags.Beam.BunchSpacing > 50: + return 75 + else: + return 25 + else: + return 100 + +def PixelItemList(): + """Return list of item names needed for Pixel output""" + return ["InDet::SiClusterContainer#*", "InDet::PixelGangedClusterAmbiguities#*", "PixelRDO_Container#*"] + +def ChargeCollProbSvcCfg(name="ChargeCollProbSvc", **kwargs): + """Return a Charge Collection Prob service""" + return ChargeCollProbSvc(name, **kwargs) + +def EnergyDepositionToolCfg(flags, name="EnergyDepositionTool", **kwargs): + """Return a configured EnergyDepositionTool""" + kwargs.setdefault("DeltaRayCut", 117.) + kwargs.setdefault("nCols", 5) + kwargs.setdefault("LoopLimit", 100000) + kwargs.setdefault("doBichsel", True) + kwargs.setdefault("doBichselBetaGammaCut", 0.7) # dEdx not quite consistent below this + kwargs.setdefault("doDeltaRay", False) # needs validation + kwargs.setdefault("doPU", True) + return EnergyDepositionTool(name, **kwargs) + +def SensorSimPlanarToolCfg(flags, name="SensorSimPlanarTool", **kwargs): + """Return a ComponentAccumulator with configured SensorSimPlanarTool""" + acc = PixelSiPropertiesCfg(flags) + SiTool = acc.popPrivateTools() + LorentzTool = acc.popToolsAndMerge(PixelLorentzAngleCfg(flags)) + kwargs.setdefault("SiPropertiesTool", SiTool) + kwargs.setdefault("LorentzAngleTool", LorentzTool) + acc.setPrivateTools(SensorSimPlanarTool(name, **kwargs)) + return acc + +def SensorSim3DToolCfg(flags, name="SensorSim3DTool", **kwargs): + """Return a ComponentAccumulator with configured SensorSim3DTool""" + acc = PixelSiPropertiesCfg(flags) + SiTool = acc.popPrivateTools() + LorentzTool = acc.popToolsAndMerge(PixelLorentzAngleCfg(flags)) + kwargs.setdefault("SiPropertiesTool", SiTool) + acc.setPrivateTools(SensorSim3DTool(name, **kwargs)) + return acc + +def BarrelRD53SimToolCfg(flags, name="BarrelRD53SimTool", **kwargs): + """Return a RD53SimTool configured for Barrel""" + kwargs.setdefault("BarrelEC", 0) + return RD53SimTool(name, **kwargs) + +def EndcapRD53SimToolCfg(flags, name="EndcapRD53SimTool", **kwargs): + """Return a RD53SimTool configured for Endcap""" + kwargs.setdefault("BarrelEC", 2) + return RD53SimTool(name, **kwargs) + +def BarrelFEI4SimToolCfg(flags, name="BarrelFEI4SimTool", **kwargs): + """Return a FEI4SimTool configured for Barrel""" + kwargs.setdefault("BarrelEC", 0) + return FEI4SimTool(name, **kwargs) + +def DBMFEI4SimToolCfg(flags, name="DBMFEI4SimTool", **kwargs): + """Return a FEI4SimTool configured for Endcap""" + kwargs.setdefault("BarrelEC", 4) + return FEI4SimTool(name, **kwargs) + +def BarrelFEI3SimToolCfg(flags, name="BarrelFEI3SimTool", **kwargs): + """Return a FEI3SimTool configured for Barrel""" + kwargs.setdefault("BarrelEC", 0) + return FEI3SimTool(name, **kwargs) + +def EndcapFEI3SimToolCfg(flags, name="EndcapFEI3SimTool", **kwargs): + """Return a FEI3SimTool configured for Endcap""" + kwargs.setdefault("BarrelEC", 2) + return FEI3SimTool(name, **kwargs) + +def PixelDigitizationBasicToolCfg(flags, name="PixelDigitizationTool", **kwargs): + """Return a ComponentAccumulator with configured PixelDigitizationTool""" + acc = PixelGeometryCfg(flags) + acc.popToolsAndMerge(PixelConditionsSummaryCfg(flags)) + acc.merge(PixelChargeCalibCondAlgCfg(flags)) + acc.popToolsAndMerge(PixelSiPropertiesCfg(flags)) + acc.popToolsAndMerge(PixelLorentzAngleCfg(flags)) + acc.merge(PixelCablingSvcCfg(flags)) + acc.merge(PixelOfflineCalibCondAlgCfg(flags)) + # set up tool handle lists + chargeTools = [] + feSimTools = [] + chargeTools.append(acc.popToolsAndMerge(SensorSimPlanarToolCfg(flags))) + if flags.GeoModel.Run == "RUN4": + feSimTools.append(BarrelRD53SimToolCfg(flags)) + feSimTools.append(EndcapRD53SimToolCfg(flags)) + else: + chargeTools.append(acc.popToolsAndMerge(SensorSim3DToolCfg(flags))) + feSimTools.append(BarrelFEI4SimToolCfg(flags)) + feSimTools.append(DBMFEI4SimToolCfg(flags)) + feSimTools.append(BarrelFEI3SimToolCfg(flags)) + feSimTools.append(EndcapFEI3SimToolCfg(flags)) + kwargs.setdefault("InputObjectName", "PixelHits") + kwargs.setdefault("ChargeTools", chargeTools) + kwargs.setdefault("FrontEndSimTools", feSimTools) + kwargs.setdefault("EnergyDepositionTool", EnergyDepositionToolCfg(flags)) + if flags.Digitization.DoXingByXingPileUp: + kwargs.setdefault("FirstXing", Pixel_FirstXing(flags)) + kwargs.setdefault("LastXing", Pixel_LastXing(flags)) + acc.setPrivateTools(PixelDigitizationTool(name, **kwargs)) + return acc + +def PixelDigitizationToolCfg(flags, name="PixelDigitizationTool", **kwargs): + """Return a ComponentAccumulator with configured BasicPixelDigitizationTool""" + kwargs.setdefault("HardScatterSplittingMode", 0) + return PixelDigitizationBasicToolCfg(flags, name, **kwargs) + +def PixelGeantinoTruthDigitizationToolCfg(flags, name="PixelGeantinoTruthDigitizationTool", **kwargs): + """Return a configured PixelDigitizationTool""" + kwargs.setdefault("ParticleBarcodeVeto", 0) + return PixelDigitizationTool(name, **kwargs) + +def PixelDigitizationHSToolCfg(flags, name="PixelDigitizationToolHS", **kwargs): + """Return a ComponentAccumulator with PixelDigitizationTool configured for Hard Scatter""" + kwargs.setdefault("HardScatterSplittingMode", 1) + return PixelDigitizationBasicToolCfg(flags, name, **kwargs) + +def PixelDigitizationPUToolCfg(flags, name="PixelDigitizationToolPU", **kwargs): + """Return a ComponentAccumulator with PixelDigitizationTool configured for PileUp""" + kwargs.setdefault("HardScatterSplittingMode", 2) + kwargs.setdefault("RDOCollName", "Pixel_PU_RDOs") + kwargs.setdefault("SDOCollName", "Pixel_PU_SDO_Map") + return PixelDigitizationBasicToolCfg(flags, name, **kwargs) + +def PixelDigitizationSplitNoMergePUToolCfg(flags, name="PixelDigitizationToolSplitNoMergePU", **kwargs): + """Return a ComponentAccumulator with PixelDigitizationTool configured for PileUpPixelHits""" + kwargs.setdefault("HardScatterSplittingMode", 0) + kwargs.setdefault("InputObjectName", "PileupPixelHits") + kwargs.setdefault("RDOCollName", "Pixel_PU_RDOs") + kwargs.setdefault("SDOCollName", "Pixel_PU_SDO_Map") + return PixelDigitizationBasicToolCfg(flags, name, **kwargs) + +def PixelDigitizationOverlayToolCfg(flags, name="PixelDigitizationOverlayTool", **kwargs): + """Return a ComponentAccumulator with PixelDigitizationTool configured for overlay""" + acc = ComponentAccumulator() + acc.addService(StoreGateSvc(flags.Overlay.Legacy.EventStore)) + kwargs.setdefault("EvtStore", flags.Overlay.Legacy.EventStore) + kwargs.setdefault("RDOCollName", flags.Overlay.Legacy.EventStore + "+PixelRDOs") + kwargs.setdefault("SDOCollName", flags.Overlay.Legacy.EventStore + "+PixelSDO_Map") + kwargs.setdefault("HardScatterSplittingMode", 0) + return PixelDigitizationBasicToolCfg(flags, name, **kwargs) + +def PixelRangeCfg(flags, name="PixelRange", **kwargs): + """Return a configured PileUpXingFolder tool""" + kwargs.setdefault("FirstXing", Pixel_FirstXing(flags)) + kwargs.setdefault("LastXing", Pixel_LastXing(flags)) + kwargs.setdefault("CacheRefreshFrequency", 1.0) # default 0 no dataproxy reset + kwargs.setdefault("ItemList", ["SiHitCollection#PixelHits"]) + return PileUpXingFolder(name, **kwargs) + +def PixelDigitizationCfg(toolCfg, flags, name="PixelDigitization", **kwargs): + """Return a ComponentAccumulator with toolCfg type Pixel digitization""" + acc = ComponentAccumulator() + if "DigitizationTool" not in kwargs: + tool = acc.popToolsAndMerge(toolCfg(flags)) + kwargs["DigitizationTool"] = tool + acc.addEventAlgo(PixelDigitization(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", PixelItemList())) + return acc + +def PixelDigitizationHSCfg(flags, name="PixelDigitizationHS", **kwargs): + """Return a ComponentAccumulator with Hard Scatter Pixel Digitization""" + return PixelDigitizationCfg(PixelDigitizationHSToolCfg, flags, name, **kwargs) + +def PixelDigitizationPUCfg(flags, name="PixelDigitizationPU", **kwargs): + """Return a ComponentAccumulator with Hard Scatter Pixel Digitization""" + return PixelDigitizationCfg(PixelDigitizationPUToolCfg, flags, name, **kwargs) + +def PixelDigitizationOverlayCfg(flags, name="PixelDigitizationOverlay", **kwargs): + """Return a ComponentAccumulator with Hard Scatter Pixel Digitization""" + return PixelDigitizationCfg(PixelDigitizationOverlayToolCfg, flags, name, **kwargs) + diff --git a/InnerDetector/InDetDigitization/PixelDigitization/test/PixelDigitizationConfigNew_test.py b/InnerDetector/InDetDigitization/PixelDigitization/test/PixelDigitizationConfigNew_test.py new file mode 100755 index 00000000000..94c4e0b8bd1 --- /dev/null +++ b/InnerDetector/InDetDigitization/PixelDigitization/test/PixelDigitizationConfigNew_test.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +"""Run tests on SCT_DigitizationConfigNew.py + +Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +""" +import sys +from AthenaCommon.Logging import log +from AthenaCommon.Constants import DEBUG +from AthenaCommon.Configurable import Configurable +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.AllConfigFlags import ConfigFlags +from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg +from AthenaConfiguration.TestDefaults import defaultTestFiles +from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg +from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg +from PixelDigitization.PixelDigitizationConfigNew import ( + ChargeCollProbSvcCfg, EnergyDepositionToolCfg, SensorSimPlanarToolCfg, SensorSim3DToolCfg, + BarrelRD53SimToolCfg, EndcapRD53SimToolCfg, BarrelFEI4SimToolCfg, DBMFEI4SimToolCfg, + BarrelFEI3SimToolCfg, EndcapFEI3SimToolCfg, PixelDigitizationBasicToolCfg, PixelDigitizationToolCfg, + PixelGeantinoTruthDigitizationToolCfg, PixelDigitizationHSToolCfg, PixelDigitizationPUToolCfg, + PixelDigitizationSplitNoMergePUToolCfg, PixelDigitizationOverlayToolCfg, PixelRangeCfg, + PixelDigitizationHSCfg, PixelDigitizationPUCfg, PixelDigitizationOverlayCfg, +) +from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags +from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags + +# Set up logging and new style config +log.setLevel(DEBUG) +Configurable.configurableRun3Behavior = True +# Configure +ConfigFlags.join(createDigitizationCfgFlags()) +ConfigFlags.join(createOverlayCfgFlags()) +ConfigFlags.Input.Files = defaultTestFiles.HITS +ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16" +ConfigFlags.GeoModel.Align.Dynamic = False +ConfigFlags.GeoModel.Type = "BrlIncl4.0_ref" +ConfigFlags.Beam.NumberOfCollisions = 0. +ConfigFlags.lock() +# Construct our accumulator to run +acc = MainServicesSerialCfg() +acc.merge(PoolReadCfg(ConfigFlags)) +acc.merge(PixelDigitizationHSCfg(ConfigFlags)) +# Dump config +acc.getService("StoreGateSvc").Dump = True +acc.getService("ConditionStore").Dump = True +acc.printConfig(withDetails=True) +ConfigFlags.dump() +# Execute and finish +sc = acc.run(maxEvents=3) +# Success should be 0 +sys.exit(not sc.isSuccess()) + diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py index 7ea7668edcf..b2dbc01bb6e 100644 --- a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py +++ b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py @@ -14,6 +14,7 @@ from SCT_Digitization.SCT_DigitizationConf import ( SCT_Digitization, ) from PileUpComps.PileUpCompsConf import PileUpXingFolder +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from SCT_ConditionsTools.SCT_ConditionsToolsConf import SCT_RadDamageSummaryTool from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg from SCT_ConditionsTools.SCT_DCSConditionsConfig import SCT_DCSConditionsCfg @@ -31,6 +32,10 @@ def SCT_FirstXing(): def SCT_LastXing(): return 25 +def SCT_ItemList(): + """Return list of item names needed for SCT output""" + return ["InDet::SiClusterContainer#*", "SCT_RDO_Container#*"] + def SCT_DigitizationCommonCfg(flags, name="SCT_DigitizationToolCommon", **kwargs): """Return a ComponentAccumulator with common SCT digitization tool config""" acc = SCT_GeometryCfg(flags) @@ -235,6 +240,8 @@ def SCT_DigitizationCfg(toolCfg, flags, name="SCT_Digitization", **kwargs): kwargs["DigitizationTool"] = tool alg = SCT_Digitization(name, **kwargs) acc.addEventAlgo(alg) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", SCT_ItemList())) return acc def SCT_DigitizationHSCfg(flags, name="SCT_DigitizationHS", **kwargs): diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py b/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py index 2650be8f009..807153b9fdf 100755 --- a/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py +++ b/InnerDetector/InDetDigitization/SCT_Digitization/test/SCT_DigitizationConfigNew_test.py @@ -12,14 +12,7 @@ from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg from AtlasGeoModel.InDetGMConfig import InDetGeometryCfg -from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg -from SCT_Digitization.SCT_DigitizationConfigNew import ( - SCT_RandomDisabledCellGeneratorCfg, SCT_AmpCfg, SCT_SurfaceChargesGeneratorCfg, - SCT_FrontEndCfg, SCT_FrontEndPileupCfg, SCT_DigitizationCommonCfg, SCT_DigitizationToolCfg, - SCT_DigitizationToolGeantinoTruthCfg, SCT_DigitizationToolHSCfg, SCT_DigitizationToolPUCfg, - SCT_DigitizationToolSplitNoMergePUCfg, SCT_DigitizationToolOverlayCfg, SCT_DigitizationHSCfg, - SCT_DigitizationPUCfg, SCT_DigitizationOverlayCfg, SCT_RangeCfg, -) +from SCT_Digitization.SCT_DigitizationConfigNew import SCT_DigitizationHSCfg from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags @@ -34,54 +27,10 @@ ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16" ConfigFlags.GeoModel.Align.Dynamic = False ConfigFlags.Concurrency.NumThreads = 1 ConfigFlags.lock() -# Function tests -tacc = SCT_DigitizationCommonCfg(ConfigFlags) -tacc.popPrivateTools() -acc1=SCT_DigitizationToolCfg(ConfigFlags) -acc1.popPrivateTools() -tacc.merge(acc1) -acc2=SCT_DigitizationToolHSCfg(ConfigFlags) -acc2.popPrivateTools() -tacc.merge(acc2) -acc3=SCT_DigitizationToolPUCfg(ConfigFlags) -acc3.popPrivateTools() -tacc.merge(acc3) -acc4=SCT_DigitizationToolOverlayCfg(ConfigFlags) -acc4.popPrivateTools() -tacc.merge(acc4) -acc6=SCT_DigitizationToolSplitNoMergePUCfg(ConfigFlags) -acc6.popPrivateTools() -tacc.merge(acc6) -acc7=SCT_DigitizationToolGeantinoTruthCfg(ConfigFlags) -acc7.popPrivateTools() -tacc.merge(acc7) -tool = SCT_RandomDisabledCellGeneratorCfg(ConfigFlags) -tool = SCT_AmpCfg(ConfigFlags) -acc8=SCT_SurfaceChargesGeneratorCfg(ConfigFlags) -acc8.popPrivateTools() -tacc.merge(acc8) -acc9=SCT_FrontEndCfg(ConfigFlags) -acc9.popPrivateTools() -tacc.merge(acc9) -acc10=SCT_FrontEndPileupCfg(ConfigFlags) -acc10.popPrivateTools() -tacc.merge(acc10) -tool = SCT_RangeCfg(ConfigFlags) -acc5=SCT_DigitizationHSCfg(ConfigFlags) -acc5.popPrivateTools() -tacc.merge(acc5) -tacc.merge(SCT_DigitizationPUCfg(ConfigFlags)) -tacc.merge(SCT_DigitizationOverlayCfg(ConfigFlags)) -# reset to prevent errors on deletion -tacc.__init__() # Construct our accumulator to run acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(SCT_DigitizationHSCfg(ConfigFlags)) -# Add configuration to write HITS pool file -outConfig = OutputStreamCfg(ConfigFlags, "RDO", - ItemList=["InDet::SiClusterContainer#*", "SCT_RDO_Container#*"]) -acc.merge(outConfig) # Dump config acc.getService("StoreGateSvc").Dump = True acc.getService("ConditionStore").Dump = True diff --git a/InnerDetector/InDetDigitization/TRT_Digitization/CMakeLists.txt b/InnerDetector/InDetDigitization/TRT_Digitization/CMakeLists.txt index b90c97ac7e8..fe0b09ff1b1 100644 --- a/InnerDetector/InDetDigitization/TRT_Digitization/CMakeLists.txt +++ b/InnerDetector/InDetDigitization/TRT_Digitization/CMakeLists.txt @@ -44,6 +44,10 @@ atlas_add_component( TRT_Digitization INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${HEPPDT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} LINK_LIBRARIES ${ROOT_LIBRARIES} ${HEPPDT_LIBRARIES} ${CLHEP_LIBRARIES} ${EIGEN_LIBRARIES} GaudiKernel AthenaBaseComps AthenaKernel PileUpToolsLib AthenaPoolUtilities GeoModelUtilities GeoPrimitives Identifier EventInfo GeneratorObjects TRT_ConditionsData TRT_ConditionsServicesLib InDetIdentifier InDetReadoutGeometry InDetRawData InDetSimData InDetSimEvent MagFieldInterfaces HitManagement ) +atlas_add_test( TRT_DigitizationConfigNew_test + SCRIPT test/TRT_DigitizationConfigNew_test.py + PROPERTIES TIMEOUT 300 ) + # Install files from the package: atlas_install_headers( TRT_Digitization ) atlas_install_python_modules( python/*.py ) diff --git a/InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfigNew.py new file mode 100644 index 00000000000..4064f61c250 --- /dev/null +++ b/InnerDetector/InDetDigitization/TRT_Digitization/python/TRT_DigitizationConfigNew.py @@ -0,0 +1,146 @@ +"""Define methods to construct configured TRT Digitization tools and algorithms + +Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +""" +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from TRT_Digitization.TRT_DigitizationConf import TRTDigitizationTool, TRTDigitization +from TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg +from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg +from TRT_PAI_Process.TRT_PAI_ProcessConfigNew import TRT_PAI_Process_XeToolCfg +from TRT_PAI_Process.TRT_PAI_ProcessConfigNew import TRT_PAI_Process_ArToolCfg +from TRT_PAI_Process.TRT_PAI_ProcessConfigNew import TRT_PAI_Process_KrToolCfg +from PileUpComps.PileUpCompsConf import PileUpXingFolder +from PartPropSvc.PartPropSvcConf import PartPropSvc +from StoreGate.StoreGateConf import StoreGateSvc +from IOVDbSvc.IOVDbSvcConfig import addFolders +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg + +# The earliest and last bunch crossing times for which interactions will be sent +# to the TRT Digitization code +def TRT_FirstXing(): + return -50 + +def TRT_LastXing(): + return 50 + +def TRT_ItemList(): + """Return list of item names needed for TRT output""" + return ["InDet::TRT_DriftCircleContainer#*", "TRT_RDO_Container#*"] + +def TRT_RangeCfg(flags, name="TRTRange", **kwargs): + """Return an TRT configured PileUpXingFolder tool""" + kwargs.setdefault("FirstXing", TRT_FirstXing()) + kwargs.setdefault("LastXing", TRT_LastXing()) + kwargs.setdefault("CacheRefreshFrequency", 1.0) #default 0 no dataproxy reset + kwargs.setdefault("ItemList", ["TRTUncompressedHitCollection#TRTUncompressedHits"]) + return PileUpXingFolder(name, **kwargs) + +def TRT_DigitizationBasicToolCfg(flags, name="TRT_DigitizationBasicTool", **kwargs): + """Return a ComponentAccumulator with common TRT digitization tool config""" + acc = TRT_GeometryCfg(flags) + acc.merge(MagneticFieldSvcCfg(flags)) + # included options + acc.addService(PartPropSvc(InputFile="PDGTABLE.MeV=PDG")) + if flags.Detector.Overlay and flags.Input.isMC: + acc.merge(addFolders("/TRT/Cond/DigVers", "TRT_OFL")) + # default arguments + kwargs.setdefault("PAI_Tool_Xe", TRT_PAI_Process_XeToolCfg(flags)) + kwargs.setdefault("PAI_Tool_Ar", TRT_PAI_Process_ArToolCfg(flags)) + kwargs.setdefault("PAI_Tool_Kr", TRT_PAI_Process_KrToolCfg(flags)) + if not flags.Digitization.DoInnerDetectorNoise: + kwargs.setdefault("Override_noiseInSimhits", 0) + kwargs.setdefault("Override_noiseInUnhitStraws", 0) + kwargs.setdefault("Override_TrtRangeCutProperty", 0.05) # todo flags.InnerDetector.TRTRangeCut) + if flags.Beam.Type == "cosmics": + kwargs.setdefault("PrintDigSettings", True) + kwargs.setdefault("Override_cosmicFlag", 0) + kwargs.setdefault("Override_doCosmicTimingPit", 1) + kwargs.setdefault("Override_jitterTimeOffset", 0.) + kwargs.setdefault("Override_timeCorrection", 0) + if flags.Digitization.DoXingByXingPileUp: + kwargs.setdefault("FirstXing", TRT_FirstXing()) + kwargs.setdefault("LastXing", TRT_LastXing()) + tool = TRTDigitizationTool(name, **kwargs) + acc.setPrivateTools(tool) + return acc + +def TRT_DigitizationToolCfg(flags, name="TRT_DigitizationTool", **kwargs): + """Return a ComponentAccumulator with configured TRT digitization tool""" + if flags.Digitization.PileUpPremixing: + kwargs.setdefault("OutputObjectName", flags.Overlay.BkgPrefix + "TRT_RDOs") + kwargs.setdefault("OutputSDOName", flags.Overlay.BkgPrefix + "TRT_SDO_Map") + else: + kwargs.setdefault("OutputObjectName", "TRT_RDOs") + kwargs.setdefault("OutputSDOName", "TRT_SDO_Map") + kwargs.setdefault("HardScatterSplittingMode", 0) + return TRT_DigitizationBasicToolCfg(flags, name, **kwargs) + +def TRT_DigitizationGeantinoTruthToolCfg(flags, name="TRT_GeantinoTruthDigitizationTool", **kwargs): + """Return a ComponentAccumulator with Geantino configured TRT digitization tool""" + kwargs.setdefault("ParticleBarcodeVeto", 0) + return TRT_DigitizationToolCfg(flags, name, **kwargs) + +def TRT_DigitizationHSToolCfg(flags, name="TRT_DigitizationToolHS", **kwargs): + """Return a ComponentAccumulator with Hard Scatter configured TRT digitization tool""" + kwargs.setdefault("OutputObjectName", "TRT_RDOs") + kwargs.setdefault("OutputSDOName", "TRT_SDO_Map") + kwargs.setdefault("HardScatterSplittingMode", 1) + return TRT_DigitizationBasicToolCfg(flags, name, **kwargs) + +def TRT_DigitizationPUToolCfg(flags, name="TRT_DigitizationToolPU", **kwargs): + """Return a ComponentAccumulator with Pile Up configured TRT digitization tool""" + kwargs.setdefault("OutputObjectName", "TRT_PU_RDOs") + kwargs.setdefault("OutputSDOName", "TRT_PU_SDO_Map") + kwargs.setdefault("HardScatterSplittingMode", 2) + return TRT_DigitizationBasicToolCfg(flags, name, **kwargs) + +def TRT_DigitizationSplitNoMergePUToolCfg(flags, name="TRT_DigitizationToolSplitNoMergePU", **kwargs): + """Return a ComponentAccumulator with PileUpPixelHits configured TRT digitization tool""" + kwargs.setdefault("HardScatterSplittingMode", 0) + kwargs.setdefault("DataObjectName", "PileupTRTUncompressedHits") + kwargs.setdefault("OutputObjectName", "TRT_PU_RDOs") + kwargs.setdefault("OutputSDOName", "TRT_PU_SDO_Map") + kwargs.setdefault("Override_noiseInSimhits", 0) + kwargs.setdefault("Override_noiseInUnhitStraws", 0) + return TRT_DigitizationBasicToolCfg(flags, name, **kwargs) + +def TRT_DigitizationOverlayToolCfg(flags, name="TRT_OverlayDigitizationTool", **kwargs): + """Return a ComponentAccumulator with configured Overlay TRT digitization tool""" + acc = ComponentAccumulator() + acc.addService(StoreGateSvc(flags.Overlay.Legacy.EventStore)) + kwargs.setdefault("OutputObjectName", flags.Overlay.Legacy.EventStore + "+TRT_RDOs") + kwargs.setdefault("OutputSDOName", flags.Overlay.Legacy.EventStore + "+TRT_SDO_Map") + kwargs.setdefault("HardScatterSplittingMode", 0) + kwargs.setdefault("Override_getT0FromData", 0) + kwargs.setdefault("Override_noiseInSimhits", 0) + kwargs.setdefault("Override_noiseInUnhitStraws", 0) + kwargs.setdefault("Override_isOverlay", 1) + tool = acc.popToolsAndMerge(TRT_DigitizationBasicToolCfg(flags, name, **kwargs)) + acc.setPrivateTools(tool) + return acc + +def TRT_DigitizationCfg(toolCfg, flags, name="TRT_Digitization", **kwargs): + """Return a ComponentAccumulator with toolCfg type TRT digitization""" + acc = ComponentAccumulator() + if "DigitizationTool" not in kwargs: + tool = acc.popToolsAndMerge(toolCfg(flags)) + kwargs["DigitizationTool"] = tool + print("#"*200) + print(tool) + acc.addEventAlgo(TRTDigitization(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", TRT_ItemList())) + return acc + +def TRT_DigitizationHSCfg(flags, name="TRT_DigitizationHS", **kwargs): + """Return a ComponentAccumulator configured for Hard Scatter TRT digitization""" + return TRT_DigitizationCfg(TRT_DigitizationHSToolCfg, flags, name, **kwargs) + +def TRT_DigitizationPUCfg(flags, name="TRT_DigitizationPU", **kwargs): + """Return a ComponentAccumulator configured for Pile Up TRT digitization""" + return TRT_DigitizationCfg(TRT_DigitizationPUToolCfg, flags, name, **kwargs) + +def TRT_DigitizationOverlayCfg(flags, name="TRT_OverlayDigitization", **kwargs): + """Return a ComponentAccumulator configured for Overlay TRT digitization""" + return TRT_DigitizationCfg(TRT_DigitizationOverlayToolCfg, flags, name, **kwargs) + diff --git a/InnerDetector/InDetDigitization/TRT_Digitization/test/TRT_DigitizationConfigNew_test.py b/InnerDetector/InDetDigitization/TRT_Digitization/test/TRT_DigitizationConfigNew_test.py new file mode 100755 index 00000000000..6d04981e1a7 --- /dev/null +++ b/InnerDetector/InDetDigitization/TRT_Digitization/test/TRT_DigitizationConfigNew_test.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +"""Run tests on TRT_DigitizationConfigNew.py + +Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +""" +import sys +from AthenaCommon.Logging import log +from AthenaCommon.Constants import DEBUG +from AthenaCommon.Configurable import Configurable +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.AllConfigFlags import ConfigFlags +from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg +from AthenaConfiguration.TestDefaults import defaultTestFiles +from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg +from AtlasGeoModel.InDetGMConfig import InDetGeometryCfg +from TRT_Digitization.TRT_DigitizationConfigNew import TRT_DigitizationHSCfg +from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags +from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags + +# Set up logging and new style config +log.setLevel(DEBUG) +Configurable.configurableRun3Behavior = True +# Configure +ConfigFlags.join(createDigitizationCfgFlags()) +ConfigFlags.join(createOverlayCfgFlags()) +ConfigFlags.Input.Files = defaultTestFiles.HITS +ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16" +ConfigFlags.GeoModel.Align.Dynamic = False +ConfigFlags.Concurrency.NumThreads = 1 +ConfigFlags.lock() +# Construct our accumulator to run +acc = MainServicesSerialCfg() +acc.merge(PoolReadCfg(ConfigFlags)) +acc.merge(TRT_DigitizationHSCfg(ConfigFlags)) +# Dump config +acc.getService("StoreGateSvc").Dump = True +acc.getService("ConditionStore").Dump = True +acc.printConfig(withDetails=True) +ConfigFlags.dump() +# Execute and finish +sc = acc.run(maxEvents=3) +# Success should be 0 +sys.exit(not sc.isSuccess()) + diff --git a/InnerDetector/InDetSimUtils/TRT_PAI_Process/python/TRT_PAI_ProcessConfigNew.py b/InnerDetector/InDetSimUtils/TRT_PAI_Process/python/TRT_PAI_ProcessConfigNew.py new file mode 100644 index 00000000000..dee123833fa --- /dev/null +++ b/InnerDetector/InDetSimUtils/TRT_PAI_Process/python/TRT_PAI_ProcessConfigNew.py @@ -0,0 +1,21 @@ +"""Define methods to construct configured TRT_PAI_Process tools + +Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +""" +from TRT_PAI_Process.TRT_PAI_ProcessConf import TRT_PAI_Process + +def TRT_PAI_Process_XeToolCfg(flags, name="TRT_PAI_Process_Xe", **kwargs): + """Return a Xenon-configured TRT_PAI_Process""" + kwargs.setdefault("GasType", "Xenon") + return TRT_PAI_Process(name, **kwargs) + +def TRT_PAI_Process_ArToolCfg(flags, name="TRT_PAI_Process_Ar", **kwargs): + """Return an Argon-configured TRT_PAI_Process""" + kwargs.setdefault("GasType", "Argon") + return TRT_PAI_Process(name, **kwargs) + +def TRT_PAI_Process_KrToolCfg(flags, name="TRT_PAI_Process_Kr", **kwargs): + """Return a Krypton-configured TRT_PAI_Process""" + kwargs.setdefault("GasType", "Krypton") + return TRT_PAI_Process(name, **kwargs) + diff --git a/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py index b21d517cd77..4f45185c364 100644 --- a/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py +++ b/MuonSpectrometer/MuonDigitization/CSC_Digitization/python/CSC_DigitizationConfigNew.py @@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from StoreGate.StoreGateConf import StoreGateSvc +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg from MuonConfig.MuonCalibConfig import CscCoolStrSvcCfg from CSC_Digitization.CSC_DigitizationConf import ( @@ -19,6 +20,10 @@ def CSC_FirstXing(): def CSC_LastXing(): return 175 +def CSC_ItemList(): + """Return list of item names needed for CSC output""" + return ["MuonSimDataCollection#*", "CscSimDataCollection#CSC_SDO", "CscRawDataContainer#*"] + def CSC_RangeToolCfg(flags, name="CSC_Range", **kwargs): """Return a PileUpXingFolder tool configured for CSC""" kwargs.setdefault("FirstXing", CSC_FirstXing()) @@ -57,6 +62,8 @@ def CSC_DigitBuilderCfg(flags, name="CSC_DigitBuilder", **kwargs): tool = acc.popToolsAndMerge(CSC_DigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) acc.addEventAlgo(CscDigitBuilder(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", CSC_ItemList())) return acc def CSC_OverlayDigitizationToolCfg(flags, name="CSC_OverlayDigitizationTool",**kwargs): @@ -77,5 +84,7 @@ def CSC_OverlayDigitBuilderCfg(flags, name="CSC_OverlayDigitBuilder", **kwargs): tool = acc.popToolsAndMerge(CSC_OverlayDigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) acc.addEventAlgo(CscDigitBuilder(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", CSC_ItemList())) return acc diff --git a/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py index 273eb55f767..e8a4275eafb 100755 --- a/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py +++ b/MuonSpectrometer/MuonDigitization/CSC_Digitization/test/CSC_DigitizationConfigNew_test.py @@ -10,7 +10,6 @@ from AthenaCommon.Configurable import Configurable from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg -from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags from AthenaConfiguration.AllConfigFlags import ConfigFlags @@ -31,13 +30,6 @@ ConfigFlags.lock() acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(CSC_DigitBuilderCfg(ConfigFlags)) -# Add configuration to write HITS pool file -ItemList = [ - "CscSimDataCollection#CSC_SDO", - "MuonSimDataCollection#*", - "CscRawDataContainer#*", -] -acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList)) # Dump config acc.getService("StoreGateSvc").Dump = True acc.getService("ConditionStore").Dump = True diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py index e3c0488e4bf..377f6ba2137 100644 --- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py +++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MDT_DigitizationConfigNew.py @@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from StoreGate.StoreGateConf import StoreGateSvc +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg from MDT_Digitization.MDT_DigitizationConf import ( MdtDigitizationTool, MDT_Response_DigiTool, RT_Relation_DB_DigiTool, MDT_Digitizer @@ -19,6 +20,10 @@ def MDT_LastXing(): # was 800 for large time window return 150 +def MDT_ItemList(): + """Return list of item names needed for MDT output""" + return ["MuonSimDataCollection#*", "MdtCsmContainer#*"] + def MDT_RangeToolCfg(flags, name="MDT_Range", **kwargs): """Return a PileUpXingFolder tool configured for MDT""" kwargs.setdefault("FirstXing", MDT_FirstXing()) @@ -65,6 +70,8 @@ def MDT_DigitizerCfg(flags, name="MDT_Digitizer", **kwargs): tool = acc.popToolsAndMerge(MDT_DigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) acc.addEventAlgo(MDT_Digitizer(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", MDT_ItemList())) return acc def MDT_OverlayDigitizationToolCfg(flags, name="MDT_OverlayDigitizationTool",**kwargs): @@ -84,5 +91,7 @@ def MDT_OverlayDigitizerCfg(flags, name="MDT_OverlayDigitizer", **kwargs): tool = acc.popToolsAndMerge(MDT_OverlayDigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) acc.addEventAlgo(MDT_Digitizer(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", MDT_ItemList())) return acc diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py index 4619c070e44..8d315f05c3f 100755 --- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py +++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/test/MDT_DigitizationConfigNew_test.py @@ -10,7 +10,6 @@ from AthenaCommon.Configurable import Configurable from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg -from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from AthenaConfiguration.AllConfigFlags import ConfigFlags from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags @@ -30,12 +29,6 @@ ConfigFlags.lock() acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(MDT_DigitizerCfg(ConfigFlags)) -# Add configuration to write HITS pool file -ItemList = [ - "MuonSimDataCollection#*", - "MdtCsmContainer#*", -] -acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList)) # Dump config acc.getService("StoreGateSvc").Dump = True acc.getService("ConditionStore").Dump = True diff --git a/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py index efd6075344d..c8cbb8b5c87 100644 --- a/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py +++ b/MuonSpectrometer/MuonDigitization/RPC_Digitization/python/RPC_DigitizationConfigNew.py @@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from StoreGate.StoreGateConf import StoreGateSvc +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg from RPC_Digitization.RPC_DigitizationConf import RpcDigitizationTool, RPC_Digitizer from PileUpComps.PileUpCompsConf import PileUpXingFolder @@ -17,6 +18,10 @@ def RPC_FirstXing(): def RPC_LastXing(): return 125 +def RPC_ItemList(): + """Return list of item names needed for RPC output""" + return ["MuonSimDataCollection#*", "RpcPadContainer#*"] + def RPC_RangeToolCfg(flags, name="RPC_Range", **kwargs): """Return a PileUpXingFolder tool configured for RPC""" kwargs.setdefault("FirstXing", RPC_FirstXing()) @@ -80,6 +85,8 @@ def RPC_DigitizerCfg(flags, name="RPC_Digitizer", **kwargs): tool = acc.popToolsAndMerge(RPC_DigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) acc.addEventAlgo(RPC_Digitizer(name,**kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", RPC_ItemList())) return acc def RPC_OverlayDigitizationToolCfg(flags, name="RPC_DigitizationTool", **kwargs): @@ -98,6 +105,8 @@ def RPC_OverlayDigitizerCfg(flags, name="RPC_OverlayDigitizer", **kwargs): acc = MuonGeoModelCfg(flags) tool = acc.popToolsAndMerge(RPC_OverlayDigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) - acc.addEventAlgo(RPC_Digitizer(name,**kwargs)) + acc.addEventAlgo(RPC_Digitizer(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", RPC_ItemList())) return acc diff --git a/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py index f6a3bddc490..66b438930d4 100755 --- a/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py +++ b/MuonSpectrometer/MuonDigitization/RPC_Digitization/test/RPC_DigitizationConfigNew_test.py @@ -10,7 +10,6 @@ from AthenaCommon.Configurable import Configurable from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg -from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from AthenaConfiguration.AllConfigFlags import ConfigFlags from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags @@ -34,12 +33,6 @@ ConfigFlags.lock() acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(RPC_DigitizerCfg(ConfigFlags)) -# Add configuration to write HITS pool file -ItemList = [ - "MuonSimDataCollection#*", - "RpcPadContainer#*", -] -acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList)) # Dump config acc.getService("StoreGateSvc").Dump = True acc.getService("ConditionStore").Dump = True diff --git a/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py b/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py index d562ab5346e..5a4227425a8 100644 --- a/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py +++ b/MuonSpectrometer/MuonDigitization/TGC_Digitization/python/TGC_DigitizationConfigNew.py @@ -4,6 +4,7 @@ Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from StoreGate.StoreGateConf import StoreGateSvc +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg from TGC_Digitization.TGC_DigitizationConf import TgcDigitizationTool, TGCDigitizer from PileUpComps.PileUpCompsConf import PileUpXingFolder @@ -16,6 +17,10 @@ def TGC_FirstXing(): def TGC_LastXing(): return 75 +def TGC_ItemList(): + """Return list of item names needed for TGC output""" + return ["MuonSimDataCollection#*", "TgcRdoContainer#*"] + def TGC_RangeToolCfg(flags, name="TGC_Range", **kwargs): """Return a PileUpXingFolder tool configured for TGC""" kwargs.setdefault("FirstXing", TGC_FirstXing()) @@ -44,6 +49,8 @@ def TGC_DigitizerCfg(flags, name="TGC_Digitizer", **kwargs): tool = acc.popToolsAndMerge(TGC_DigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) acc.addEventAlgo(TGCDigitizer(name,**kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", TGC_ItemList())) return acc def TGC_OverlayDigitizationToolCfg(flags, name="TGC_OverlayDigitizationTool", **kwargs): @@ -54,7 +61,7 @@ def TGC_OverlayDigitizationToolCfg(flags, name="TGC_OverlayDigitizationTool", ** if not flags.Detector.Overlay: kwargs.setdefault("OutputSDOName", flags.Overlay.Legacy.EventStore + "+TGC_SDO") kwargs.setdefault("EvtStore", flags.Overlay.Legacy.EventStore) - acc.setPrivateTools(TgcDigitizationTool(name,**kwargs)) + acc.setPrivateTools(TgcDigitizationTool(name, **kwargs)) return acc def TGC_OverlayDigitizerCfg(flags, name="TGC_OverlayDigitizer", **kwargs): @@ -62,6 +69,8 @@ def TGC_OverlayDigitizerCfg(flags, name="TGC_OverlayDigitizer", **kwargs): acc = MuonGeoModelCfg(flags) tool = acc.popToolsAndMerge(TGC_OverlayDigitizationToolCfg(flags)) kwargs.setdefault("DigitizationTool", tool) - acc.addEventAlgo(TGCDigitizer(name,**kwargs)) + acc.addEventAlgo(TGCDigitizer(name, **kwargs)) + # FIXME once OutputStreamCfg merges correctly + #acc.merge(OutputStreamCfg(flags, "RDO", TGC_ItemList())) return acc diff --git a/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py b/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py index 6e2829991db..464aab67813 100755 --- a/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py +++ b/MuonSpectrometer/MuonDigitization/TGC_Digitization/test/TGC_DigitizationConfigNew_test.py @@ -10,7 +10,6 @@ from AthenaCommon.Configurable import Configurable from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg -from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags from AthenaConfiguration.AllConfigFlags import ConfigFlags @@ -34,12 +33,6 @@ ConfigFlags.lock() acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(TGC_DigitizerCfg(ConfigFlags)) -# Add configuration to write HITS pool file -ItemList = [ - "MuonSimDataCollection#*", - "TgcRdoContainer#*", -] -acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList)) # Dump config acc.getService("StoreGateSvc").Dump = True acc.getService("ConditionStore").Dump = True diff --git a/Simulation/Digitization/test/DigitizationConfigNew_test.py b/Simulation/Digitization/test/DigitizationConfigNew_test.py index aa8471b1624..c6d95a6640b 100755 --- a/Simulation/Digitization/test/DigitizationConfigNew_test.py +++ b/Simulation/Digitization/test/DigitizationConfigNew_test.py @@ -7,16 +7,16 @@ import sys from AthenaCommon.Logging import log from AthenaCommon.Constants import DEBUG from AthenaCommon.Configurable import Configurable -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.AllConfigFlags import ConfigFlags from AthenaConfiguration.MainServicesConfig import MainServicesSerialCfg from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg -from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from Digitization.DigitizationConfigFlags import createDigitizationCfgFlags from OverlayCommonAlgs.OverlayConfigFlags import createOverlayCfgFlags from BCM_Digitization.BCM_DigitizationConfigNew import BCM_DigitizationCfg from SCT_Digitization.SCT_DigitizationConfigNew import SCT_DigitizationHSCfg +from TRT_Digitization.TRT_DigitizationConfigNew import TRT_DigitizationHSCfg +from PixelDigitization.PixelDigitizationConfigNew import PixelDigitizationHSCfg from MDT_Digitization.MDT_DigitizationConfigNew import MDT_DigitizerCfg from TGC_Digitization.TGC_DigitizationConfigNew import TGC_DigitizerCfg from RPC_Digitization.RPC_DigitizationConfigNew import RPC_DigitizerCfg @@ -33,30 +33,33 @@ ConfigFlags.Output.RDOFileName = "myRDO.pool.root" ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16" ConfigFlags.GeoModel.Align.Dynamic = False ConfigFlags.Concurrency.NumThreads = 1 +ConfigFlags.GeoModel.Type = "BrlIncl4.0_ref" +ConfigFlags.Beam.NumberOfCollisions = 0. ConfigFlags.lock() # Construct our accumulator to run acc = MainServicesSerialCfg() acc.merge(PoolReadCfg(ConfigFlags)) acc.merge(BCM_DigitizationCfg(ConfigFlags)) acc.merge(SCT_DigitizationHSCfg(ConfigFlags)) +acc.merge(TRT_DigitizationHSCfg(ConfigFlags)) +acc.merge(PixelDigitizationHSCfg(ConfigFlags)) acc.merge(MDT_DigitizerCfg(ConfigFlags)) acc.merge(TGC_DigitizerCfg(ConfigFlags)) acc.merge(RPC_DigitizerCfg(ConfigFlags)) acc.merge(CSC_DigitBuilderCfg(ConfigFlags)) -# add output configuration -ItemList = [ - "InDetSimDataCollection#*", - "BCM_RDO_Container#*", - "InDet::SiClusterContainer#*", - "SCT_RDO_Container#*", - "MuonSimDataCollection#*", - "MdtCsmContainer#*", - "TgcRdoContainer#*", - "RpcPadContainer#*", - "CscSimDataCollection#CSC_SDO", - "CscRawDataContainer#*", -] -acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList=ItemList)) +# FIXME once OutputStreamCfg merges correctly +from BCM_Digitization.BCM_DigitizationConfigNew import BCM_ItemList +from SCT_Digitization.SCT_DigitizationConfigNew import SCT_ItemList +from TRT_Digitization.TRT_DigitizationConfigNew import TRT_ItemList +from PixelDigitization.PixelDigitizationConfigNew import PixelItemList +from MDT_Digitization.MDT_DigitizationConfigNew import MDT_ItemList +from TGC_Digitization.TGC_DigitizationConfigNew import TGC_ItemList +from RPC_Digitization.RPC_DigitizationConfigNew import RPC_ItemList +from CSC_Digitization.CSC_DigitizationConfigNew import CSC_ItemList +from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg +ItemList = BCM_ItemList() + SCT_ItemList() + TRT_ItemList() + PixelItemList() + MDT_ItemList() + TGC_ItemList() + RPC_ItemList() + CSC_ItemList() +ItemList = list(set(ItemList)) # remove duplicates +acc.merge(OutputStreamCfg(ConfigFlags, "RDO", ItemList)) # Dump config acc.getService("StoreGateSvc").Dump = True acc.getService("ConditionStore").Dump = True -- GitLab