From 4af848a41131d0c11604306660a837239a1b7fd9 Mon Sep 17 00:00:00 2001
From: Susumu Oda <susumu.oda@cern.ch>
Date: Tue, 13 Oct 2020 04:21:35 +0200
Subject: [PATCH 1/2] Clean-ups of SCT_DCSConditionsCfg,
 SCT_SiliconConditionsCfg, SCT_SiPropertiesCfg and SCT_LorentzAngleCfg and
 their usages in clients. Add SCT_SiliconConditionsTestAlgConfig.py.

---
 .../python/SCT_DCSConditionsTestAlgConfig.py  |  2 +-
 .../SCT_SiliconConditionsTestAlgConfig.py     | 42 ++++++++++++
 .../python/SCT_DCSConditionsConfig.py         | 48 +++++++-------
 .../python/SCT_SiliconConditionsConfig.py     | 34 ++++++----
 .../python/SCT_SiliconConditionsToolSetup.py  | 21 ------
 .../test/SCT_ConditionsConfig_test.py         |  5 +-
 .../python/SCTSiLorentzAngleTestAlgConfig.py  |  3 +-
 .../python/SCT_LorentzAngleConfig.py          | 64 +++++++++----------
 .../python/SCTSiPropertiesTestAlgConfig.py    |  2 +-
 .../python/SCT_SiPropertiesConfig.py          | 45 ++++++-------
 .../python/SCT_DigitizationConfigNew.py       | 14 ++--
 .../TrigInDetConfig/python/TrigInDetConfig.py | 18 ------
 12 files changed, 147 insertions(+), 151 deletions(-)
 create mode 100644 InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_SiliconConditionsTestAlgConfig.py

diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_DCSConditionsTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_DCSConditionsTestAlgConfig.py
index f10267f7376f..4692ba33c8e5 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_DCSConditionsTestAlgConfig.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_DCSConditionsTestAlgConfig.py
@@ -23,7 +23,7 @@ if __name__=="__main__":
     
     from AthenaConfiguration.AllConfigFlags import ConfigFlags
     ConfigFlags.Input.isMC = False
-    ConfigFlags.Input.ProjectName = "data17_13TeV"
+    ConfigFlags.Input.ProjectName = "data16_13TeV"
     ConfigFlags.Input.RunNumber = 310809
     ConfigFlags.addFlag("Input.InitialTimeStamp", 1476741326) # LB 18 of run 310809, 10/17/2016 @ 9:55pm (UTC)
     ConfigFlags.IOVDb.GlobalTag = "CONDBR2-BLKPA-2017-06"
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_SiliconConditionsTestAlgConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_SiliconConditionsTestAlgConfig.py
new file mode 100644
index 000000000000..158e55b26266
--- /dev/null
+++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/python/SCT_SiliconConditionsTestAlgConfig.py
@@ -0,0 +1,42 @@
+"""Define method to configure and test SCT_SiliconConditionsTestAlgConfig
+
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+"""
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+def SCT_SiliconConditionsTestAlgCfg(flags, name="SCT_SiliconConditionsTestAlg", **kwargs):
+    """Return a configured SCT_SiliconConditionsTestAlg"""
+    acc = ComponentAccumulator()
+    from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsCfg
+    kwargs.setdefault("SCT_SiliconConditionsTool", acc.popToolsAndMerge(SCT_SiliconConditionsCfg(flags)))
+    acc.addEventAlgo(CompFactory.SCT_SiliconConditionsTestAlg(**kwargs))
+    return acc
+
+if __name__=="__main__":
+    from AthenaCommon.Logging import log
+    from AthenaCommon.Constants import INFO
+    log.setLevel(INFO)
+
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior=1
+    
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.Input.isMC = True
+    ConfigFlags.Input.ProjectName = "mc16_13TeV"
+    ConfigFlags.Input.RunNumber = 300000 # MC16c 2017 run number
+    ConfigFlags.addFlag("Input.InitialTimeStamp", 1500000000) # MC16c 2017 time stamp
+    ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-18"
+    ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2015-03-01-00"
+    ConfigFlags.Detector.GeometrySCT = True
+    ConfigFlags.lock()
+
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    cfg = MainServicesCfg(ConfigFlags)
+
+    from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
+    cfg.merge(McEventSelectorCfg(ConfigFlags))
+
+    cfg.merge(SCT_SiliconConditionsTestAlgCfg(ConfigFlags))
+
+    cfg.run(maxEvents=20)
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py
index 02b7f4e2c454..5e9f8f53296d 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_DCSConditionsConfig.py
@@ -1,6 +1,6 @@
 """Define methods to configure SCT_DCSConditions
 
-Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -11,42 +11,46 @@ SCT_DCSConditionsStatCondAlg=CompFactory.SCT_DCSConditionsStatCondAlg
 SCT_DCSConditionsHVCondAlg=CompFactory.SCT_DCSConditionsHVCondAlg
 SCT_DCSConditionsTempCondAlg=CompFactory.SCT_DCSConditionsTempCondAlg
 
-def SCT_DCSConditionsToolCfg(flags, name="InDetSCT_DCSConditionsTool", **kwargs):
-    """Return a configured SCT_DCSConditionsTool"""
-    kwargs.setdefault("ReadAllDBFolders", True)
-    kwargs.setdefault("ReturnHVTemp", True)
-    return SCT_DCSConditionsTool(name, **kwargs)
-
 def SCT_DCSConditionsCfg(flags, name="InDetSCT_DCSConditions", **kwargs):
-    """Return configured ComponentAccumulator and tool for SCT_DCSConditions
-
-    DCSConditionsTool may be provided in kwargs
+    """Configure necessary condition folders, condition algorithms 
+       for SCT_DCSConditionsTool and return it.
     """
     acc = ComponentAccumulator()
