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 3cba605b3..0aef82deb 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 e679d7fca..293f2057d 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 6bb4b8957..64cca5567 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 512c32c60..49199a3ce 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 391e572ab..e61195b70 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 c2900525a..394561521 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 96b90c45b..8dc2325ff 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 dae6ba978..2d049e14e 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 ccc50ce99..95000f860 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 3520b26d0..f4bb4333d 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 992cfbe4f..064cde911 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 eb4fb5374..1e4fa355d 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 af1985583..0dcde264b 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 f5545c729..49444e861 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 cdbc15874..140125644 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-22.0.40
+22.0.49
-- 
GitLab