From a4de1ea12c3243a61b7193d2feb1d5d3ecc9322c Mon Sep 17 00:00:00 2001
From: Siarhei Harkusha <Siarhei.Harkusha@cern.ch>
Date: Thu, 1 Aug 2019 20:00:37 +0200
Subject: [PATCH] TileRecUtils: Add Tile MF raw channel builder configuration
 for Run3

Configuration of Tile raw channel builder using MF method has been added for Run 3.

Test for Tile MF raw channel builder configuration has been added.
---
 TileCalorimeter/TileRecUtils/CMakeLists.txt   |  5 ++
 .../python/TileRawChannelBuilderMFConfig.py   | 79 +++++++++++++++++++
 2 files changed, 84 insertions(+)
 create mode 100644 TileCalorimeter/TileRecUtils/python/TileRawChannelBuilderMFConfig.py

diff --git a/TileCalorimeter/TileRecUtils/CMakeLists.txt b/TileCalorimeter/TileRecUtils/CMakeLists.txt
index 1d85363fd7b..885050639dd 100644
--- a/TileCalorimeter/TileRecUtils/CMakeLists.txt
+++ b/TileCalorimeter/TileRecUtils/CMakeLists.txt
@@ -111,6 +111,11 @@ atlas_add_test( TileRawChannelBuilderOptConfig_test
                  PROPERTIES TIMEOUT 300
                  POST_EXEC_SCRIPT nopost.sh)
 
+atlas_add_test( TileRawChannelBuilderMFConfig_test
+                 SCRIPT python -m TileRecUtils.TileRawChannelBuilderMFConfig
+                 PROPERTIES TIMEOUT 300
+                 POST_EXEC_SCRIPT nopost.sh)
+
 atlas_add_test( TileCellNoiseFilterConfig_test
                  SCRIPT python -m TileRecUtils.TileCellNoiseFilterConfig
                  PROPERTIES TIMEOUT 300
diff --git a/TileCalorimeter/TileRecUtils/python/TileRawChannelBuilderMFConfig.py b/TileCalorimeter/TileRecUtils/python/TileRawChannelBuilderMFConfig.py
new file mode 100644
index 00000000000..ca8e1ef57a6
--- /dev/null
+++ b/TileCalorimeter/TileRecUtils/python/TileRawChannelBuilderMFConfig.py
@@ -0,0 +1,79 @@
+# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+
+"""Define method to construct configured Tile MF raw channel builder tool"""
+
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+
+def TileRawChannelBuilderMFCfg(flags, **kwargs):
+    """Return component accumulator with configured private Tile MF raw channel builder tool
+
+    Arguments:
+        flags  -- Athena configuration flags (ConfigFlags)
+    """
+
+    kwargs.setdefault('Name', 'TileRawChannelBuilderMF')
+    kwargs.setdefault('TileRawChannelContainer', 'TileRawChannelMF')
+
+    from TileRecUtils.TileRecUtilsConf import TileRawChannelBuilderMF
+    kwargs['TileRawChannelBuilder'] = TileRawChannelBuilderMF
+
+    if 'TileCondToolOfcOnFly' not in kwargs:
+        from TileConditions.TileOFCConfig import TileCondToolOfcCfg
+        ofcTool = acc.popToolsAndMerge( TileCondToolOfcCfg(flags) )
+        kwargs['TileCondToolOfcOnFly'] = ofcTool
+
+    if flags.Tile.OfcFromCOOL and 'TileCondToolOfc' not in kwargs:
+        from TileConditions.TileOFCConfig import TileCondToolOfcCoolCfg
+        ofcCoolTool = acc.popToolsAndMerge( TileCondToolOfcCoolCfg(flags, OfcType = 'OF2') )
+        kwargs['TileCondToolOfc'] = ofcCoolTool
+
+    if 'TileCondToolNoiseSample' not in kwargs:
+        from TileConditions.TileSampleNoiseConfig import TileCondToolNoiseSampleCfg
+        sampleNoiseTool = acc.popToolsAndMerge( TileCondToolNoiseSampleCfg(flags) )
+        kwargs['TileCondToolNoiseSample'] = sampleNoiseTool
+
+    if flags.Tile.BestPhaseFromCOOL: # can't correct time and use best phase at the same time
+        kwargs['correctTime'] = False
+    else:
+        kwargs.setdefault('correctTime', flags.Tile.correctTime)
+
+    kwargs.setdefault('BestPhase', flags.Tile.BestPhaseFromCOOL)
+    kwargs.setdefault('MaxIterations', 5) # iterative mode on
+    kwargs.setdefault('AmplitudeCorrection', False)
+    kwargs.setdefault('TimeFromCOF', False)
+
+    if flags.Tile.correctTime and 'TileCondToolTiming' not in kwargs:
+        from TileConditions.TileTimingConfig import TileCondToolTimingCfg
+        timingTool = acc.popToolsAndMerge( TileCondToolTimingCfg(flags) )
+        kwargs['TileCondToolTiming'] = timingTool
+
+    from TileRecUtils.TileRawChannelBuilderConfig import TileRawChannelBuilderCfg
+    return TileRawChannelBuilderCfg(flags, **kwargs)
+
+
+
+if __name__ == "__main__":
+
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior = 1
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    from AthenaConfiguration.TestDefaults import defaultTestFiles
+    from AthenaCommon.Logging import log
+    from AthenaCommon.Constants import DEBUG
+
+    # Test setup
+    log.setLevel(DEBUG)
+
+    ConfigFlags.Input.Files = defaultTestFiles.RAW
+    ConfigFlags.Tile.RunType = 'PHY'
+    ConfigFlags.Tile.NoiseFilter = 1
+    ConfigFlags.lock()
+
+    ConfigFlags.dump()
+
+    acc = ComponentAccumulator()
+
+    print( acc.popToolsAndMerge( TileRawChannelBuilderMFCfg(ConfigFlags) ) )
+
+    acc.printConfig(withDetails = True, summariseProps = True)
+    acc.store( open('TileRawChannelBuilderMF.pkl','w') )
-- 
GitLab