-    acc.merge(GeoModelCfg(flags)) # For SCT_ID used in SCT_DCSConditionsTool
-    tool = kwargs.get("DCSConditionsTool", SCT_DCSConditionsToolCfg(flags))
-    # folder arguments
-    dbInstance = kwargs.get("dbInstance", "DCS_OFL")
-    hvFolder = kwargs.get("hvFolder", "/SCT/DCS/HV")
-    tempFolder = kwargs.get("tempFolder", "/SCT/DCS/MODTEMP")
-    stateFolder = kwargs.get("stateFolder", "/SCT/DCS/CHANSTAT")
-    if tool.ReadAllDBFolders == tool.ReturnHVTemp:
+
+    # Condition folders
+    isDataHLT = flags.Common.isOnline and not flags.Input.isMC
+    dcsFolder = "/SCT/HLT/DCS" if isDataHLT else "/SCT/DCS"
+    dbInstance = kwargs.get("dbInstance", "SCT" if isDataHLT else "DCS_OFL")
+    hvFolder = kwargs.get("hvFolder", dcsFolder + "/HV")
+    tempFolder = kwargs.get("tempFolder", dcsFolder + "/MODTEMP")
+    stateFolder = kwargs.get("stateFolder", dcsFolder + "/CHANSTAT")
+    ReadAllDBFolders = kwargs.get("ReadAllDBFolders", True)
+    ReturnHVTemp = kwargs.get("ReturnHVTemp", True)
+
+    # Condition algorithms
+    if ReadAllDBFolders == ReturnHVTemp:
         acc.merge(addFolders(flags, stateFolder, dbInstance, className="CondAttrListCollection"))
         # algo
         statArgs = {
             "name": name + "StatCondAlg",
-            "ReturnHVTemp": tool.ReturnHVTemp,
+            "ReturnHVTemp": ReturnHVTemp,
             "ReadKeyHV": hvFolder,
             "ReadKeyState": stateFolder,
         }
         statAlg = SCT_DCSConditionsStatCondAlg(**statArgs)
         acc.addCondAlgo(statAlg)
-    if tool.ReturnHVTemp:
+    if ReturnHVTemp:
         acc.merge(addFolders(flags, [hvFolder, tempFolder], dbInstance, className="CondAttrListCollection"))
         hvAlg = SCT_DCSConditionsHVCondAlg(name=name + "HVCondAlg", ReadKey=hvFolder)
         acc.addCondAlgo(hvAlg)
         tempAlg = SCT_DCSConditionsTempCondAlg(name=name + "TempCondAlg", ReadKey=tempFolder)
         acc.addCondAlgo(tempAlg)
