From 41d43ba51154c1674e7939c0218c23ee0c25501e Mon Sep 17 00:00:00 2001
From: Dave Casper <dcasper@uci.edu>
Date: Thu, 9 Dec 2021 07:30:45 +0100
Subject: [PATCH] Athena 22.0.49 compatibility

---
 .gitlab-ci.yml                                |   4 +-
 .../EcalG4_SD/python/EcalG4_SDToolConfig.py   |   6 +-
 .../scripts/submit_faser_reco.sh              |   2 +-
 Generators/FaserCosmicGenerator/README.md     |   2 +-
 .../python/EmulsionG4_SDToolConfig.py         |   6 +-
 README.md                                     |   4 +-
 .../python/PreshowerG4_SDToolConfig.py        |   6 +-
 .../python/TriggerG4_SDToolConfig.py          |   6 +-
 .../VetoG4_SD/python/VetoG4_SDToolConfig.py   |   6 +-
 .../python/G4FaserToolsConfigNew.py           | 118 +++++++-----------
 .../python/G4GeometryToolConfig.py            |  25 +++-
 .../python/FaserSCT_G4_SDToolConfig.py        |   6 +-
 ...CMakeLists.txt => CMakeLists.txt.disabled} |   0
 ...CMakeLists.txt => CMakeLists.txt.disabled} |   0
 ...CMakeLists.txt => CMakeLists.txt.disabled} |   0
 ...CMakeLists.txt => CMakeLists.txt.disabled} |   0
 .../VTI12TrackSystems/TrackHandleBase.h       |   1 +
 .../src/TrackPropagationHelper.cxx            |   4 +-
 version.txt                                   |   2 +-
 19 files changed, 100 insertions(+), 98 deletions(-)
 rename Tracking/Acts/ActsInterop/{CMakeLists.txt => CMakeLists.txt.disabled} (100%)
 rename Tracking/Acts/FaserActsGeometry/{CMakeLists.txt => CMakeLists.txt.disabled} (100%)
 rename Tracking/Acts/FaserActsGeometryInterfaces/{CMakeLists.txt => CMakeLists.txt.disabled} (100%)
 rename Tracking/Acts/FaserActsKalmanFilter/{CMakeLists.txt => CMakeLists.txt.disabled} (100%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3cba605b..0aef82de 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,7 +25,7 @@ build_image:
     - mkdir build
     - cd build
     - set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh; set -e
-    - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.40; set -e
+    - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.49; set -e
     - cmake ../../calypso
     - make -j 3
   artifacts:
@@ -41,7 +41,7 @@ test_unittest:
     - yum -y install man
     - cd build
     - set +e && source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh; set -e
-    - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.40; set -e 
+    - set +e && asetup --input=../../calypso/asetup.faser Athena,22.0.49; set -e 
     - set +e && source `find . -name 'setup.sh'`; set -e
     - ctest -j3
   dependencies:
diff --git a/Calorimeter/CaloG4/EcalG4_SD/python/EcalG4_SDToolConfig.py b/Calorimeter/CaloG4/EcalG4_SD/python/EcalG4_SDToolConfig.py
index e679d7fc..293f2057 100644
--- a/Calorimeter/CaloG4/EcalG4_SD/python/EcalG4_SDToolConfig.py
+++ b/Calorimeter/CaloG4/EcalG4_SD/python/EcalG4_SDToolConfig.py
@@ -17,5 +17,7 @@ def EcalSensorSDCfg(ConfigFlags, name="EcalSensorSD", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Ecal::_dd_Geometry_DownstreamRegion_Ecal_Modules_OutCell"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name])
 
-    # result.merge(acc)
-    return result, EcalSensorSDTool(name, **kwargs)
+    result = ComponentAccumulator()
+    result.setPrivateTools(CompFactory.EcalSensorSDTool(name, **kwargs))
+    return result
+
diff --git a/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh b/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh
index 6bb4b895..64cca556 100755
--- a/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh
+++ b/Control/CalypsoExample/Reconstruction/scripts/submit_faser_reco.sh
@@ -89,7 +89,7 @@ asetup
 source build/x8*/setup.sh
 #
 # Do this by hand
-# asetup --input="$release_directory/calypso/asetup.faser" Athena,22.0.40
+# asetup --input="$release_directory/calypso/asetup.faser" Athena,22.0.49
 # source "$release_directory/build/x8*/setup.sh"
 #
 #
diff --git a/Generators/FaserCosmicGenerator/README.md b/Generators/FaserCosmicGenerator/README.md
index 512c32c6..49199a3c 100644
--- a/Generators/FaserCosmicGenerator/README.md
+++ b/Generators/FaserCosmicGenerator/README.md
@@ -2,7 +2,7 @@
 
 ## Setup
 
-In Athena 22.0.40, the scipy module is missing from the LCG environment for some reason.
+In Athena 22.0.49, the scipy module is missing from the LCG environment for some reason.
 
 To use the generator, the following command is required after the usual steps to setup the release:
 
diff --git a/Neutrino/NeutrinoG4/EmulsionG4_SD/python/EmulsionG4_SDToolConfig.py b/Neutrino/NeutrinoG4/EmulsionG4_SD/python/EmulsionG4_SDToolConfig.py
index 391e572a..e61195b7 100644
--- a/Neutrino/NeutrinoG4/EmulsionG4_SD/python/EmulsionG4_SDToolConfig.py
+++ b/Neutrino/NeutrinoG4/EmulsionG4_SD/python/EmulsionG4_SDToolConfig.py
@@ -17,5 +17,7 @@ def EmulsionSensorSDCfg(ConfigFlags, name="EmulsionSensorSD", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Emulsion::FrontFilm", "Emulsion::BackFilm"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name])
 
-    # result.merge(acc)
-    return result, EmulsionSensorSDTool(name, **kwargs)
+    result = ComponentAccumulator()
+    result.setPrivateTools(CompFactory.EmulsionSensorSDTool(name, **kwargs))
+    return result
+
diff --git a/README.md b/README.md
index c2900525..39456152 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ git clone --recursive https://:@gitlab.cern.ch:8443/$USERNAME/calypso.git
 #The next three lines are used to setup the ATLAS release environment
 export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase 
 source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh
-asetup --input=calypso/asetup.faser Athena,22.0.40
+asetup --input=calypso/asetup.faser Athena,22.0.49
 
 #create build directory
 mkdir build
@@ -43,6 +43,4 @@ It can be convenient to alias the "asetup --input=calypso/asetup.faser" to somet
 
 ** `ConfigFlags.GeoModel.FaserVersion = "FASER-TB00"` and `ConfigFlags.IOVDb.GlobalTag = OFLCOND-FASER-TB00` enables the 2021 Test-beam setup.
 
-* The "FaserActsKalmanFilter" package is temporarily disabled.
-
 * The command `lsetup "lcgenv -p LCG_98python3_ATLAS_8 x86_64-centos7-gcc8-opt sqlite"` may be necessary to avoid errors when generating a database
diff --git a/Scintillator/ScintG4/PreshowerG4_SD/python/PreshowerG4_SDToolConfig.py b/Scintillator/ScintG4/PreshowerG4_SD/python/PreshowerG4_SDToolConfig.py
index 96b90c45..8dc2325f 100644
--- a/Scintillator/ScintG4/PreshowerG4_SD/python/PreshowerG4_SDToolConfig.py
+++ b/Scintillator/ScintG4/PreshowerG4_SD/python/PreshowerG4_SDToolConfig.py
@@ -18,5 +18,7 @@ def PreshowerSensorSDCfg(ConfigFlags, name="PreshowerSensorSD", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Preshower::Plate"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name])
 
-    # result.merge(acc)
-    return result, PreshowerSensorSDTool(name, **kwargs)
+    result = ComponentAccumulator()
+    result.setPrivateTools(CompFactory.PreshowerSensorSDTool(name, **kwargs))
+    return result
+
diff --git a/Scintillator/ScintG4/TriggerG4_SD/python/TriggerG4_SDToolConfig.py b/Scintillator/ScintG4/TriggerG4_SD/python/TriggerG4_SDToolConfig.py
index dae6ba97..2d049e14 100644
--- a/Scintillator/ScintG4/TriggerG4_SD/python/TriggerG4_SDToolConfig.py
+++ b/Scintillator/ScintG4/TriggerG4_SD/python/TriggerG4_SDToolConfig.py
@@ -18,5 +18,7 @@ def TriggerSensorSDCfg(ConfigFlags, name="TriggerSensorSD", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Trigger::Plate"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name])
 
-    # result.merge(acc)
-    return result, TriggerSensorSDTool(name, **kwargs)
+    result = ComponentAccumulator()
+    result.setPrivateTools(CompFactory.TriggerSensorSDTool(name, **kwargs))
+    return result
+
diff --git a/Scintillator/ScintG4/VetoG4_SD/python/VetoG4_SDToolConfig.py b/Scintillator/ScintG4/VetoG4_SD/python/VetoG4_SDToolConfig.py
index ccc50ce9..95000f86 100644
--- a/Scintillator/ScintG4/VetoG4_SD/python/VetoG4_SDToolConfig.py
+++ b/Scintillator/ScintG4/VetoG4_SD/python/VetoG4_SDToolConfig.py
@@ -18,5 +18,7 @@ def VetoSensorSDCfg(ConfigFlags, name="VetoSensorSD", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["Veto::Plate"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name])
 
-    # result.merge(acc)
-    return result, VetoSensorSDTool(name, **kwargs)
+    result = ComponentAccumulator()
+    result.setPrivateTools(CompFactory.VetoSensorSDTool(name, **kwargs))
+    return result
+
diff --git a/Simulation/G4Faser/G4FaserTools/python/G4FaserToolsConfigNew.py b/Simulation/G4Faser/G4FaserTools/python/G4FaserToolsConfigNew.py
index 3520b26d..f4bb4333 100644
--- a/Simulation/G4Faser/G4FaserTools/python/G4FaserToolsConfigNew.py
+++ b/Simulation/G4Faser/G4FaserTools/python/G4FaserToolsConfigNew.py
@@ -2,7 +2,6 @@
 from __future__ import print_function
 from AthenaConfiguration.ComponentFactory import CompFactory
 
-
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaCommon import CfgMgr
 SensitiveDetectorMasterTool=CompFactory.SensitiveDetectorMasterTool
@@ -21,103 +20,78 @@ def FastSimulationMasterToolCfg(ConfigFlags, **kwargs):
     result.setPrivateTools(FastSimulationMasterTool(name="FastSimulationMasterTool", **kwargs))
     return result
 
-from EmulsionG4_SD.EmulsionG4_SDToolConfig import EmulsionSensorSDCfg
-from VetoG4_SD.VetoG4_SDToolConfig import VetoSensorSDCfg
-from TriggerG4_SD.TriggerG4_SDToolConfig import TriggerSensorSDCfg
-from PreshowerG4_SD.PreshowerG4_SDToolConfig import PreshowerSensorSDCfg
-from FaserSCT_G4_SD.FaserSCT_G4_SDToolConfig import SctSensorSDCfg
-from EcalG4_SD.EcalG4_SDToolConfig import EcalSensorSDCfg
+def NeutrinoSensitiveDetectorListCfg(ConfigFlags):
+    result = ComponentAccumulator()
+    tools = []
+
+    if ConfigFlags.Detector.EnableEmulsion:
+        from EmulsionG4_SD.EmulsionG4_SDToolConfig import EmulsionSensorSDCfg
+        tools += [ result.popToolsAndMerge(EmulsionSensorSDCfg(ConfigFlags)) ]
+
+    result.setPrivateTools(tools)
+    return result
 
-def generateNeutrinoSensitiveDetectorList(ConfigFlags):
 
+def CaloSensitiveDetectorListCfg(ConfigFlags):
     result = ComponentAccumulator()
-    SensitiveDetectorList=[]
+    tools = []
 
-    if ConfigFlags.Detector.EnableEmulsion:
-        accEmulsion,toolEmulsion = EmulsionSensorSDCfg(ConfigFlags)
-        SensitiveDetectorList += [ toolEmulsion ]
-        result.merge(accEmulsion)
-    
-    return result, SensitiveDetectorList #List of tools here now! (CALL IT TOOL LIST?)
+    if ConfigFlags.Detector.EnableEcal:
+        from EcalG4_SD.EcalG4_SDToolConfig import EcalSensorSDCfg
+        tools += [ result.popToolsAndMerge(EcalSensorSDCfg(ConfigFlags)) ]
 
-def generateScintSensitiveDetectorList(ConfigFlags):
+    result.setPrivateTools(tools)
+    return result
 
+def ScintSensitiveDetectorListCfg(ConfigFlags):
     result = ComponentAccumulator()
-    SensitiveDetectorList=[]
+    tools = []
 
     if ConfigFlags.Detector.EnableVeto:
-        accVeto,toolVeto = VetoSensorSDCfg(ConfigFlags)
-        SensitiveDetectorList += [ toolVeto ]
-        result.merge(accVeto)
-    
+        from VetoG4_SD.VetoG4_SDToolConfig import VetoSensorSDCfg
+        tools += [ result.popToolsAndMerge(VetoSensorSDCfg(ConfigFlags)) ]
     if ConfigFlags.Detector.EnableTrigger:
-        accTrigger,toolTrigger = TriggerSensorSDCfg(ConfigFlags)
-        SensitiveDetectorList += [ toolTrigger ]
-        result.merge(accTrigger)
-    
+        from TriggerG4_SD.TriggerG4_SDToolConfig import TriggerSensorSDCfg
+        tools += [ result.popToolsAndMerge(TriggerSensorSDCfg(ConfigFlags)) ]
     if ConfigFlags.Detector.EnablePreshower:
-        accPreshower,toolPreshower = PreshowerSensorSDCfg(ConfigFlags)
-        SensitiveDetectorList += [ toolPreshower ]
-        result.merge(accPreshower)
-    
-    return result, SensitiveDetectorList #List of tools here now! (CALL IT TOOL LIST?)
+        from PreshowerG4_SD.PreshowerG4_SDToolConfig import PreshowerSensorSDCfg
+        tools += [ result.popToolsAndMerge(PreshowerSensorSDCfg(ConfigFlags)) ]
 
-def generateTrackerSensitiveDetectorList(ConfigFlags):
+    result.setPrivateTools(tools)
+    return result
 
+def TrackerSensitiveDetectorListCfg(ConfigFlags):
     result = ComponentAccumulator()
-    SensitiveDetectorList=[]
+    tools = []
 
     if ConfigFlags.Detector.EnableFaserSCT:
-        accSCT,toolSCT = SctSensorSDCfg(ConfigFlags)
-        SensitiveDetectorList += [ toolSCT ]
-        result.merge(accSCT)
-        
-    return result, SensitiveDetectorList #List of tools here now! (CALL IT TOOL LIST?)
-
-def generateCaloSensitiveDetectorList(ConfigFlags):
+        from FaserSCT_G4_SD.FaserSCT_G4_SDToolConfig import SctSensorSDCfg
+        tools += [ result.popToolsAndMerge(SctSensorSDCfg(ConfigFlags)) ]
 
-    result = ComponentAccumulator()
-    SensitiveDetectorList=[]
-
-    if ConfigFlags.Detector.EnableEcal:
-        accEcal,toolEcal = EcalSensorSDCfg(ConfigFlags)
-        SensitiveDetectorList += [ toolEcal ]
-        result.merge(accEcal)
-    
-    return result, SensitiveDetectorList #List of tools here now! (CALL IT TOOL LIST?)
+    result.setPrivateTools(tools)
+    return result
 
-def generateSensitiveDetectorList(ConfigFlags):
+def SensitiveDetectorListCfg(ConfigFlags):
     result = ComponentAccumulator()
-    SensitiveDetectorList=[]
-    # SensitiveDetectorList += generateEnvelopeSensitiveDetectorList(ConfigFlags) # to update
-
-    acc_NeutrinoSensitiveDetector, NeutrinoSensitiveDetectorList = generateNeutrinoSensitiveDetectorList(ConfigFlags)
-    SensitiveDetectorList += NeutrinoSensitiveDetectorList
+    tools = []
 
-    acc_ScintSensitiveDetector, ScintSensitiveDetectorList = generateScintSensitiveDetectorList(ConfigFlags)
-    SensitiveDetectorList += ScintSensitiveDetectorList
+    tools += result.popToolsAndMerge(CaloSensitiveDetectorListCfg(ConfigFlags))
+    tools += result.popToolsAndMerge(ScintSensitiveDetectorListCfg(ConfigFlags))
+    tools += result.popToolsAndMerge(TrackerSensitiveDetectorListCfg(ConfigFlags))
+    tools += result.popToolsAndMerge(NeutrinoSensitiveDetectorListCfg(ConfigFlags))
 
-    acc_TrackerSensitiveDetector, TrackerSensitiveDetectorList = generateTrackerSensitiveDetectorList(ConfigFlags)
-    SensitiveDetectorList += TrackerSensitiveDetectorList
-
-    acc_CaloSensitiveDetector, CaloSensitiveDetectorList = generateCaloSensitiveDetectorList(ConfigFlags)
-    SensitiveDetectorList += CaloSensitiveDetectorList
-
-    result.merge(acc_NeutrinoSensitiveDetector)
-    result.merge(acc_ScintSensitiveDetector)
-    result.merge(acc_TrackerSensitiveDetector)
-    result.merge(acc_CaloSensitiveDetector)
-
-    result.setPrivateTools(SensitiveDetectorList)
+    result.setPrivateTools(tools)
     return result
 
 def SensitiveDetectorMasterToolCfg(ConfigFlags, name="SensitiveDetectorMasterTool", **kwargs):
     result = ComponentAccumulator()
-    accSensitiveDetector = generateSensitiveDetectorList(ConfigFlags)
-    kwargs.setdefault("SensitiveDetectors", result.popToolsAndMerge(accSensitiveDetector)) #list of tools
+    kwargs.setdefault("SensitiveDetectors", result.popToolsAndMerge(SensitiveDetectorListCfg(ConfigFlags)))
 
-    result.setPrivateTools(SensitiveDetectorMasterTool(name, **kwargs)) #note -this is still a public tool
+    result.setPrivateTools(CompFactory.SensitiveDetectorMasterTool(name, **kwargs))
     return result
 
 def getEmptySensitiveDetectorMasterTool(name="EmptySensitiveDetectorMasterTool", **kwargs):
-    return CfgMgr.SensitiveDetectorMasterTool(name, **kwargs)
+    result = ComponentAccumulator()
+    tool = result.popToolsAndMerge(CompFactory.SensitiveDetectorMasterTool(name, **kwargs))
+    result.setPrivateTools(tool)
+    return result
diff --git a/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py b/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py
index 992cfbe4..064cde91 100644
--- a/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py
+++ b/Simulation/G4Faser/G4FaserTools/python/G4GeometryToolConfig.py
@@ -1,4 +1,5 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+from __future__ import print_function
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -11,6 +12,8 @@ from G4FaserTools.G4PhysicsRegionConfigNew import NeutrinoPhysicsRegionToolCfg,
 #the field config tools
 from G4FaserTools.G4FieldConfigNew import FASERFieldManagerToolCfg, EmulsionFieldManagerToolCfg, VetoFieldManagerToolCfg, TriggerFieldManagerToolCfg, PreshowerFieldManagerToolCfg, TrackerFieldManagerToolCfg, DipoleFieldManagerToolCfg, EcalFieldManagerToolCfg
 
+from G4FaserTools.G4FaserToolsConfigNew import SensitiveDetectorMasterToolCfg
+
 GeoDetectorTool=CompFactory.GeoDetectorTool
 from EmulsionGeoModel.EmulsionGeoModelConfig import EmulsionGeometryCfg
 from VetoGeoModel.VetoGeoModelConfig import VetoGeometryCfg
@@ -20,7 +23,7 @@ from FaserSCT_GeoModel.FaserSCT_GeoModelConfig import FaserSCT_GeometryCfg
 from DipoleGeoModel.DipoleGeoModelConfig import DipoleGeometryCfg
 from EcalGeoModel.EcalGeoModelConfig import EcalGeometryCfg
 
-BoxEnvelope, MaterialDescriptionTool, SmartlessnessTool, G4AtlasDetectorConstructionTool = CompFactory.getComps("BoxEnvelope", "MaterialDescriptionTool", "SmartlessnessTool", "G4AtlasDetectorConstructionTool",)
+BoxEnvelope, MaterialDescriptionTool, VoxelDensityTool, G4AtlasDetectorConstructionTool = CompFactory.getComps("BoxEnvelope", "MaterialDescriptionTool", "VoxelDensityTool", "G4AtlasDetectorConstructionTool",)
 
 from AthenaCommon.SystemOfUnits import mm
 
@@ -163,10 +166,20 @@ def MaterialDescriptionToolCfg(ConfigFlags, name="MaterialDescriptionTool", **kw
     return result
 
 
-def SmartlessnessToolCfg(ConfigFlags, name="SmartlessnessTool", **kwargs):
+def VoxelDensityToolCfg(ConfigFlags, name="VoxelDensityTool", **kwargs):
     ## kwargs.setdefault("SomeProperty", aValue)
+    voxelDensitySettings = {}
+    # if ConfigFlags.Detector.GeometryITkPixel:
+    #     voxelDensitySettings["ITkPixelDetector"] = 0.05
+    # if ConfigFlags.Detector.GeometryITkStrip:
+    #     voxelDensitySettings["ITkStrip::Barrel"] = 0.05
+    #     voxelDensitySettings["ITkStrip::ITkStrip_Forward"] = 0.05
+    #     ##The below is only needed temporarily, while we wait for
+    #     ##improved naming to be propagated to all necessary geo tags
+    #     voxelDensitySettings["ITkStrip::SCT_Forward"] = 0.05
+    kwargs.setdefault("VolumeVoxellDensityLevel",voxelDensitySettings)
     result = ComponentAccumulator()
-    result.setPrivateTools(SmartlessnessTool(name, **kwargs))
+    result.setPrivateTools(VoxelDensityTool(name, **kwargs))
     return result
 
 def getFASER_RegionCreatorList(ConfigFlags):
@@ -238,7 +251,7 @@ def getGeometryConfigurationTools(ConfigFlags):
     # package containing each tool, so G4FaserTools in this case
     result =ComponentAccumulator()
     geoConfigToolList += [result.popToolsAndMerge(MaterialDescriptionToolCfg(ConfigFlags))]
-    geoConfigToolList += [result.popToolsAndMerge(SmartlessnessToolCfg(ConfigFlags))]
+    geoConfigToolList += [result.popToolsAndMerge(VoxelDensityToolCfg(ConfigFlags))]
     return result, geoConfigToolList
 
 
@@ -251,7 +264,9 @@ def G4AtlasDetectorConstructionToolCfg(ConfigFlags, name="G4FaserDetectorConstru
     kwargs.setdefault("GeometryConfigurationTools", listOfGeoConfTools)
 
     # Getting this tool by name works, but not if you use getSensitiveDetectorMasterTool()
-    kwargs.setdefault('SenDetMasterTool', "SensitiveDetectorMasterTool" )
+    tool = result.popToolsAndMerge(SensitiveDetectorMasterToolCfg(ConfigFlags))
+    result.addPublicTool(tool)
+    kwargs.setdefault("SenDetMasterTool", result.getPublicTool(tool.name))
 
     toolGeo = result.popToolsAndMerge(FASEREnvelopeCfg(ConfigFlags))
     kwargs.setdefault("World", toolGeo)
diff --git a/Tracker/TrackerG4/FaserSCT_G4_SD/python/FaserSCT_G4_SDToolConfig.py b/Tracker/TrackerG4/FaserSCT_G4_SD/python/FaserSCT_G4_SDToolConfig.py
index eb4fb537..1e4fa355 100644
--- a/Tracker/TrackerG4/FaserSCT_G4_SD/python/FaserSCT_G4_SDToolConfig.py
+++ b/Tracker/TrackerG4/FaserSCT_G4_SD/python/FaserSCT_G4_SDToolConfig.py
@@ -18,5 +18,7 @@ def SctSensorSDCfg(ConfigFlags, name="SctSensorSD", **kwargs):
     kwargs.setdefault("LogicalVolumeNames", ["SCT::BRLSensor"])
     kwargs.setdefault("OutputCollectionNames", [bare_collection_name])
 
-    # result.merge(acc)
-    return result, FaserSctSensorSDTool(name, **kwargs)
+    result = ComponentAccumulator()
+    result.setPrivateTools(CompFactory.FaserSctSensorSDTool(name, **kwargs))
+    return result
+
diff --git a/Tracking/Acts/ActsInterop/CMakeLists.txt b/Tracking/Acts/ActsInterop/CMakeLists.txt.disabled
similarity index 100%
rename from Tracking/Acts/ActsInterop/CMakeLists.txt
rename to Tracking/Acts/ActsInterop/CMakeLists.txt.disabled
diff --git a/Tracking/Acts/FaserActsGeometry/CMakeLists.txt b/Tracking/Acts/FaserActsGeometry/CMakeLists.txt.disabled
similarity index 100%
rename from Tracking/Acts/FaserActsGeometry/CMakeLists.txt
rename to Tracking/Acts/FaserActsGeometry/CMakeLists.txt.disabled
diff --git a/Tracking/Acts/FaserActsGeometryInterfaces/CMakeLists.txt b/Tracking/Acts/FaserActsGeometryInterfaces/CMakeLists.txt.disabled
similarity index 100%
rename from Tracking/Acts/FaserActsGeometryInterfaces/CMakeLists.txt
rename to Tracking/Acts/FaserActsGeometryInterfaces/CMakeLists.txt.disabled
diff --git a/Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt b/Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt.disabled
similarity index 100%
rename from Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt
rename to Tracking/Acts/FaserActsKalmanFilter/CMakeLists.txt.disabled
diff --git a/graphics/VTI12/VTI12Systems/VTI12TrackSystems/VTI12TrackSystems/TrackHandleBase.h b/graphics/VTI12/VTI12Systems/VTI12TrackSystems/VTI12TrackSystems/TrackHandleBase.h
index af198558..0dcde264 100644
--- a/graphics/VTI12/VTI12Systems/VTI12TrackSystems/VTI12TrackSystems/TrackHandleBase.h
+++ b/graphics/VTI12/VTI12Systems/VTI12TrackSystems/VTI12TrackSystems/TrackHandleBase.h
@@ -29,6 +29,7 @@
 #include <QTreeWidgetItem>
 #include <vector>
 #include <set>
+#include <optional>
 #include <QList>
 #include <QFlags>
 
diff --git a/graphics/VTI12/VTI12Systems/VTI12TrackSystems/src/TrackPropagationHelper.cxx b/graphics/VTI12/VTI12Systems/VTI12TrackSystems/src/TrackPropagationHelper.cxx
index f5545c72..49444e86 100644
--- a/graphics/VTI12/VTI12Systems/VTI12TrackSystems/src/TrackPropagationHelper.cxx
+++ b/graphics/VTI12/VTI12Systems/VTI12TrackSystems/src/TrackPropagationHelper.cxx
@@ -303,7 +303,9 @@ bool TrackPropagationHelper::makePointsCharged( std::vector<Amg::Vector3D >& poi
     //get individual surfaces
 
     //TODO - optimise this!
-    const std::vector< const Trk::Surface * > * bsurfs = volume->volumeBounds ().decomposeToSurfaces (volume->transform ());
+    const std::vector<const Trk::Surface*>* bsurfs =
+      const_cast<Trk::VolumeBounds&>(volume->volumeBounds())
+        .decomposeToSurfaces(volume->transform());
 
     if (bsurfs){
       messageVerbose("Has this many surfaces:"+str(bsurfs->size()));
diff --git a/version.txt b/version.txt
index cdbc1587..14012564 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-22.0.40
+22.0.49
-- 
GitLab