-    acc.setPrivateTools(tool)
-    return acc
 
+    # Condition tool
+    acc.merge(GeoModelCfg(flags)) # For SCT_ID used in SCT_DCSConditionsTool
+    toolkwargs = {}
+    toolkwargs["ReadAllDBFolders"] = ReadAllDBFolders
+    toolkwargs["ReturnHVTemp"] = ReturnHVTemp
+    acc.setPrivateTools(SCT_DCSConditionsTool(name="InDetSCT_DCSConditionsTool", **toolkwargs))
+
+    return acc
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py
index f021bdfebea5..92ce58e85f68 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsConfig.py
@@ -5,29 +5,37 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AtlasGeoModel.GeoModelConfig import GeoModelCfg
+from SCT_ConditionsTools.SCT_DCSConditionsConfig import SCT_DCSConditionsCfg
 SCT_SiliconHVCondAlg=CompFactory.SCT_SiliconHVCondAlg
 SCT_SiliconTempCondAlg=CompFactory.SCT_SiliconTempCondAlg
 SCT_SiliconConditionsTool=CompFactory.SCT_SiliconConditionsTool
 
-def SCT_SiliconConditionsToolCfg(flags, name="SCT_SiliconConditionsTool", **kwargs):
-    """Return a configured SCT_SiliconConditionsTool (a.k.a. SiConditionsTool)"""
-    kwargs.setdefault("UseDB", True)
-    kwargs.setdefault("ForceUseGeoModel", False)
-    return SCT_SiliconConditionsTool(name, **kwargs)
-
 def SCT_SiliconConditionsCfg(flags, name="SCT_Silicon", **kwargs):
     """Return a ComponentAccumulator configured for SiliconConditions DB
 
     DCSConditionsTool may be provided in kwargs
     """
     acc = ComponentAccumulator()
-    acc.merge(GeoModelCfg(flags)) # For SCT_ID used in SCT_SiliconConditionsTool
-    CondArgs = {}
+
+    # Condition algorithms
+    algkwargs = {}
     DCSConditionsTool = kwargs.get("DCSConditionsTool")
     if DCSConditionsTool:
-        CondArgs["UseState"] = DCSConditionsTool.ReadAllDBFolders
-        CondArgs["DCSConditionsTool"] = DCSConditionsTool
-    acc.addCondAlgo(SCT_SiliconHVCondAlg(name=name + "HVCondAlg", **CondArgs))
-    acc.addCondAlgo(SCT_SiliconTempCondAlg(name=name + "TempCondAlg", **CondArgs))
-    return acc
+        algkwargs["UseState"] = DCSConditionsTool.ReadAllDBFolders
+        algkwargs["DCSConditionsTool"] = DCSConditionsTool
+    else:
+        algkwargs["UseState"] = True
+        algkwargs["DCSConditionsTool"] = acc.popToolsAndMerge(SCT_DCSConditionsCfg(flags))
+    # For SCT_ID used in SCT_SiliconHVCondAlg,
+    # SCT_SiliconTempCondAlg and SCT_SiliconConditionsTool
+    acc.merge(GeoModelCfg(flags))
+    acc.addCondAlgo(SCT_SiliconHVCondAlg(name=name + "HVCondAlg", **algkwargs))
+    acc.addCondAlgo(SCT_SiliconTempCondAlg(name=name + "TempCondAlg", **algkwargs))
 
+    # Condition tool
+    toolkwargs = {}
+    toolkwargs["UseDB"] = kwargs.get("UseDB", True)
+    toolkwargs["ForceUseGeoModel"] = kwargs.get("ForceUseGeoModel", False)
+    acc.setPrivateTools(SCT_SiliconConditionsTool(name="SCT_SiliconConditionsTool", **toolkwargs))
+
+    return acc
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsToolSetup.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsToolSetup.py
index 7a304eb9800e..11d7c9442a1e 100644
--- a/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsToolSetup.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/python/SCT_SiliconConditionsToolSetup.py
@@ -87,24 +87,3 @@ class SCT_SiliconConditionsToolSetup:
             self.setAlgs()
         self.setTool()
         self.tool.UseDB = self.useDB
-
-def SCT_SiliconConditionsCfg( flags, toolName, dcsTool=None, hvAlgName="SCT_SiliconHVCondAlg"):
-    """
-    Sets up necessary tools for ID reco in trigger 
-    TDOD: Experts review to cover other use cases (i.e. missing dcsTool, dependence on flags)
-    """
-    from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
-    from AthenaConfiguration.ComponentFactory import CompFactory
-    acc = ComponentAccumulator()
-
-    tool = CompFactory.SCT_SiliconConditionsTool(toolName,
-                                                 UseDB = True, # TODO: repalce by the flag once there
-                                                 ForceUseGeoModel = False ) # TODO: derive from flags
-    acc.setPrivateTools( tool )
-
-    condAlg = CompFactory.SCT_SiliconHVCondAlg(name = hvAlgName,
-                                               UseState = dcsTool.ReadAllDBFolders,
-                                               DCSConditionsTool = dcsTool)
-    acc.addCondAlgo( condAlg )
-    return acc
-    
diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py b/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py
index 3f0991b93aec..a220eecaa94d 100755
--- a/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py
+++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/test/SCT_ConditionsConfig_test.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 """Run tests on SCT_ConditionsTools/python/*Config.py scripts
 
-Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
@@ -10,7 +10,7 @@ from AthenaCommon.Logging import log
 from AthenaCommon.Constants import DEBUG
 from AthenaCommon.Configurable import Configurable
 from SCT_ConditionsTools.SCT_DCSConditionsConfig import SCT_DCSConditionsCfg
-from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsToolCfg, SCT_SiliconConditionsCfg
+from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsCfg
 from SCT_ConditionsTools.SCT_ReadCalibChipDataConfig import SCT_ReadCalibChipDataCfg
 
 # test setup
@@ -18,7 +18,6 @@ log.setLevel(DEBUG)
 Configurable.configurableRun3Behavior = True
 ConfigFlags.Input.Files = defaultTestFiles.HITS
 # call tests
-tool = SCT_SiliconConditionsToolCfg(ConfigFlags, name="SiliconTestTool")
 dcs_acc = SCT_DCSConditionsCfg(ConfigFlags, name="DCSTest")
 dcs_acc.popPrivateTools()
 acc1=SCT_SiliconConditionsCfg(ConfigFlags, name="SiliconTest")
diff --git a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCTSiLorentzAngleTestAlgConfig.py b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCTSiLorentzAngleTestAlgConfig.py
index 3e9748a05777..831eb0cb7d6a 100644
--- a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCTSiLorentzAngleTestAlgConfig.py
+++ b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCTSiLorentzAngleTestAlgConfig.py
@@ -4,10 +4,12 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
+from AtlasGeoModel.GeoModelConfig import GeoModelCfg
 
 def SCTSiLorentzAngleTestAlgCfg(flags, name="SCTSiLorentzAngleTestAlg", **kwargs):
     """Return a configured SCTSiLorentzAngleTestAlg"""
     acc = ComponentAccumulator()
+    acc.merge(GeoModelCfg(flags)) # For SCT_ID used in SCTSiLorentzAngleTestAlg
     from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleCfg
     kwargs.setdefault("SCTLorentzAngleTool", acc.popToolsAndMerge(SCT_LorentzAngleCfg(flags)))
     acc.addEventAlgo(CompFactory.SCTSiLorentzAngleTestAlg(**kwargs))
@@ -40,4 +42,3 @@ if __name__=="__main__":
     cfg.merge(SCTSiLorentzAngleTestAlgCfg(ConfigFlags))
 
     cfg.run(maxEvents=20)
-                                                                                                                                
diff --git a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py
index 285669e10bfe..c56b48688ef6 100644
--- a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py
+++ b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py
@@ -3,53 +3,47 @@
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaCommon import Logging
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 SiLorentzAngleTool=CompFactory.SiLorentzAngleTool
 SCTSiLorentzAngleCondAlg=CompFactory.SCTSiLorentzAngleCondAlg
-from SCT_ConditionsTools.SCT_DCSConditionsConfig import SCT_DCSConditionsCfg
 from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsCfg
 from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg
 from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg
 
-def SCT_LorentzAngleToolCfg(flags, name="SCT_LorentzAngleTool", **kwargs):
-    """Return a SiLorentzAngleTool configured for SCT"""
-    kwargs.setdefault("DetectorName", "SCT")
-    kwargs.setdefault("SiLorentzAngleCondData", "SCTSiLorentzAngleCondData")
-    kwargs.setdefault("DetEleCollKey", "SCT_DetectorElementCollection")
-    kwargs.setdefault("UseMagFieldCache", True)
-    return SiLorentzAngleTool(name, **kwargs)
-
 def SCT_LorentzAngleCfg(flags, name="SCT_SiLorentzAngleCondAlg",
-                        forceUseDB=False, forceUseGeoModel=False, **kwargs):
+                        forceUseGeoModel=False, **kwargs):
     """Return configured ComponentAccumulator and tool for SCT_LorentzAngle
 
-    SiLorentzAngleTool may be provided in kwargs
+    SiConditionsTool and/or DCSConditionsTool may be provided in kwargs
     """
-    if forceUseDB and forceUseGeoModel:
-        msg = Logging.logging.getLogger("SCT_LorentzAngleCfg")
-        msg.error("Setting is wrong: both forceUseDB and forceUseGeoModel cannot be True at the same time")
+    # Condition algorithm
     # construct with field services
     acc = MagneticFieldSvcCfg(flags)
-    acc.merge(SCT_GeometryCfg(flags)) # For SCT_DetectorElementCollection used in SCTSiLorentzAngleCondAlg
-    tool = kwargs.get("SiLorentzAngleTool", SCT_LorentzAngleToolCfg(flags))
-    if not forceUseGeoModel:
-        DCSkwargs = {}
-        # For HLT
-        if flags.Common.isOnline and not flags.Input.isMC:
-            dcs_folder = "/SCT/HLT/DCS"
-            DCSkwargs["dbInstance"] = "SCT"
-            DCSkwargs["hvFolder"] = dcs_folder + "/HV"
-            DCSkwargs["tempFolder"] = dcs_folder + "/MODTEMP"
-            DCSkwargs["stateFolder"] = dcs_folder + "/CHANSTAT"
-        DCSAcc = SCT_DCSConditionsCfg(flags, **DCSkwargs)
-        SCAcc = SCT_SiliconConditionsCfg(flags, DCSConditionsTool=DCSAcc.popPrivateTools())
-        acc.merge(DCSAcc)
-        acc.merge(SCAcc)
+    # For SCT_ID and SCT_DetectorElementCollection used
+    # in SCTSiLorentzAngleCondAlg and SiLorentzAngleTool
+    acc.merge(SCT_GeometryCfg(flags))
     # set up SCTSiLorentzAngleCondAlg
-    kwargs.setdefault("UseMagFieldCache", tool.UseMagFieldCache)
-    kwargs.setdefault("UseMagFieldDcs", not flags.Common.isOnline)
-    kwargs.setdefault("UseGeoModel", forceUseGeoModel)
-    kwargs.setdefault("useSctDefaults", False)
-    acc.addCondAlgo(SCTSiLorentzAngleCondAlg(name, **kwargs))
-    acc.setPrivateTools(tool)
+    algkwargs = {}
+    algkwargs["UseMagFieldCache"] = kwargs.get("UseMagFieldCache", True)
+    algkwargs["UseMagFieldDcs"] = kwargs.get("UseMagFieldDcs", not flags.Common.isOnline)
+    algkwargs["UseGeoModel"] = forceUseGeoModel
+    algkwargs["useSctDefaults"] = kwargs.get("useSctDefaults", False)
+    if not algkwargs["useSctDefaults"]:
+        if kwargs.get("SiConditionsTool"):
+            algkwargs["SiConditionsTool"] = kwargs.get("SiConditionsTool")
+        else:
+            sikwargs = {}
+            if kwargs.get("DCSConditionsTool"):
+                sikwargs["DCSConditionsTool"] = kwargs.get("DCSConditionsTool")
+            sikwargs["ForceUseGeoModel"] = forceUseGeoModel
+            algkwargs["SiConditionsTool"] = acc.popToolsAndMerge(SCT_SiliconConditionsCfg(flags, **sikwargs))
+    acc.addCondAlgo(SCTSiLorentzAngleCondAlg(name, **algkwargs))
+
+    # Condition tool
+    toolkwargs = {}
+    toolkwargs["DetectorName"] = "SCT"
+    toolkwargs["DetEleCollKey"] = "SCT_DetectorElementCollection"
+    toolkwargs["SiLorentzAngleCondData"] = "SCTSiLorentzAngleCondData"
+    acc.setPrivateTools(SiLorentzAngleTool(name, **toolkwargs))
     return acc
diff --git a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCTSiPropertiesTestAlgConfig.py b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCTSiPropertiesTestAlgConfig.py
index 953b46357086..14c994de6b0b 100644
--- a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCTSiPropertiesTestAlgConfig.py
+++ b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCTSiPropertiesTestAlgConfig.py
@@ -24,7 +24,7 @@ if __name__=="__main__":
     from AthenaConfiguration.AllConfigFlags import ConfigFlags
     ConfigFlags.Input.isMC = True
     ConfigFlags.Input.ProjectName = "mc16_13TeV"
-    ConfigFlags.Input.RunNumber = [300000] # MC16c 2017 run number
+    ConfigFlags.Input.RunNumber = 300000 # MC16c 2017 run number
     ConfigFlags.addFlag("Input.InitialTimeStamp", 1500000000) # MC16c 2017 time stamp
     ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-18"
     ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2015-03-01-00"
diff --git a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py
index f8324a83f0e9..53b9c05119a3 100644
--- a/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py
+++ b/InnerDetector/InDetConditions/SiPropertiesTool/python/SCT_SiPropertiesConfig.py
@@ -4,43 +4,36 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
-from SCT_ConditionsTools.SCT_DCSConditionsConfig import SCT_DCSConditionsCfg
 from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsCfg
 from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg
 SiPropertiesTool=CompFactory.SiPropertiesTool
 SCTSiPropertiesCondAlg=CompFactory.SCTSiPropertiesCondAlg
 
-def SCT_SiPropertiesToolCfg(flags, name="SCT_SiPropertiesTool", **kwargs):
-    """Return a SiPropertiesTool configured for SCT"""
-    kwargs.setdefault("DetectorName", "SCT")
-    kwargs.setdefault("ReadKey", "SCTSiliconPropertiesVector")
-    return SiPropertiesTool(name=name, **kwargs)
-
 def SCT_SiPropertiesCfg(flags, name="SCTSiPropertiesCondAlg", **kwargs):
     """Return configured ComponentAccumulator and tool for SCT_SiProperties
 
-    SiConditionsTool and/or SiPropertiesTool may be provided in kwargs
+    SiConditionsTool and/or DCSConditionsTool may be provided in kwargs
     """
     acc = ComponentAccumulator()
 
-    acc.merge(SCT_GeometryCfg(flags)) # For SCT_DetectorElementCollection used in SCTSiPropertiesCondAlg
+    # Condition algorithm
+    # SCTSiPropertiesCondAlg needs outputs of SCT_SiliconConditions algorithms
+    algkwargs = {}
+    SiConditionsTool = kwargs.get("SiConditionsTool")
+    if SiConditionsTool:
+        algkwargs["SiConditionsTool"] = SiConditionsTool
+    else:
+        algkwargs["SiConditionsTool"] = acc.popToolsAndMerge(SCT_SiliconConditionsCfg(flags, **kwargs))
+    # For SCT_ID and SCT_DetectorElementCollection
+    # used in SCTSiPropertiesCondAlg and SiPropertiesTool
+    acc.merge(SCT_GeometryCfg(flags))
+    alg = SCTSiPropertiesCondAlg(name, **algkwargs)
+    acc.addCondAlgo(alg)
 
-    DCSkwargs = {}
-    # For HLT
-    if flags.Common.isOnline and not flags.Input.isMC:
-        dcs_folder = "/SCT/HLT/DCS"
-        DCSkwargs["dbInstance"] = "SCT"
-        DCSkwargs["hvFolder"] = dcs_folder + "/HV"
-        DCSkwargs["tempFolder"] = dcs_folder + "/MODTEMP"
-        DCSkwargs["stateFolder"] = dcs_folder + "/CHANSTAT"
-    DCSAcc = SCT_DCSConditionsCfg(flags, **DCSkwargs)
-    SCAcc = SCT_SiliconConditionsCfg(flags, DCSConditionsTool=DCSAcc.popPrivateTools())
-    acc.merge(DCSAcc)
-    acc.merge(SCAcc)
+    # Condition tool
+    toolkwargs = {}
+    toolkwargs["DetectorName"] = "SCT"
+    toolkwargs["ReadKey"] = "SCTSiliconPropertiesVector"
+    acc.setPrivateTools(SiPropertiesTool(name=name, **toolkwargs))
 
-    tool = kwargs.get("SiPropertiesTool", SCT_SiPropertiesToolCfg(flags))
-    alg = SCTSiPropertiesCondAlg(name, **kwargs)
-    acc.addCondAlgo(alg)
-    acc.setPrivateTools(tool)
     return acc
-
diff --git a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py
index 6f64115c6b9a..d642b95b499b 100644
--- a/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py
+++ b/InnerDetector/InDetDigitization/SCT_Digitization/python/SCT_DigitizationConfigNew.py
@@ -7,8 +7,7 @@ from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaCommon.Logging import logging
 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
 from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg
-from SCT_ConditionsTools.SCT_DCSConditionsConfig import SCT_DCSConditionsCfg
-from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsToolCfg, SCT_SiliconConditionsCfg
+from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsCfg
 from SCT_ConditionsTools.SCT_ReadCalibChipDataConfig import SCT_ReadCalibChipDataCfg
 from SiPropertiesTool.SCT_SiPropertiesConfig import SCT_SiPropertiesCfg
 from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleCfg
@@ -166,14 +165,9 @@ def SCT_SurfaceChargesGeneratorCfg(flags, name="SCT_SurfaceChargesGenerator", **
     SCT_SurfaceChargesGenerator, SCT_RadDamageSummaryTool = CompFactory.getComps("SCT_SurfaceChargesGenerator", "SCT_RadDamageSummaryTool",)
     tool = SCT_SurfaceChargesGenerator(name, **kwargs)
     tool.RadDamageSummaryTool = SCT_RadDamageSummaryTool()
-    DCSCondTool = acc.popToolsAndMerge(SCT_DCSConditionsCfg(flags))
-    SiliCondTool = SCT_SiliconConditionsToolCfg(flags)
-    SiliCondAcc = SCT_SiliconConditionsCfg(flags, DCSConditionsTool=DCSCondTool)
-    SiliPropsAcc = SCT_SiPropertiesCfg(flags, SiConditionsTool=SiliCondTool)
-    acc.merge(SiliCondAcc)
-    tool.SiConditionsTool = SiliCondTool
-    tool.SiPropertiesTool = acc.popToolsAndMerge(SiliPropsAcc)
-    tool.LorentzAngleTool = acc.popToolsAndMerge(SCT_LorentzAngleCfg(flags))
+    tool.SiConditionsTool = acc.popToolsAndMerge(SCT_SiliconConditionsCfg(flags))
+    tool.SiPropertiesTool = acc.popToolsAndMerge(SCT_SiPropertiesCfg(flags, SiConditionsTool=tool.SiConditionsTool))
+    tool.LorentzAngleTool = acc.popToolsAndMerge(SCT_LorentzAngleCfg(flags, SiConditionsTool=tool.SiConditionsTool))
     acc.setPrivateTools(tool)
     return acc
 
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index 0fe5301a3765..88b33b85d98b 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -287,16 +287,6 @@ def TrigInDetCondCfg( flags ):
   acc.merge(addFoldersSplitOnline(flags, "INDET","/Indet/Onl/AlignL3","/Indet/AlignL3",className="AlignableTransformContainer"))
   acc.merge(addFoldersSplitOnline(flags, "INDET","/Indet/Onl/IBLDist","/Indet/IBLDist",className="CondAttrListCollection"))
 
-  from SCT_ConditionsTools.SCT_DCSConditionsConfig import SCT_DCSConditionsCfg, SCT_DCSConditionsToolCfg
-  dcsTool =  acc.popToolsAndMerge( SCT_DCSConditionsCfg( flags, DCSConditionsTool = SCT_DCSConditionsToolCfg( flags, ReadAllDBFolders = True, ReturnHVTemp = True)) )
-#  SCT_DCSConditionsTool=CompFactory.SCT_DCSConditionsTool
-#  dcsTool = SCT_DCSConditionsTool(ReadAllDBFolders = True, ReturnHVTemp = True)
-
-  from SCT_ConditionsTools.SCT_SiliconConditionsConfig import SCT_SiliconConditionsCfg #, SCT_SiliconConditionsToolCfg
-  #sctSiliconConditionsTool= SCT_SiliconConditionsCfg(flags, toolName="InDetSCT_SiliconConditionsTool", dcsTool=dcsTool )
-  #sctSiliconConditionsTool = SCT_SiliconConditionsToolCfg(flags)
-  acc.merge(SCT_SiliconConditionsCfg(flags, DCSConditionsTool=dcsTool))
-
   SCT_AlignCondAlg=CompFactory.SCT_AlignCondAlg
   acc.addCondAlgo(SCT_AlignCondAlg(UseDynamicAlignFolders = True))
 
@@ -315,14 +305,6 @@ def TrigInDetCondCfg( flags ):
                                            ReadKeyModule = moduleFolder,
                                            ReadKeyMur = murFolder))
   acc.merge(addFolders(flags, [channelFolder, moduleFolder, murFolder], "SCT", className="CondAttrListVec"))
-  # Set up SCTSiLorentzAngleCondAlg
-  SCT_ConfigurationConditionsTool=CompFactory.SCT_ConfigurationConditionsTool
-  stateFolder = "/SCT/DCS/CHANSTAT"
-  hvFolder = "/SCT/DCS/HV"
-  tempFolder = "/SCT/DCS/MODTEMP"
-  dbInstance = "DCS_OFL"
-  acc.merge(addFolders(flags, [stateFolder, hvFolder, tempFolder], dbInstance, className="CondAttrListCollection"))
-
 
   # from InDetConfig.InDetRecToolConfig import InDetSCT_ConditionsSummaryToolCfg
   # sctCondSummaryTool = acc.popToolsAndMerge( InDetSCT_ConditionsSummaryToolCfg( flags, withFlaggedCondTool=False, withTdaqTool=False ) )
-- 
GitLab


From ecf6f7421aeff96199514c6b86733ac28014d733 Mon Sep 17 00:00:00 2001
From: Susumu Oda <susumu.oda@cern.ch>
Date: Wed, 14 Oct 2020 04:37:18 +0200
Subject: [PATCH 2/2] Fix bugs

---
 .../SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py        | 2 --
 Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py    | 3 +--
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py
index c56b48688ef6..5c9c5a3b9686 100644
--- a/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py
+++ b/InnerDetector/InDetConditions/SiLorentzAngleTool/python/SCT_LorentzAngleConfig.py
@@ -2,8 +2,6 @@
 
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
-from AthenaCommon import Logging
-from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 SiLorentzAngleTool=CompFactory.SiLorentzAngleTool
 SCTSiLorentzAngleCondAlg=CompFactory.SCTSiLorentzAngleCondAlg
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index 88b33b85d98b..d73e8f1f3bc6 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -58,11 +58,10 @@ def SCT_ClusterOnTrackToolCfg( flags, **kwargs ):
   acc = ComponentAccumulator()
   from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleCfg
   sctLATool =  acc.popToolsAndMerge( SCT_LorentzAngleCfg( flags ) )
-  acc.addPublicTool( sctLATool )
   tool = CompFactory.InDet.SCT_ClusterOnTrackTool("SCT_ClusterOnTrackTool",
                                                     CorrectionStrategy = 0,  # do correct position bias
                                                     ErrorStrategy      = 2,  # do use phi dependent errors
-                                                    LorentzAngleTool   = acc.getPublicTool( "SCT_LorentzAngleTool" ) # default name
+                                                    LorentzAngleTool   = sctLATool # default name
                                                     )
   acc.addPublicTool ( tool )
   return acc
-- 
GitLab